A full-stack video recommendation app — share YouTube, Vimeo, Spotify, SoundCloud and Dailymotion links with friends, rate what you watch, and reply to recommendations.
| Tech | |
|---|---|
| Frontend | React 18, Vite, React Router, Axios, PWA |
| Backend | FastAPI, SQLAlchemy, PostgreSQL (Supabase) |
| Auth | JWT (python-jose), bcrypt |
| Tests | pytest (backend), Vitest + Testing Library (frontend) |
| Deploy | Vercel (frontend) · Render (backend) · Supabase (database) |
ywt/
├── frontend/ # React + Vite SPA
└── backend/ # FastAPI REST API
├── app/
│ ├── core/ # config, security, exceptions
│ ├── db/ # SQLAlchemy models + session
│ ├── schemas/ # Pydantic schemas
│ ├── repositories/
│ ├── services/
│ └── routers/
├── tests/
└── scripts/
make install # install dependencies
make run # start dev server
make test # run test suite
make lint # flake8
make db-seed # seed database with test datanpm install # install dependencies
npm run dev # start dev server
npm run test:run # run test suite (single pass)
npm run test # run test suite (watch mode)
npm run build # production build- Clone the repo and create a
.envinbackend/:
DATABASE_URL=sqlite:///./dev.db
JWT_SECRET_KEY=your-secret-key- Create a
.envinfrontend/:
VITE_API_URL=http://localhost:8000- Start both servers :
# terminal 1
cd backend && make run
# terminal 2
cd frontend && npm run dev