This is my final project for CS50x: a small full-stack web application built with a FastAPI backend and a React frontend.
The goal was not to build a huge product, but to connect the main parts of a modern web app: an API, data validation, async backend logic, a frontend interface, and communication between both sides.
Video demo: https://youtu.be/14pbbAfhqMw
Backend
- Python
- FastAPI
- Pydantic / pydantic-settings
- aiohttp
Frontend
- React
- Vite
- Ant Design
- Tailwind CSS
- A FastAPI backend with structured request/response validation
- Async HTTP logic with
aiohttp - A React frontend built with reusable components
- A dashboard-style interface
- Basic CRUD-style data management
- Responsive UI work with Tailwind CSS and Ant Design
This project helped me move from separate programming exercises to a complete web application. The main things I practiced were:
- designing API endpoints
- validating data with Pydantic
- connecting frontend and backend code
- working with async Python
- organizing a React project
- making a UI usable on different screen sizes
- documenting a project clearly enough for another person to run it
CS50_Final_Project/
├── backend/
│ ├── src/
│ └── requirements.txt
├── frontend/
│ ├── src/
│ ├── package.json
│ ├── tailwind.config.js
│ └── vite.config.js
└── README.md
cd backend
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
pip install uvicorn
uvicorn src.main:app --reloadThe backend will run at:
http://127.0.0.1:8000
API docs:
http://127.0.0.1:8000/docs
cd frontend
npm install
npm run devThe frontend will run at:
http://127.0.0.1:5173
- Add automated backend tests
- Add frontend tests
- Improve error handling in the UI
- Add user roles and permissions
- Add WebSocket notifications or live updates
- Prepare a Docker Compose setup for easier local launch