Django application that replaced paper sign-in sheets and a spreadsheet of monthly fees for a Jiu-Jitsu academy.
The academy tracked students, attendance and monthly fees on paper and in a spreadsheet. Three consequences: fees were forgotten, nobody could tell who was actually training, and there was no history of payments.
This system centralises all three.
Students
- Full registration: name, birth date, phone, e-mail, address, belt and enrolment date
- Scholarship flag — the academy charges a reduced fee for scholarship students
- Active / inactive status, so former students stay in the history without cluttering the active list
Memberships and payments
- Monthly fee generated per student with a due date and amount
- Payment registration with date, amount and payment method
- Automatic status:
PENDENTE→ paid - Default amounts: regular and scholarship tiers
Attendance
- Daily check-in per student, building a real training history
Accounts and preferences
- User profiles linked to Django's auth, each owning their students
- Per-user dark mode preference
- Terms of use acceptance, stored with a version and timestamp
Aluno ──┬── Mensalidade ── Pagamento
└── Presenca
UserProfile ──── User (Django auth)
| Model | Purpose |
|---|---|
Aluno |
Student record, belt, scholarship flag, owner |
Mensalidade |
Monthly fee: due date, amount, status |
Pagamento |
Payment: date, amount, method |
Presenca |
Attendance entry per student per day |
UserProfile |
Preferences and terms acceptance |
| Layer | Technology |
|---|---|
| Backend | Django 4.2 |
| Database | PostgreSQL (via dj-database-url) |
| Forms | django-crispy-forms + crispy-bootstrap5 |
| Static files | WhiteNoise |
| Server | Gunicorn |
The project ships a render.yaml blueprint, so it deploys to Render with no manual setup:
buildCommand: "./build.sh"
startCommand: "gunicorn ct_gouveia.wsgi:application"
healthCheckPath: /admin/SECRET_KEY is generated by the platform, and static files are served through WhiteNoise. See DEPLOY_INSTRUCTIONS.md for the full walkthrough.
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python manage.py migrate
python manage.py createsuperuser
python manage.py runserverIn production for a real academy. The core flow — register student, generate monthly fee, record payment, track attendance — is used daily.