Marching bands, music competitions and classical music, it all sounds a little old-fashioned. But for a lot of people it's still a vibrant part of their lives, and I'm no exception.
At the time of writing I'm very active in my local music association Soli, which hosts over 200 members. Next to being chairman of the board, conductor and percussion player, I'm the lead programmer of our website, soli.nl. In practice that makes me the main developer, but my code is actively reviewed by other developers, also members of the association, and for new or larger projects I'm joined by them. We meet regularly to discuss current and future digital projects and the requests of the board.
One website, four business goals
Over the years the site grew a range of functionality. Every feature we build supports one of four goals the board and I keep coming back to:
- Grow public interest, a platform that carries the association's public relations.
- Improve internal happiness, simplifying internal communication and how members find information.
- Professionalise the organisation, one central planning tool instead of scattered spreadsheets.
- Recruit new members, informing and engaging potential members well.
Treating the site as a product with goals rather than a brochure is what keeps the roadmap honest: every request has to earn its place against those four goals.
How it grew
None of this arrived as a plan. Each project answered whatever the association needed at that moment, and together they add up to a platform:
- 2014The first redesign. The association had a website, but it wasn't carrying its weight. Rebuilding it turned the site into something worth investing in, and it's what got me the lead developer role.
- 2019The Night of Music. A one-off festival for the association's 110th anniversary, with its own site and PR push. I chaired PR & Sponsoring and sat on the steering committee, written up separately here.
- 2020COVID-19, and the web store. The pandemic killed the door-to-door collection and a large part of the association's income with it. We moved the whole thing online in a WooCommerce store, starting with the 2020 hyacinth sale and later a run of borrelpakketjes to replace the lost bar takings.
- 2022The second redesign. Another pass over the WordPress site, plus the features a grown site needed: an iCal feed so members could subscribe to the rehearsal and concert calendar in their own apps, a mega-menu to make the navigation manageable again, and a general tightening of the flow.
- 2026One platform, six projects. The current wave stops treating the website as the whole of Soli's digital life and builds an actual platform behind it.
The web store: winkel.soli.nl
In 2020 the COVID-19 pandemic halted all of Soli's social activities, including the winter door-to-door collection, where members fund the association by selling hyacinths street by street. Local municipality rules meant that kind of collection was no longer allowed, and with it went a significant slice of the association's income.
To keep the collection alive, the board decided to digitise it. By customising a WordPress / WooCommerce setup I built the web store winkel.soli.nl, and the 2020 hyacinth sale ran through it.
Home delivery and mobile pickup points
When a sale is live, inhabitants of specified neighbouring towns can order flowers to support the association. They pick home delivery or collection from one of the many mobile "stores" we station across the area, and anyone who'd rather just help out can donate money directly through the shop.
A custom export that runs the day itself
To keep the operation professional and low-friction, I programmed a custom export. Split by mobile store and delivery location, it generates a spreadsheet with everything a volunteer needs to make sure each customer gets exactly their order, turning a database of orders into a per-location worksheet for the people on the ground.
An ordering flow built for one-day logistics
Because ordering hyacinths from a neighbourhood association isn't quite what people expect from a normal web shop, every detail had to be communicated clearly. I customised the ordering flow and paired it with several automatically customised emails. And since the whole collection happens in a single-day window, those automated mails also do the reminding, nudging customers about the order they placed so nothing is missed on the day.
Different from a normal shop, so every step had to explain itself, from the checkout copy to the reminder that lands the morning of the collection.
And then it kept being useful
The store was built for one sale, but the pandemic kept taking things away. With the bar closed, the income from it went too, so in January 2021 we used the same shop to sell borrelpakketjes, drinks-and-snacks boxes people could order and enjoy at home. Same platform, different product, no new build. That was the moment winkel.soli.nl stopped being a workaround for one cancelled tradition and started looking like permanent infrastructure.
Together, the site and the store turned two very analogue traditions, a 200-member association and a door-to-door collection, into something that keeps running when the world outside can't.
2026: six projects, one platform
The association outgrew "a website with some features bolted on". So the current work is six projects running alongside each other, each replacing something that used to be a spreadsheet, a shared password or a stack of paper.
Web store, redesigned
Built for one sale, now aimed at a permanent existence: donations, merch and ticket sales for our events, in a design that fits a shop that's open all year instead of one day.
Music library
Digitising thousands of legally owned sheets so the archive is actually maintainable, and eventually shareable digitally with the people who need to play from it. Already tested in production once.
Admin system
One system for all relations, members, volunteers, contacts, with self-service so people can maintain their own details instead of mailing someone who edits a spreadsheet.
SSO provider
Our own identity provider: one account per person, with per-app access driven by relation type. More on this below.
New site + event plugin
A Gutenberg rebuild aimed at better information and flow, converting potential members properly, and representing Soli as the organisation it is, plus a custom event plugin.
Google Workspace
Better mail, real collaboration between volunteers and with members, and an automatic sync of relations and email contacts between GCP and the admin system.
One login, every application
Six applications means six sets of credentials, and for a volunteer organisation that's how you lose people. So the piece holding it together is a single sign-on provider I built with Laravel Passport: Soli runs its own OAuth 2.0 server, and every related application, the music library, the admin system, the site and the store, authenticates against it.
What makes it more than a login screen is that it knows what kind of relation someone has to the association. Access per application follows from that relation type, so a playing member, a volunteer and a board member each land in the right places without anyone maintaining six permission lists. The provider also forwards the details the applications actually need, like the instruments someone plays and the groups they're assigned to, so an app can be useful the moment you log in rather than asking you to fill in what Soli already knows.
One account per person, handled in one place when someone joins or leaves. It also means anything we build next starts with authentication and authorisation already solved.
For a volunteer organisation, the tech is only worth it if it disappears. One login, and the rest is just music.