Simple shared task management for couples. No projects, no priorities, no labels. Just tasks, a shared list, and visibility into what's getting done.
- Shared Task List - Add tasks with one tap, claim tasks, mark them done
- Done Feed - See what's been completed and by whom (last 7 days)
- Partner Pairing - Simple invite code to connect households
- PWA Support - Add to home screen for app-like experience
- Frontend: React + TypeScript + Vite + Tailwind CSS
- Backend: FastAPI + SQLAlchemy
- Database: PostgreSQL (or SQLite for local dev)
- Hosting: Render
- Node.js 18+
- Python 3.11+
cd shared-tasks
npm installcd backend
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txtIn one terminal, start the backend:
cd backend
uvicorn main:app --reload --port 8000In another terminal, start the frontend:
npm run devOr run both together:
npm run dev:all- Push to GitHub
- In Render, click "New" > "Blueprint"
- Connect your repo
- Render will auto-detect
render.yamland set everything up
-
Create PostgreSQL Database
- New > PostgreSQL
- Note the Internal Database URL
-
Create Web Service
- New > Web Service
- Connect your repo
- Root Directory:
backend - Build Command:
pip install -r requirements.txt - Start Command:
uvicorn main:app --host 0.0.0.0 --port $PORT - Add environment variables:
DATABASE_URL: (from PostgreSQL internal URL)SECRET_KEY: (generate a random string)FRONTEND_URL:https://your-service.onrender.com
-
Build and Deploy Frontend
Build locally:
npm run build
Copy
dist/contents tobackend/or serve via CDN.
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/magic-link |
Request magic link |
| POST | /api/auth/verify |
Verify token, get JWT |
| GET | /api/users/me |
Get current user |
| PATCH | /api/users/me |
Update profile |
| POST | /api/households |
Create household |
| POST | /api/households/join |
Join with invite code |
| GET | /api/households/current |
Get household info |
| GET | /api/tasks |
Get active tasks |
| GET | /api/tasks/completed |
Get done tasks (7 days) |
| POST | /api/tasks |
Create task |
| POST | /api/tasks/{id}/claim |
Claim task |
| POST | /api/tasks/{id}/complete |
Complete task |
| DELETE | /api/tasks/{id} |
Delete task |
Uses magic links - no passwords needed. Users enter their email and click a link to sign in. In dev mode, the link is shown directly; in production, you'd integrate an email service.
- First user creates a household (gets a 6-character invite code)
- Second user signs up and enters the invite code
- Both users now share the same task list
- Add - Anyone can add tasks (they start "unclaimed")
- Claim - Tap to claim a task (shows it's yours)
- Complete - Swipe right (mobile) or click checkmark (desktop)
- Done Feed - Completed tasks show who did them
The frontend polls the API every 5 seconds for updates. Changes appear within a few seconds for both partners.
MIT