A simple, self-hosted chore tracking app for your household, built with Bun, React, and SQLite.
-
Install Bun (if not already installed):
curl -fsSL https://bun.sh/install | bash -
Install dependencies:
bun install
-
Development mode:
bun run dev
Visit
http://localhost:3000 -
Production mode:
bun run build bun run start
- ✅ Track household chores with custom icons
- ✅ Multiple tenders support
- ✅ Tending history with notes
- ✅ Sync across devices with sync codes
- ✅ PWA support (works offline)
- ✅ SQLite database (local file)
- ✅ Responsive design with Tailwind CSS
- Frontend: React + TypeScript + Tailwind CSS
- Backend: Bun server with native SQLite
- Database: SQLite (single
shitty.dbfile) - Build: Bun's built-in bundler
src/
├── server.ts # Bun server with API routes
├── client/
│ └── main.tsx # React frontend
├── db/
│ └── migrate.ts # Database migrations (optional)
└── ...
GET /api/:syncId/chores- Get all choresPOST /api/:syncId/chores- Add new chorePUT /api/:syncId/chores/:id- Update choreDELETE /api/:syncId/chores/:id- Delete choreGET /api/:syncId/tenders- Get all tendersPOST /api/:syncId/tenders- Add tenderGET /api/:syncId/history- Get tending historyPOST /api/:syncId/tend- Log a tending action
Each installation has a unique sync ID stored in localStorage. Share your sync code with other devices to sync the same data.
SQLite database (shitty.db) is created automatically. Each sync ID gets its own row in the shitty_instances table.
- Dev: Uses
bun --watchwith direct TypeScript execution - Prod: Builds React app to
dist/and serves static files
For self-hosting on your Mac:
- Build the app:
bun run build - Start production server:
bun run start - Access via local network IP for other devices
The app works great as a kitchen tablet display or shared household dashboard!
this is a bump