Multi-User Collaborative Backend (Django)
A backend-oriented system exploring object-level authorization, relational modeling, and multi-user domain design.
This project focuses on reasoning about who can see, modify, and delete what in a collaborative environment.
Many collaborative systems appear simple at the interface level but become complex when enforcing:
- Visibility rules
- Ownership semantics
- Multi-entity assignment
- Hierarchical relationships
- Consistent permission enforcement
This project models those challenges explicitly.
| Layer | Technology |
|---|---|
| Language | Python 3.x |
| Framework | Django 5.x |
| Database | SQLite (dev) / PostgreSQL (prod-ready) |
| UI | Bootstrap (server-rendered templates) |
- Designing object-level visibility rules across:
- Public tasks
- Direct user assignments
- Team-based propagation
- Modeling directed subtask graphs using self-referencing relations
- Separating authentication from business logic
- Enforcing permissions without hidden abstractions
- Maintaining relational integrity via lifecycle signals
The emphasis is correctness and reasoning — not UI complexity.
App Separation:
users/ → Authentication & profile domain
tasks/ → Business domain (Task, Team, permission logic)Key decisions:
- View-level authorization (explicit request boundary control)
- Directed self-referencing ManyToMany for task hierarchies
- Explicit creator vs collaborator distinction
- Minimal use of signals (only lifecycle consistency)
- Server-rendered design (no DRF abstraction layer)
Trade-offs are documented in ARCHITECTURE.md.
This project demonstrates:
- Domain modeling with complex associations
- Object-level access control
- Directed graph modeling in relational databases
- Explicit trade-off reasoning
- Awareness of production concerns (security, scaling, testing)
- Architecture
- API Specification
- Data Model
- Permission Model
- Security Review
- Testing Strategy
- Course Context
- Clone the project
git clone <repo-url>
cd App-Web-Gestion-De-taches- Create a virtual environment
Each computer must have its own virtual environment (not shared via Git).
Remove-Item -Recurse -Force .\venv
python -m venv venv- Activate the virtual environment
# UNIX
source venv/bin/activate
# Windows (PowerShell)
.\venv\bin\Activate.ps1- Install dependencies
# Install Django
python -m pip install Django
# Install dependencies (for image handling)
pip install Pillow- Run the server
python manage.py runserver