Django REST API for a design operations platform for projects, tasks, workflow boards, assignments, team workload, comments, activity, attachments, chat, notifications, and realtime collaboration.
This is a production-oriented business backend. It models real operational workflows, authenticated staff access, API filtering, document/report generation, realtime notification plumbing, and testable domain behavior.
- Backend ownership for a complete internal business application.
- Django REST API design across related business modules.
- PostgreSQL data modeling for operational records and audit/history needs.
- Auth, permissions, SSO subject handling, filters, dashboards, exports, and realtime events.
- Testable backend code with pytest tooling instead of only manual checks.
- account
- design_workflow
- ws
- Django REST API for design projects, tasks, comments, activity, attachments, workflow status, and users.
- Realtime collaboration support through Channels, Daphne, Redis, websocket routing, and chat-related endpoints.
- JWT/session auth, SSO subject support, permission-aware access, django-filter, and django-axes protection.
- Workflow data model designed for board views, assignment queues, review states, team workload, and task detail pages.
- pytest stack with async/cov/xdist support for API and websocket-adjacent behavior.
- Python, Django 6, Django REST Framework
- PostgreSQL, django-filter, django-simple-history
- SimpleJWT, dj-rest-auth, django-axes, CORS
- Redis, Channels, channels-redis, Daphne, Celery-ready runtime
- Gunicorn, WhiteNoise, Pillow/OpenCV where media handling is needed
- pytest, pytest-django, pytest-cov, pytest-asyncio, pytest-xdist
- Frontend: Altroo/design_workflow_frontend
Redacted production UI screens powered by this API. Sensitive names, amounts, dates, and records are blurred.
Create local-only environment variables for Django settings, database, Redis, media/static storage, CORS, and allowed hosts. Do not commit .env files or production credentials.
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python manage.py migrate
uvicorn design_workflow_backend.asgi:application --host 127.0.0.1 --port 8004 --http h11 --ws wsproto --lifespan offOn Windows, activate with .venv\Scripts\activate.
Use this Uvicorn command when testing uploads, matching the container's HTTP and
WebSocket transports. Daphne's runserver buffers request bodies before Django
processes them and is not suitable for the 10 GiB attachment limit. See
upload deployment notes.
collectstatic generates staticfiles/ from the installed Django packages.
WhiteNoise serves compressed, content-hashed URLs using STORAGES["staticfiles"].
The Docker build collects these assets before the app starts; do not bind-mount
an older host static directory over them. Nginx forwards /static/ to the app.
The legacy checked-in static/ directory is not a static source or output.
After a Django upgrade, rebuild the image and verify the admin stylesheet URLs contain hashes and return HTTP 200. The collected CSS must match the installed Django version, not merely exist on disk.
python -m pytest
python -m pytest --covThe repository is public for portfolio review. Screenshots are redacted, and sensitive production values are intentionally hidden.

