You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A simple CRUD REST API for task management, organized into projects, built with FastAPI and SQLModel.
Tech Stack
Python 3.14
FastAPI
SQLModel (SQLAlchemy + Pydantic)
SQLite (easily swappable for PostgreSQL in production)
Alembic (database migrations)
pydantic-settings (environment configuration)
pytest (test suite)
Setup
With Docker (recommended)
git clone https://github.com/carlosalaris/fastapi-tasks.git
cd fastapi-tasks
cp .env.example .env # Edit .env with your own SECRET_KEY
docker compose up --build
The API will be available at http://localhost:8000/docs.
The database is created automatically on first run and persists across restarts.
Without Docker
git clone https://github.com/carlosalaris/fastapi-tasks.git
cd fastapi-tasks
python -m venv venv
source venv/Scripts/activate # Windows Git Bash
pip install -r requirements.txt
cp .env.example .env # Edit .env with your own SECRET_KEY
alembic upgrade head # Run database migrations
fastapi dev
Project owner can create, edit, and delete their own projects and manage all tasks inside them, including assigning tasks to other users
Collaborator (user with tasks assigned in someone else's project) can see the project and their own tasks, and can update their tasks (e.g. mark as completed), but cannot modify the project or other users' tasks
General user can create, edit, and delete their own tasks
Reassigning a project transfers the old owner's tasks to the new owner (collaborator tasks stay unchanged)