A full‑stack flashcard learning platform built with FastAPI, React, and PostgreSQL, designed to help users study more effectively using spaced repetition. The project is fully containerized with Docker Compose and includes a complete backend API, a responsive frontend UI, and persistent database storage.
- Create, edit, and delete decks
- Add and manage flashcards
- Study cards using a spaced‑repetition flow
- Track review history and study progress
- Persistent user data stored in PostgreSQL
- RESTful API endpoints for decks, cards, and study sessions
- SQLAlchemy ORM models
- Alembic migrations for schema versioning
- Dependency‑injected database sessions
- Clean modular architecture (
routers/,schemas/,models/,crud/)
- Modern, responsive UI
- Deck and card management pages
- Study session interface
- API integration with Axios/fetch
- Component‑based architecture
- Backend, frontend, and database each run in isolated containers
- Docker Compose orchestrates the full stack
- Hot reload enabled for development
- Persistent Postgres volume
- React
- JavaScript
- Vite or Create React App
- Axios
- FastAPI
- Python
- SQLAlchemy
- Alembic
- PostgreSQL
- pgAdmin (optional)
- Docker
- Docker Compose
flashcards/
│
├── backend/
│ ├── app/
│ │ ├── models/
│ │ ├── schemas/
│ │ ├── crud/
│ │ ├── routers/
│ │ ├── db/
│ │ └── main.py
│ ├── migrations/
│ └── Dockerfile
│
├── frontend/
│ ├── src/
│ ├── public/
│ └── Dockerfile
│
├── docker-compose.yml
└── README.md
- Docker
- Docker Compose
docker compose up --buildThis launches:
flashcards-backend(FastAPI)flashcards-frontend(React)flashcards-db(PostgreSQL)
- Frontend: http://localhost:3000
- Backend API docs: http://localhost:8000/docs
- Database: localhost:5432 (Postgres)
You can deploy the project using:
- Frontend: Vercel / Netlify
- Backend: Render / Railway / Fly.io
- Database: Neon / Supabase