Write to me

Work / Modernization

Taking over the FerienLeseClub's online club room

A reading club for children in 52 libraries, whose plugin had lost its developer: six releases with statistics, season pauses per library, and stronger privacy for minors.

What they needed

The FerienLeseClub is a summer reading program run by the libraries of Schleswig-Holstein in 52 public libraries. Children get an account from their library and use the online club room to review the books they read, rate them, post their own work and collect stamps. They appear under an alias, never their real name.

The site runs on a custom plugin whose original developer had left. The agency arebo Design, which looks after the program, needed someone to take it over, keep it running on current PHP and build what the next season required.

What I built

Six releases between March and July 2024, on top of the existing plugin:

  • Statistics for the organizers. Dashboard widgets with overall and detailed numbers, and a one-click export that bundles three CSV files: members per library, posts by type (text, image, audio) and members by age.
  • Pausing a library for a season. Organizers pause or reactivate libraries in bulk. A paused library’s members and their reviews disappear from the club room, and the library and its children see a friendly notice with the library’s contact address instead.
  • Member lists libraries can filter by clicking a column heading.
  • Privacy for minors:
    • new usernames are random instead of derived from names
    • every alias is compared with the child’s real name, and one that comes too close sends the child back to choose another
    • user pickers in the admin show “anonymous participant” instead of a revealing alias
  • PHP 8 compatibility, and the code brought in line with the WordPress Coding Standards.

Why it matters

A site for children that had lost its developer kept running through the next season, gained the reporting its organizers needed, and protects the children’s identities better than before.