TechStore este o aplicație tip magazin de electronice cu:
- Backend REST în Python (FastAPI) pentru autentificare simplă, listă produse și recomandări bazate pe profilul utilizatorului
- Frontend React (Create React App + CRACO) cu component library (Radix UI), Tailwind CSS și hooks simple
Aplicația poate rula fără bază de date (date hardcodate). Opțional, poate utiliza MongoDB prin motor/pymongo dacă sunt setate variabilele de mediu.
- Backend: FastAPI, Uvicorn, Pydantic v2, CORS middleware,
python-dotenv, (opțional) Motor/MongoDB - Frontend: React 18, CRACO, Tailwind CSS, Radix UI, React Router, Axios
- Tools/dev: ESLint, Prettier (implicit CRA), Pytest (pentru backend), Black/Isort/Flake8 (config în requirements)
backend/– aplicația FastAPI (server.py),requirements.txtfrontend/– aplicația React (CRA + CRACO),src/cu componente UI
Baza: http://localhost:8000
GET /– health/basic messagePOST /api/auth/login– login cu user hardcodat; body:{ "username", "password" }GET /api/products– lista de produseGET /api/products/{product_id}– detalii produsGET /api/recommendations/{user_id}– primele 3 recomandări pe baza profiluluiGET /api/debug/db– info de debug (fără parole), plus flag conexiune Mongo
Model utilizator/profil și produse sunt definite în backend/server.py. Dacă nu este configurat MongoDB, aplicația folosește liste în memorie.
În directorul backend/, se poate crea fișier .env:
MONGO_URL– conexiune MongoDB (ex.mongodb://localhost:27017)DB_NAME– numele bazeiCORS_ORIGINS– liste separate prin virgulă (ex.http://localhost:3000,http://localhost:5173); implicit*
Necesită Python 3.11+.
- În terminal:
cd backend
python -m venv .venv
.venv\Scripts\activate # Windows PowerShell
pip install -r requirements.txt
- (Opțional) creați
.envcu valorile dorite - Porniți serverul:
uvicorn server:app --reload --host 0.0.0.0 --port 8000
Serverul va rula pe http://localhost:8000.
Teste rapide:
curl http://localhost:8000/
curl http://localhost:8000/api/products
Necesită Node 18+ (recomandat) și npm.
- În terminal:
cd frontend
npm ci
npm start
- Aplicația pornește pe
http://localhost:3000(CRACO). Frontend-ul consumă API-ul de pehttp://localhost:8000.
- Utilizatori demo (hardcodate) sunt în
backend/server.py(de ex.Elvis_Marcu/pass123) - Produsele sunt hardcodate și acoperă categorii precum
laptops,smartphones,gaming,audio,fitness. - Algoritmul de recomandări calculează un scor din interese, branduri preferate și buget, apoi returnează top 3.
- Frontend:
cd frontend && npm run build(genereazăbuild/) - Backend: se rulează cu Uvicorn/ASGI sau containerizat; necesită aceleași variabile de mediu
- Login-ul este doar de demo (fără JWT), parole în clar pentru test; nu pentru producție
- Persistența MongoDB este opțională și nu este obligatorie pentru rulare