← Index 01Hobby om de Hoek CV  ·  Contact
01Shipped work· Case

Hobby om de Hoek

A bilingual admin system that replaced a paper-and-Excel applicant workflow for a Dutch community organization.

Role
Solo designer and developer
Context
NHL Stenden, IDS Studio
Year
2026
Built with
Laravel, Filament, Livewire, Alpine, MySQL
Links
Source code ↗
testing-hodh.alfydesign.com
The applicant table in the Hobby om de Hoek admin panel
Screens
01

The problem

The client ran the whole applicant process on paper and in Excel. As the organization grew, that stopped scaling, and every step depended on him doing it by hand.

He did not want to learn a new kind of interface. So I started with him: how he thinks, which tools he already trusts, and how long each task takes him. The real problem was the structure of the workflow.

The system had to adapt to him.

Before

  • Paper forms
  • An Excel file
  • Every step by hand

After

  • Applicants with a full status history
  • Match lists
  • Email templates and a send log
  • Admin and volunteer roles
  • An activity log
  • Dutch and English
02

What I decided

2.1

Tables that work like his spreadsheet

Every list is an Excel-style table, so the main screen looked familiar on the first day.

Detail · Applicant table
2.2

A filter on every table

Search, filters and column choice sit on every table, so finding one applicant among a hundred takes seconds.

Detail · Filters
2.3

Dutch first, English one switch away

The whole interface works in Dutch and English, for the client and for the people who help him.

Detail · Language menu
2.4

He still writes every email

Automation could have sent the emails. He wanted to write each one himself to keep it personal, so templates give him a starting point and a send log keeps track of what went out.

2.5

Every action confirms itself

A short notification follows nearly every save, send and change, so he never has to wonder whether it worked.

03

Under the hood

PHPLaravelFilament, heavily customizedLivewireAlpineMySQLVirtualMin deploy
  1. 3.1Privacy and data integrity are in the schema from day one, because they are very hard to add later.
  2. 3.2A slow page turned out to be an N+1 query problem. Eager loading fixed it.
  3. 3.3Pagination instead of endless lists, for server cost and for what the client expects to see.
  4. 3.4Forms are protected against SQL injection and CSRF, and file uploads are validated.
  5. 3.5Realistic test data across every status and ten years of dates surfaced problems a small dataset hides.
  6. 3.6The data model was designed from scratch, with role-based access for admins and volunteers.
Read the code ↗github.com/LVT53/hobby-om-de-hoek-admin
04

How we worked

Meetings with the client were kept small and short, with a Dutch-speaking teammate next to me. When he withdrew several earlier requests halfway through, I checked with our tutor and kept building the parts we had agreed on.

2People per client meeting
1 hPer meeting, on a fixed rhythm
23Commits, documented
05

What I learned

  1. 5.1I was the bridge between a Dutch client and the team, translating expectations as well as language.
  2. 5.2Broad plans kept the team calm when the client changed his mind.
  3. 5.3AI-written code I did not understand only looked like progress. I moved to explicit instructions, tests and human-written sources.
  4. 5.4Trial and error taught me that version control is necessary.