~/projekty / quiz-forge
Quiz Forge
Aplikacja quizowa full stack: użytkownicy przeglądają i rozwiązują quizy, a admini zarządzają treścią w panelu. Monorepo w TypeScript z Nuxt 4 i NestJS.
- rola
- full stack: API w NestJS, frontend w Nuxt, auth, testy
- czas
- mar 2026
- typ
- własny
- stack
- Nuxt 4 · NestJS · TypeORM · PostgreSQL · Turborepo · Docker
01 / problem
Quizy potrzebują strony gracza i strony admina
Aplikacja quizowa ma dwie grupy odbiorców: graczy, którzy przeglądają, rozwiązują i wysyłają odpowiedzi, oraz adminów, którzy tworzą zestawy pytań. Każda potrzebuje własnych reguł dostępu i własnych ekranów.
02 / rozwiązanie
Platforma quizowa oparta na rolach
Użytkownicy logują się tokenami JWT (access i refresh) trzymanymi w ciasteczkach HTTP-only. Admini tworzą quizy z pytaniami i opcjami odpowiedzi; gracze wybierają quiz, rozwiązują go i wysyłają odpowiedzi. Guardy po stronie serwera pilnują ról admina i użytkownika, listy quizów są stronicowane, a API opisuje Swagger. Interfejs ma polską wersję językową.
- [screenshot 1]
[podpis]
- [screenshot 2]
[podpis]
03 / architektura
Jak to działa
Monorepo Turborepo + pnpm. apps/backend to REST API w NestJS na TypeORM i PostgreSQL 15 z modułami auth, quiz i user; apps/frontend to aplikacja Nuxt 4 oparta na warstwach (core, base, auth) z Tailwind i Pinia. Wspólne DTO leżą w paczce shared-types. Vitest pokrywa testy jednostkowe, Playwright przepływy end-to-end, a Docker Compose uruchamia bazę.
04 / wyniki
Efekt
05 / wnioski
Czego się nauczyłem
- Wspólne DTO w TypeScripcie w jednej paczce utrzymują spójne kontrakty frontendu i backendu.
- Podział aplikacji Nuxt na warstwy core, base i auth oddziela layouty i i18n od stron funkcjonalnych.
galeria
- [zdjęcie]
[podpis]
- [zdjęcie]
[podpis]
- [zdjęcie]
[podpis]