A multi-user task and project management service inspired by tools like Todoist. Built with FastAPI, PostgreSQL, SQLAlchemy, and JWT-based authentication.
- User registration and login
- Secure authentication using JWT access tokens
- Create, view, update, and delete personal projects
- Each project includes:
- Name and description
- Ownership relation to the user
- A list of associated tasks
- Full CRUD operations for tasks
- Tasks belong to projects and users
- Each task supports:
- Title & description
- Completion status
- Priority (Low, Medium, High)
- Deadlines
- Filtering and sorting for tasks & projects
- WebSocket-based real-time task/project updates for connected users
- FastAPI for API layer
- PostgreSQL as database
- SQLAlchemy 2.0 ORM
- Alembic for migrations
- Docker + Docker Compose for deployment
- Gunicorn with Uvicorn workers for production server
- Pytest for testing
- WebSocket support for real-time updates
- Docker & Docker Compose
-
Create your
.envfile:cp .env.example .env
-
Build and start the containers:
docker compose up -d --build
The API will be available at http://localhost:8000.
- Swagger UI:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc
Run tests with:
pytestTests are organized under:
tests/
├── unit/
├── integration/
├── app
│ ├── api # Routers, endpoints, dependencies, schemas
│ ├── core # Config, logging, middleware, security
│ ├── db # DB connection & models
│ ├── services # Business logic
│ ├── repositories # DB queries and persistence
│ └── utils # Helpers (unit of work, etc.)
├── alembic # DB migrations
├── tests # Unit and integration tests
├── docker-compose.yml # Container orchestration
├── Dockerfile # App Dockerfile
└── entrypoint.sh # Startup script
- Fix priority levels to behave numerically (not alphabetically)
- Add team collaboration (many-to-many between users and projects)
- Enable sharing of tasks/projects with permission levels
- Assign projects to specific users or user groups
- WebSocket-based real-time updates with state stored in Redis (pub/sub)
- Notifications & reminders
- Labels/tags support
- File attachments for tasks
- Subscription and billing support