Przejdź do treści

~/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
demo.mp4
[wideo demo: nagranie ekranu 1–3 min]

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]