Studentutor je webová aplikácia na správu študijného procesu (predmety, témy, plánovanie, štatistiky, materiály, odmeny). Full‑stack architektúra: Frontend (Next.js/React), Backend (FastAPI/Python). Obe časti sú kontajnerizované cez Docker Compose.
| Oblasť | Funkcie |
|---|---|
| Používatelia | Registrácia, Login, JWT autentifikácia |
| Predmety & Témy | CRUD, statusy, prehľad progresu |
| Študijný plán | AI generované bloky, kalendár, presúvanie |
| Materiály | Upload, prepojenie so študijnými blokmi |
| Achievements | Základný systém odmien |
| Reset hesla (SMTP) | |
| UI | Moderný dizajn, animácie, hot‑reload |
Backend: FastAPI, SQLAlchemy, Pydantic, JWT, (SQLite/Postgres)
Frontend: Next.js 15 (App Router), React, Tailwind, shadcn/ui
Infra: Docker, Docker Compose, (voliteľne Alembic – zatiaľ create_all)
Docker Desktop (zapnutý), Git. (Node & Python iba ak chceš mimo Docker.)
git clone <repo-url> studentutor
cd studentutorCopy-Item backend/.env.example backend/.envUprav minimálne SECRET_KEY a FRONTEND_URL. Pre Postgres zmeň DATABASE_URL.
docker-compose up --buildFrontend: http://localhost:3000
API & Docs: http://localhost:8000/docs
Makefile alias: make dev
SQLite (default): sqlite:///./data/tutor_app.db
Postgres: postgresql+psycopg2://tutoruser:tutorpassword@postgres:5432/tutordb
Reštart backend po zmene: docker-compose restart backend
docker-compose down -v
docker-compose up --build -dOptimalizuj: silný SECRET_KEY, CORS whitelist, reverzný proxy.
Backend:
cd backend
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000Frontend:
cd frontend
npm install --legacy-peer-deps
npm run dev- http://localhost:8000/docs
- Register + Login (získaš token)
- Volaj chránené endpointy s Authorization Bearer
- Frontend login
- Vytvor predmet, témy, generuj plán
| Akcia | Príkaz |
|---|---|
| Dev štart | make dev |
| Rebuild všetko | make build |
| Restart backend | make restart-backend |
| Restart frontend | make restart-frontend |
| Stop | make stop |
| Down + volumes | make down |
| Clear Next.js cache | make reset-frontend-cache |
Premenné nechaj prázdne ak netreba. Pre Gmail: App Password (nie bežné heslo). Ak logika padá na chýbajúcich hodnotách, dočasne vlož placeholder.
ESLint je ignorovaný počas buildov (pozri next.config.ts). Lokálne môžeš zapnúť lint ručne po doplnení scriptu.
| Problém | Príznak | Riešenie |
|---|---|---|
| Docker daemon off | pipe error / exit code 1 | Spusť Docker Desktop |
| Build FE zlyhá na TS | Failed to compile | Doplň chýbajúce props / typy (alebo ponechaj ignore) |
| Backend nevidí DB | Connection refused | Skontroluj host postgres v URL |
| CORS blokuje | Browser error | Pridaj origin v main.py |
| 500 pri emailoch | SMTP error | Vyplň MAIL_* alebo mock |
| Chýba psycopg2 | ImportError | Rebuild backend image |
- Nepushuj skutočné tajomstvá (.env je v .gitignore – over).
- Rotuj uniknuté kľúče (OpenAI, SMTP).
- V produkcii vypni auto
create_all()a použi migrácie. - Limituj CORS a pridaj HTTPS (proxy, cert).
- Alembic migrácie
- CI pipeline (lint, test, build)
- Health checks + monitoring
- Rate limiting
- Centralizovaný logging
# Dev
docker-compose up --build
# Rebuild FE
docker-compose build frontend
# Rebuild BE
docker-compose build backend; docker-compose restart backend
# Switch DB → edit .env, potom
docker-compose restart backend postgres
# Clean
docker-compose down -v