Auth & JWTAuth a JWT
Email/password + JWT. OAuth buttons appear only when provider keys are set in .env.Email/heslo + JWT. OAuth tlačidlá sa zjavia len pri nastavených kľúčoch v .env.
Architecture, key concepts, fork rules and the contribution flow — so you can confidently add lessons, simulations, pages or entire new features. Architektúra, kľúčové koncepty, pravidlá forkov a postup prispievania — aby si vedel pridávať lekcie, simulácie, stránky alebo celé nové funkcie.
Three clean layers talk over HTTP / SQL. Each layer has a single responsibility. Tri čisté vrstvy komunikujú cez HTTP / SQL. Každá vrstva má jednu zodpovednosť.
frontend/) — React 18 + TypeScript + Vite + React Flow. Talks to backend through a small typed API client.Frontend (frontend/) — React 18 + TypeScript + Vite + React Flow. S backendom komunikuje cez malý typovaný API klient.backend/) — FastAPI, SQLAlchemy 2, Alembic. Each domain has its own router, service and schemas.Backend (backend/) — FastAPI, SQLAlchemy 2, Alembic. Každá doména má vlastný router, service a schémy.Email/password + JWT. OAuth buttons appear only when provider keys are set in .env.Email/heslo + JWT. OAuth tlačidlá sa zjavia len pri nastavených kľúčoch v .env.
Initial lessons/tasks/systems are seeded automatically on first start. Edit seeders to change starter content.Prvotné lekcie/úlohy/systémy sa nasejú automaticky pri prvom štarte. Pre zmenu počiatočného obsahu uprav seedery.
Runs are deterministic — the backend stores every run so charts are reproducible per user.Behy sú deterministické — backend ukladá každý beh, takže grafy sa dajú reprodukovať pre každého používateľa.
Every schema change = new Alembic revision. Autogenerate is a starting point, always review the diff.Každá zmena schémy = nová Alembic revízia. Autogenerate je začiatok, vždy prekontroluj diff.
The UI, docs and site ship with EN/SK. Every new user-facing string must have both languages.UI, dokumentácia aj web sú v EN/SK. Každý nový text pre používateľa musí byť v oboch jazykoch.
User files live in FILES_DIR inside the container and a host folder (FILES_HOST_DIR) in Docker.Súbory používateľov žijú v FILES_DIR v kontajneri a v hostiteľskom priečinku (FILES_HOST_DIR) v Dockeri.
.env, API keys, DB dumps with real users).Nezverejňuj forky s commitnutými tajomstvami (.env, API kľúče, DB dumpy s reálnymi používateľmi)..env.example, docs and migration notes.Nikdy nepremenúvaj jadrové environment premenné bez aktualizácie .env.example, dokumentácie a migračných poznámok.Create a focused branch from main. Small PRs land faster than big ones.Vytvor fokusovanú vetvu z main. Malé PR-ky prechádzajú rýchlejšie než veľké.
git checkout -b feat/short-name
Every behavior change needs a test. Put backend tests in test/backend. Keep tests isolated and fast.Každá zmena správania potrebuje test. Backend testy daj do test/backend. Testy nech sú izolované a rýchle.
pytest -q test/backend
Generate a migration and review it carefully before committing.Vygeneruj migráciu a pred commitom ju dôkladne prekontroluj.
alembic -c backend/alembic.ini revision --autogenerate -m "short_summary"
If behavior, config or UX changes, update pages in docs/. Docs are part of definition of done.Ak meníš správanie, konfiguráciu alebo UX, aktualizuj stránky v docs/. Dokumentácia je súčasťou „definition of done“.
Short imperative subject (< 72 chars). Optional body explains why, not what.Krátky imperatívny subject (< 72 znakov). Voliteľné telo vysvetľuje prečo, nie čo.
feat(sim): deterministic replay for run history
Make runs reproducible per user by storing step inputs.
Describe what changes and why. Mention release impact, new env vars, new migrations.Popíš, čo sa mení a prečo. Uveď dopad na release, nové env premenné, nové migrácie.
any in new code, colocate component + styles + tests.TypeScript — strict mode, v novom kóde žiadne any, komponent + štýly + testy drž spolu.