projects
Projects
This is where I keep things I have built. The internal tools open in the browser and run on fictional data, so you can click through them freely. Hiring facts is a live site and its figures are real.
~/projects/pm-app
Project management app
A multi-project tool I built for a cultural venue in Berlin, for the work that happens around the events rather than the events themselves: season planning, grant applications, marketing campaigns, education programmes. Projects hold sections and tasks, which can be read as a list, a board, a calendar or a roadmap and dragged between them. Tasks are assigned to people or to teams, can block one another and release automatically once the last blocker is done, and anything recurring spawns its next occurrence instead of rolling the same row forward. Comments carry @mentions, notifications fire on assignment, mention and approaching deadlines, and a scheduled scan picks up whatever has gone overdue. Permissions sit at the project level, so a lead, a member and a viewer see the same data but can do different things with it, and every action can be undone. The interface runs on its own design system and was audited for keyboard and screen-reader use. The demo runs on fictional data with the clock frozen, so the overdue and due-soon states hold still while you click through it.
~/projects/event-app
Event management app
A role-based tool I built for the same venue. One shared event schedule that the admin, booking, technical and bar teams each read through their own view, with staffing, logistics, finance and marketing tracked per event. It connects to Google Calendar and pulls event data in automatically, syncs ticket sales from Eventbrite, and posts Slack reminders when something needs attention, such as an event with missing staff, one that is not online yet, or a GEMA registration still waiting to be confirmed. The GEMA details are collected through a separate form sent to the musicians, and the registration is checked off in the table automatically once the form comes back. It also serves as the base for agents that prepare the monthly flyers and Mailchimp newsletters, with Mailchimp connected directly. The demo here runs on fictional data with the live integrations switched off, so you can click through the interface freely.
~/projects/flyer-generator
Flyer generator
A tool I built for the same Berlin venue to take the monthly flyer off my hands. Pick a date range and it reads the event schedule from the event management app above, follows each event's link through to its page on the venue site and scrapes it for the right hashtag, then assembles a formatted document ready to send for further flyer design. Cancelled, postponed and private are dropped and reported, so nothing slips through, and any event still missing its copy or its hashtag is flagged in place rather than guessed at, so a half-finished flyer is obvious at a glance. Where a description is missing it can draft one with Claude, using web search so the blurb reflects the actual act, kept behind a cost confirmation since it runs on a metered API. A second mode builds a jazz-only flyer to its own document. The demo here runs on fictional data with no Google Drive, event management app or API connection, so you can click through it freely.
~/projects/hiring-facts
Hiring facts
A reference site covering the statutory minimums an employer inherits when hiring in another country: notice periods, minimum paid annual leave, probation limits and the employer share of social contributions, across 29 countries. The prose on each page is generated, but the figures are not. Every value renders from a dataset that carries the source it was checked against and the date it was checked, and the build fails if a rendered figure is missing from the data or if a field has lost its source. Generating a few hundred pages is an afternoon's work now, which is why so much programmatic content carries numbers nobody has verified, and the checking is the part that took the time. This one is a live site and not a demo. The figures are statutory floors, and collective agreements and contracts frequently set better terms.
// designed & coded by Sonya Birch
© 2026