Build a complete Task Manager application with a FastAPI backend, SQLite database, data ingestion pipeline, and a Jinja2 web UI.
- Create SQLAlchemy models:
Task(id, title, description, status, priority, created_at, updated_at, category_id) andCategory(id, name) - Use SQLite as the database engine
- Auto-create tables on startup
GET /tasks- list all tasks (supports filtering by status, priority, category)GET /tasks/{id}- get a single taskPOST /tasks- create a taskPUT /tasks/{id}- update a taskDELETE /tasks/{id}- delete a taskPOST /tasks/import- bulk import tasks from CSVGET /categories- list all categoriesGET /dashboard- statistics endpoint
- Accept CSV upload with columns: title, description, status, priority, category
- Validate each row before inserting
- Skip duplicates (same title)
- Return summary of imported/skipped rows
- Task list page with search and filter controls
- Add/edit task form with dropdown for categories
- Task detail view
- Dashboard page with statistics (total tasks, by status, by priority)
- Responsive design with basic CSS styling
- 404 handler for missing tasks
- 422 handler for validation errors
- 500 handler for unexpected errors
- Log all API requests and errors to
app.log
- Add user authentication (simple token-based)
- Add pagination to task listing
- Add task due dates and overdue highlighting
- Add export to CSV endpoint
- Add unit tests with pytest
- Dockerize the application
pip install -r requirements.txt
python -m appOpen http://localhost:8000 in your browser. API docs are at http://localhost:8000/docs.
project/
├── README.md
├── starter_code.py
├── requirements.txt
└── solution/
├── app.py
├── models.py
├── database.py
├── schemas.py
└── templates/
├── base.html
├── index.html
└── tasks.html