$ cd ../blog

Building Chorarr: My First Vibe-Coded Web App

Next.js Claude Code Docker Vibe Coding

My wife and I needed a better way to split household chores. We’d tried shared notes, whiteboards, apps, and nothing stuck. So I decided to build something myself. The catch: I’d never built a web app before.

Enter Claude Code and the art of vibe coding.

What is Chorarr?

Chorarr is a self-hosted household chore manager. Think Trello, but specifically for chores. It’s a Kanban board where my wife and I can:

  • Create chores with categories like Kitchen, Bathroom, Laundry, etc.
  • Assign them to each other (or leave them unassigned for someone to claim)
  • Drag and drop between To Do, In Progress, and Done columns
  • Filter by room or toggle a “My Tasks” view
  • Track everything on a shared board we both log into

It runs on our home server as a Docker container with SQLite. No cloud services, no subscriptions, just a simple app on our local network.

The Tech Stack

I went with what Claude Code suggested for a self-hosted app with minimal infrastructure:

  • Next.js 16 with App Router and Server Actions
  • React 19 with TypeScript
  • SQLite via better-sqlite3 (no separate database server needed)
  • Drizzle ORM for the schema and queries
  • NextAuth.js for login/registration
  • Tailwind CSS v4 for styling
  • @dnd-kit for drag and drop
  • Docker for deployment

The whole thing runs in a single container. No Redis, no Postgres, no external dependencies. Just docker compose up and you’re done.

The Vibe Coding Experience

This was my first real attempt at vibe coding, describing what I wanted and letting Claude Code write the implementation. I started with a product requirements document that laid out all the features I wanted, then worked through them one by one.

Some things that surprised me:

It actually works. I went from “I’ve never used Next.js” to a fully functional app with authentication, a database, drag-and-drop, dark mode, and Docker deployment. The whole thing took a fraction of the time it would have taken me to learn all these frameworks from scratch.

You still need to think. Vibe coding isn’t “type a prompt and get an app.” I had to make architectural decisions like SQLite vs Postgres, how to structure the data, what the UX should feel like. Claude Code handles the implementation, but you’re still the product owner.

The iteration loop is fast. Describe a feature, see it built, try it, give feedback, repeat. The Kanban board went from “I want columns you can drag cards between” to a working implementation in one session.

Docker made deployment trivial. Once the app worked locally, getting it into a Docker container with a multi-stage build and health checks was straightforward. Now it just runs on our home server and restarts automatically.

Features in Detail

The Kanban Board

Three columns: To Do, In Progress, Done. Each chore is a card you can drag between columns. The drag-and-drop uses optimistic UI updates so it feels instant. The card moves immediately and the server updates in the background.

Categories

Seven default categories with color-coded labels: Kitchen, Bathroom, Bedroom, Living Room, Laundry, Outdoor, and General. You can filter the board to show only one category at a time, which is useful when you want to focus on one room.

Task Claiming

Chores can be left unassigned. Either of us can “claim” an unassigned chore, which assigns it to us. This works well for the tasks that either person could do. Whoever has time grabs it.

Authentication

Each user has their own account with a password. The app knows who created each chore and who it’s assigned to. Simple credentials auth via NextAuth.js, no OAuth, no third-party providers, just email and password.

Dark Mode

Because of course. System-aware with a manual toggle, same as everything else I build.

What I’d Do Differently

If I were starting over:

  • Add recurring chores: most household tasks repeat weekly. Right now you have to recreate them.
  • Add a due date reminder: the due date field exists but there’s no notification system.
  • Add tests: there are none. It works, but it’s all manually verified.

But honestly, for a v0.1 that my wife and I actually use every day? It does the job.

Try It Yourself

It’s open source and self-hostable:

git clone https://github.com/johnsideserf/chorarr.git
cd chorarr
docker compose up -d

Open localhost:3000, register two accounts, and start assigning each other chores. That’s it.