A Django portfolio project for managing tasks through server-rendered forms and views.
- Create tasks with a status, priority, deadline and description.
- Search, filter and paginate task lists.
- Attach files to task records; downloads and deletion are restricted to the task owner.
- Delete attachments through CSRF-protected POST forms.
- Run with SQLite locally or PostgreSQL in Docker Compose.
Requires Python 3.11+ and Django 5.2 LTS.
python -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements-dev.txt
python manage.py migrate
python manage.py runserverFor Docker Compose, copy .env.example to .env and run docker compose up --build. The PostgreSQL driver is included. Local Django commands read process environment variables; they do not load .env automatically. Register at /register/ after starting the UI.
python manage.py testLocal UI: http://127.0.0.1:8000. CI tests both SQLite and PostgreSQL, including migrations. Tests cover task CRUD, cross-account attachment access, CSRF, safe deletion methods and priority ordering. Files are served through authenticated views, including in development. Keep MEDIA_ROOT outside any publicly served directory when deploying.