A structured career clarity assessment that maps your thinking patterns to real academic majors and career paths.
- Live: exploringu.com
- Source: github.com/LaneyCommits/FutureFit
| Layer | Technology |
|---|---|
| Backend | Django 4.2 + Django REST Framework |
| Frontend | React 19 + Vite 8 |
| Database | PostgreSQL (production) / SQLite (local) |
| Auth | Token-based (DRF authtoken) |
| Hosting | DigitalOcean App Platform (Dockerfile) |
| Styling | Custom CSS design system (Plus Jakarta Sans, sage palette) |
config/ Django settings, URLs, WSGI
apps/
quiz/ Questions, choices, scoring, results
careers/ Personality types, majors, jobs
users/ Auth, profiles, dashboard
frontend/
src/
api/ API client
pages/ Landing, quiz, results, login, register, dashboard
components/ Navbar, brand, quiz UI, insight carousel
hooks/ useAuth, useQuiz, useMediaQuery
.do/app.yaml DigitalOcean App Platform spec (optional)
Dockerfile Production image: build SPA → Gunicorn + WhiteNoise
docker-compose.yml Local dev: Django `runserver` + Vite dev server
- Python 3.11+ (matches the production Docker image)
- Node.js 18+ (20.x is used in Docker)
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # edit as needed
python3 manage.py migrate
python3 manage.py seed_careers
python3 manage.py seed_quiz
python3 manage.py runserverDjango runs at http://127.0.0.1:8000.
cd frontend
npm install
npm run devOr from the repo root:
npm install && npm run devVite serves the app at http://localhost:5175 (see frontend/vite.config.js). API requests are proxied to Django when you use the dev server.
docker compose up --build- API: http://127.0.0.1:8000 —
migrate,seed_careers, andseed_quizrun on the API container startup. - Frontend: http://localhost:5175 — Vite inside Docker uses
VITE_API_PROXY_TARGET=http://api:8000so the proxy hits the Compose service name, notlocalhost.
Use any managed Postgres (e.g. Neon) and copy the connection string for DATABASE_URL.
- In App Platform, choose Create App and connect GitHub.
- Select repo
LaneyCommits/FutureFit, branchmain. - DigitalOcean can build from the
Dockerfile; you can optionally use the checked-in.do/app.yamlas a starting spec. - Set HTTP port to 8080 (the
Dockerfileexposes this; Gunicorn binds0.0.0.0:${PORT:-8080}).
| Variable | Value |
|---|---|
DJANGO_SECRET_KEY |
Random 50+ characters (secret) |
DJANGO_DEBUG |
False |
DATABASE_URL |
Postgres URL (secret) |
ALLOWED_HOSTS |
exploringu.com,www.exploringu.com (comma-separated) |
CORS_ALLOWED_ORIGINS |
https://exploringu.com,https://www.exploringu.com |
SECURE_SSL_REDIRECT |
true (default when DEBUG=False; see .env.example) |
On deploy, the container runs migrations, seeds careers/quiz data, then starts Gunicorn.
Add your domain in the app settings, point DNS as DigitalOcean instructs (often a CNAME), and TLS is provisioned automatically.
- Multi-stage
Dockerfile:npm ci/npm run buildfor the React app, then copyfrontend/distinto the Python image. - Gunicorn serves Django;
/api/*and/admin/are handled by Django. - WhiteNoise serves static assets from the Vite build.
- SPA fallback: unmatched paths return
frontend/dist/index.htmlso client-side routes work.
| Method | URL | Auth | Description |
|---|---|---|---|
| GET | /api/quiz/questions/ |
Public | Quiz questions and choices |
| POST | /api/quiz/submit/ |
Public | Submit answers, get results |
| GET | /api/careers/types/ |
Public | Personality archetypes |
| GET | /api/careers/recommendations/ |
Public | Majors and jobs for a type |
| POST | /api/users/register/ |
Public | Register (username + password) |
| POST | /api/users/login/ |
Public | Login, returns token |
| GET | /api/users/me/ |
Token | Current user |
| GET | /api/users/dashboard/ |
Token | Saved results / history |
- Ten weighted questions, four choices each.
- Server-side multi-archetype scoring (no client-side scoring logic).
- Six archetypes: Systems Thinker, Analytical Solver, Creative Builder, People Strategist, Explorer, Impact Visionary.
- Results include profile copy, behavioral insights, thinking style, majors, and career directions.
- Landing — start the assessment (no account required).
- Quiz — ten steps, one question at a time.
- Results — full report with personality, majors, and careers.
- Register / login — save results and use the dashboard.
- Dashboard — saved profiles and history.
Copy .env.example to .env for local development.
| Variable | Default (local) | Description |
|---|---|---|
DJANGO_SECRET_KEY |
Dev fallback | Django secret |
DJANGO_DEBUG |
True |
Debug mode |
DATABASE_URL |
(empty → SQLite) | Postgres DSN |
ALLOWED_HOSTS |
(see settings) | Extra hosts, comma-separated |
CORS_ALLOWED_ORIGINS |
(see settings) | Extra origins, comma-separated |
SECURE_SSL_REDIRECT |
true when DEBUG=False |
Redirect HTTP→HTTPS |
Private project.