Standalone Django + PostgreSQL admissions system: applicants register, complete a 5-step application wizard, and admins review/approve or reject via a dashboard. This is fully self-contained — it does not integrate with or write to any other system. On approval it generates a registration number and a one-time temporary password for the applicant's own account within this app.
Django 5, PostgreSQL, Tailwind CSS (CDN), Alpine.js, vanilla JS, flatpickr.
- Create the Postgres database:
createuser admissions_user -P createdb admissions_db -O admissions_user - Copy
.env.exampleto.envand fill in your DB credentials + a real SECRET_KEY. - Install dependencies:
pip install -r requirements.txt - Migrate and create an admin account:
In the Django admin (
python manage.py migrate python manage.py createsuperuser/django-admin/), set that user's role toadminand check is_staff so they can access the review dashboard at/review/. - Run the dev server:
python manage.py runserver
/accounts/register/— applicant sign-up/accounts/login/— sign in (applicants and admins)/applications/apply/— the 5-step application wizard/applications/dashboard/— applicant status tracker/review/— admin review queue (role=admin only)/django-admin/— Django admin for managing users/programs directly
- Uploaded documents are validated client-side (type/size) and stored under
MEDIA_ROOT/applications/<reference_number>/.... - Application data model lives in
applications/models.py— all wizard fields are on oneApplicationrow per applicant (max one non-draft application per user in this version). - Approval logic (
admin_review/views.py::approve_view) generatesCTHS-<year>-NNNNNregistration numbers and resets the applicant's own password — nothing is written to any external system.