forked from kwila/home-chores
No description
| cmd/srv | ||
| db | ||
| docs | ||
| frontend | ||
| srv | ||
| .gitignore | ||
| AGENTS.md | ||
| go.mod | ||
| go.sum | ||
| home-chores.service | ||
| justfile | ||
| LICENSE | ||
| README.md | ||
Home Chores 🏠
A realtime chore tracker and todo list for family households. Track recurring daily/weekly chores, one-time tasks, and assign them to family members.
Features
- Recurring Chores: Set chores to repeat daily, weekly, or monthly
- One-time Tasks: Add tasks with optional due dates
- Family Members: Create family member profiles with colors for easy identification
- Assignees: Optionally assign chores to specific family members
- Priority Levels: Mark chores as low, medium, or high priority
- Realtime Updates: WebSocket-based updates for instant synchronization
- Home Assistant Integration: REST API endpoint for dashboard integration
- Mobile-friendly: Responsive design works on phones and tablets
Tech Stack
Quick Start
Prerequisites
- Go 1.21+
- Gleam 1.14+
- Erlang (for Gleam)
- just (optional, for task running)
Development
# Install dependencies
just deps
# Run development server
just dev
The app will be available at http://localhost:8000
Build for Production
just build
This creates:
bin/srv- The backend binaryfrontend/dist/- The frontend assets
Deploy as Service
just deploy
This installs the application as a systemd service.
API Endpoints
Chores
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/chores |
List all chores |
| POST | /api/chores |
Create a chore |
| GET | /api/chores/{id} |
Get a specific chore |
| PUT | /api/chores/{id} |
Update a chore |
| DELETE | /api/chores/{id} |
Delete a chore |
| POST | /api/chores/{id}/complete |
Mark chore as complete |
Family Members
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/family |
List family members |
| POST | /api/family |
Create a family member |
| PUT | /api/family/{id} |
Update a family member |
| DELETE | /api/family/{id} |
Delete a family member |
Completions
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/completions |
List today's completions |
| DELETE | /api/completions/{id} |
Delete a completion |
Home Assistant
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/ha/state |
Get state for Home Assistant |
WebSocket
| Endpoint | Description |
|---|---|
/ws |
WebSocket for realtime updates |
Home Assistant Integration
Add a REST sensor to your Home Assistant configuration:
sensor:
- platform: rest
name: Family Chores
resource: http://YOUR_HOST:8000/api/ha/state
json_attributes:
- total_chores
- pending_today
- completed_today
- overdue
- chores
value_template: "{{ value_json.pending_today }} pending"
scan_interval: 60
Or embed the web interface in an iframe:
panel_iframe:
chores:
title: "Family Chores"
url: "http://YOUR_HOST:8000"
icon: mdi:clipboard-list
Database
The application uses SQLite for storage. The database file is created at db.sqlite3 in the working directory.
Migrations
Migrations are automatically applied on startup. Migration files are in db/migrations/.
Project Structure
home-chores/
├── cmd/srv/ # Main entry point
├── srv/ # HTTP server and handlers
├── db/ # Database layer
│ ├── migrations/ # SQL migration files
│ ├── queries/ # SQLC query files
│ └── dbgen/ # Generated database code
├── frontend/ # Gleam/Lustre frontend
│ ├── src/ # Gleam source files
│ └── dist/ # Built frontend assets
├── docs/ # Documentation
├── justfile # Task runner recipes
└── home-chores.service # Systemd service file
License
MIT