← All Lab projects

Klusjes

An app on our phones that tells each of us which chore to do next, and turns the week's housework into a small race between us.

Status
In use at home by two people
Language
Dutch interface
Year
2026
Klusjes walkthrough on a phone: today's suggestion, the shared board, and the balance screen where two avatars run the weekly parcours. Interface in Dutch.

The problem

Housework between two people fails in two predictable ways. You forget what needs doing, and you disagree about what’s urgent. Most chore apps add a third: a growing list of overdue items that makes you not want to open the app at all.

I wanted an app we would actually keep using. It should tell you the one next thing to do, respect what the other person asks for, and make progress visible and a bit fun, without ever turning into a guilt list.

What it does

  • Schedules that forgive

    A chore repeats from when it was actually done, not from the calendar. Doing it late never stacks up into a backlog, and there is no "12 days overdue" counter anywhere.

  • "What now?" in one tap

    One button picks one chore, with a filter for "I have 10, 20 or 45 minutes". Choosing is a task too, and often the one that gets stuck.

  • Three priorities each

    Each person can put three chores at the top, with a note. The other person's requests outrank everything else. The limit is the feature.

  • Points, streaks and a weekly race

    Points scale with how long and how unpleasant a chore is. Streaks survive a quiet day. Every Monday a new obstacle course starts, and each avatar moves towards the finish with every chore.

  • Fewer, better notifications

    Two digests a day instead of a ping per chore. The only extra push is when the other person asks for something. There is also a calendar feed.

Try it

Runs entirely in your browser with made-up data. Nothing is sent anywhere.

The weekly parcours

Two made-up housemates race through this week's obstacle course. Tap a chore to log it: longer and heavier chores are worth more, exactly as in Klusjes. The track length comes from the household's own recent weeks.

New week, new course. One chore and you're off.finish at 45 pts
Sam · 0 pts9 pts to the wall
Noor · 0 pts9 pts to the wall
Log a chore for

Screens

All screenshots use made-up demo data.

Balance screen with points per person, forgiving streaks and the weekly parcours: two avatars on an obstacle track, one at the mud pit and one just past it.
Weekly parcours
Today screen with a single suggested chore, the other person's note, time filters for 10, 20 or 45 minutes, and the short list.
"What now?"
Board with chores the other person asked to do first, followed by what is due, each with a calm status label.
Shared board
History of completed chores by both people, with points earned.
History

Architecture

Architecture diagram: two phones run the installable web app and connect over Tailscale to an Express API on the home server. The API keeps chores, the completion log and priorities in SQLite and applies shared rules for scheduling, picking, points and the weekly race. A scheduler sends two web-push digests a day. A calendar app can subscribe to an ICS feed.Architecture diagram: two phones run the installable web app and connect over Tailscale to an Express API on the home server. The API keeps chores, the completion log and priorities in SQLite and applies shared rules for scheduling, picking, points and the weekly race. A scheduler sends two web-push digests a day. A calendar app can subscribe to an ICS feed.

In words

Both phones run the same installable web app over a private Tailscale connection.

All logic that decides what is due, what to do next, how many points a chore is worth and how long this week's course is lives in one shared, tested module.

A small scheduler sends two notification digests a day using standard web push, with no third-party notification service.

How I built it

The hard part was adoption, not features. A wall of red overdue items turns an app into something you avoid, and scoring that counts ticks rewards whoever does the easy chores.

I designed every mechanic around one question, "Will we still open this in a month?". Points are weighted by effort so they feel fair. Streaks are forgiving so one bad day doesn't kill motivation. The weekly race resets, so falling behind is never permanent.

The code was written with Claude Code. I reviewed it, and the rules are covered by automated tests. It's the same approach I use with clients, applied at home. Design for the behaviour you want, then measure whether people keep using it.

Tech stack

Frontend
  • React 19
  • TypeScript
  • Vite
  • PWA
Backend
  • Node.js
  • Express 5
  • SQLite
  • Zod
  • Web Push
Quality
  • Vitest
Hosting
  • Docker
  • home server
  • Tailscale