Custom Tinder-like dating app (course project). See docs/PHASES.md for the phase breakdown.
Course-oriented database write-up: docs/DATABASE_COURSE_DESCRIPTION.md.
Prerequisites: Docker Desktop, Python 3.11+.
Copy .env.example to .env at the repo root (same folder as docker-compose.yml):
cp .env.example .env # Mac/Linux
copy .env.example .env # WindowsBoth DATABASE_URL and SECRET_KEY are required — auth returns 500 without SECRET_KEY.
docker compose up -dcd backend
python -m venv .venv
# Mac/Linux
source .venv/bin/activate
# Windows
.venv\Scripts\activate
pip install -r requirements.txt# from backend/ with venv active
alembic upgrade head# Mac/Linux
python ../db/seeds/seed.py
# Windows
python ..\db\seeds\seed.py# from backend/ with venv active
uvicorn app.main:app --reloadAPI is now running at http://localhost:8000.
Interactive docs (Swagger UI): http://localhost:8000/docs
cd frontend
npm install# from frontend/
npm run devApp is now running at http://localhost:5173.
Use TablePlus (recommended, free tier sufficient) or DBeaver:
| Field | Value |
|---|---|
| Host | localhost |
| Port | 5432 |
| User | finder |
| Password | finder |
| Database | finder |
# from backend/ with venv active
python scripts/verify_phase_a.py| Path | Purpose |
|---|---|
docker-compose.yml |
Local Postgres 16 |
backend/app/main.py |
FastAPI entry point |
backend/app/models.py |
SQLAlchemy models |
backend/app/routers/ |
Route handlers (auth, profiles, photos, discovery, swipes, matches, messages, stats) |
backend/static/photos/ |
Uploaded profile photos served at /static/photos/ |
frontend/ |
React + Vite + TypeScript + Tailwind CSS SPA |
backend/alembic/ |
Schema migrations |
db/schema.dbml |
DBML for dbdiagram.io |
db/seeds/seed.py |
Faker seed script |
Use after pulling schema changes or to start fresh:
docker compose down -v
docker compose up -d
cd backend
alembic upgrade head
python ../db/seeds/seed.py # Mac/Linux