A minimalist, distraction-free TODO application built with FastAPI and Svelte.
Backend:
Frontend:
Deployment:
Backend Setup:
cd backend
pip install -r requirements.txt
uvicorn main:app --reload
Frontend Setup:
cd frontend
npm install
npm run dev
The application will be available at http://localhost:5173 with the API at http://localhost:8000.
Build Docker Images:
# Backend
cd backend
docker build -t todo-backend:latest .
# Frontend
cd frontend
docker build -t todo-frontend:latest .
Deploy to Kubernetes:
kubectl apply -f k8s/
ArgoCD Deployment:
kubectl apply -f k8s/argocd-application.yaml
TODO_APP/
โโโ backend/ # FastAPI backend
โ โโโ app/
โ โ โโโ api/ # API routes
โ โ โโโ database/ # Database connection
โ โ โโโ models/ # Pydantic models
โ โโโ tests/ # Backend tests
โ โโโ main.py # FastAPI application
โ โโโ requirements.txt # Python dependencies
โ โโโ Dockerfile # Backend container
โโโ frontend/ # Svelte frontend
โ โโโ src/
โ โ โโโ components/ # Svelte components
โ โ โโโ routes/ # SvelteKit routes
โ โ โโโ stores/ # State management
โ โ โโโ lib/ # Utilities
โ โโโ static/ # Static assets
โ โโโ package.json # Node dependencies
โ โโโ Dockerfile # Frontend container
โโโ k8s/ # Kubernetes manifests
โโโ COPILOT_MVP.md # Requirements document
โโโ README.md # This file
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/tasks |
Get all tasks |
| POST | /api/tasks |
Create new task |
| PUT | /api/tasks/{id} |
Update task |
| PUT | /api/tasks/{id}/complete |
Mark task complete |
| PUT | /api/tasks/{id}/reopen |
Reopen completed task |
| DELETE | /api/tasks/{id} |
Delete task |
| GET | /health |
Health check |
CREATE TABLE tasks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL CHECK(length(title) > 0 AND length(title) <= 200),
description TEXT CHECK(description IS NULL OR length(description) <= 1000),
status TEXT NOT NULL CHECK(status IN ('pending', 'completed')) DEFAULT 'pending',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
Backend:
DATABASE_PATH: Path to SQLite database file (default: /app/data/todo.db)CORS_ORIGINS: Allowed CORS origins (default: *)# Backend tests
cd backend
pytest
# Frontend tests (when implemented)
cd frontend
npm test
This project is open source. See the requirements document for full feature specifications.
COPILOT_MVP.mdBuilt with โค๏ธ for simplicity and productivity.