Practice app for the Symfony 8.0 certification.
- Training - 20 questions, explanations after each answer, by topic or mixed
- Exam mode - 75 questions, 90 minutes, navigator, flag, feedback only at the end
- Progress - success-rate chart over time (training + exam)
- Retry missed - start a training session from wrong answers
- Dark / light theme toggle (persisted)
- Keyboard shortcuts -
1–9select,Enterconfirm/continue, exam:Fflag,←/→navigate
- Vue 3 + Vite + Tailwind CSS + Pinia + Vue Router
- Fastify + TypeScript + SQLite (
better-sqlite3)
npm install
npm run seednpm run dev:api # http://127.0.0.1:3456
npm run dev:web # http://127.0.0.1:5173 (proxies /api)Or both via npm run dev (requires concurrently, installed with the workspace).
npm run build
npm run seed
npm startServes the built SPA and API on port 3456 (override with PORT).
Questions live in data/questions/ — one JSON file per topic (~50 questions each). Each question includes a documentationUrl pointing to the matching official docs (Symfony 8.0, PHP, Twig, RFC, …). An optional code field can show a short excerpt under the stem (PHP, YAML, Twig, …), as in certification-style understanding questions.
Important: the question bank was generated with AI. Answers and explanations may contain mistakes or outdated details. Treat them as a study aid, not as an official source of truth.
The bank is meant to evolve: corrections, rewrites, and new questions are welcome. Edit or add entries (stable id), then run npm run seed.
Official Symfony certification cutoffs are not public. This app uses unofficial approximate thresholds:
| Level | Minimum score |
|---|---|
| Advanced | ≥ 70% |
| Expert | ≥ 85% |
These are for personal motivation only and do not predict official results.
Personal study project. Not affiliated with Symfony / SensioLabs.
