This repository is a full-stack, production-style project designed to showcase advanced skills across:
- Modern FastAPI backend with async I/O, auth, DB, and analytics
- React + Vite + TypeScript frontend with routing, charts, and dark mode
- Live API integration (Coindesk) + time series analytics (moving average)
- Persistent alerts stored in a database
- Auth with JWT + hashed passwords
- Dockerized dev experience + GitHub Actions CI
-
backend/app/main.py– FastAPI app, CORS, router wiring, startup hooksapp/models.py– SQLAlchemy models:User,PriceSnapshot,Alertapp/schemas.py– Pydantic schemas and DTOsapp/routers/– modular API routes for auth, crypto, analytics, alertsapp/database.py– async engine + sessionapp/config.py– environment-based settingstests/– example pytest test
-
frontend/- Vite + React + TypeScript
- Auth screen, dashboard, alerts page, settings page
- Recharts line chart for BTC price history
- Dark/light theme toggle
cd backend
pip install -r requirements.txt
uvicorn app.main:app --reloadBackend lives at: http://localhost:8000
Interactive docs:
- Swagger: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
cd frontend
npm install
npm run devFrontend lives at: http://localhost:5173
- Start backend and frontend.
- Visit the frontend in your browser.
- Register a user (any email + password).
- After login:
- Hit Refresh Live Price on the dashboard to:
- Fetch live BTC price from Coindesk via FastAPI
- Persist it in the DB
- View BTC price history and moving average.
- Create alerts that are stored in the database.
- Hit Refresh Live Price on the dashboard to:
If you have Docker and Docker Compose:
docker-compose up --buildThis starts both backend and frontend containers.
A minimal GitHub Actions workflow (.github/workflows/ci.yml) runs backend tests on push and PRs.