# Quick Start Tento dokument je rychly start po vytvoreni projektu z template. Ak nechces citat celu dokumentaciu, chod podla tychto krokov. ## 1. Spusti Projekt ```bash corepack enable pnpm install pnpm dev ``` Poznamka: - projekt ocakava Node `^22.12.0 || >=24` Ak chces rovno pripravit release image namiesto lokalneho dev servera: ```bash docker build -t nuxt-workspace-template:latest . docker run --rm -p 3000:3000 nuxt-workspace-template:latest ``` Potom otvor `http://localhost:3000`. Poznamka: - runtime image je distroless Node 24 image urceny pre release a deploy ## Co Spravit Hned Po Spusteni Po tom, co aplikacia bezi, urob aspon tieto zakladne kroky: 1. vytvor `.env` z `.env.example` a nastav minimalne API a auth hodnoty 2. uprav branding v `package.json`, `nuxt.config.ts` a textoch v `i18n/locales` 3. rozhodni auth mod: `disabled`, `mock` alebo `userinfo` 4. rozhodni, ci pojdes cez vlastne wrappery v `api/wrappers`, alebo cez OpenAPI codegen 5. nahrad demo obsah v `app/pages/index.vue` prvou realnou obrazovkou alebo dashboardom 6. skontroluj globalne styly v `app/assets/styles` 7. pred vacsou zmenou pust `pnpm lint`, `pnpm typecheck`, `pnpm test:run` a `pnpm build` Kde to najdes podrobne: - `.env` a runtime config: nizsie v tomto dokumente a v `programing_guide.md` - branding a preklady: sekcia `Uprav Branding` - auth: sekcia `Rozhodni Sa O Auth` - API a OpenAPI: sekcia `Rozhodni Sa O API Integracii` - prva feature: sekcia `Vytvor Prvu Feature` ## 2. Vytvor `.env` Skopiruj `.env.example` do `.env` a uprav hodnoty podla projektu. Minimalny start: ```env NUXT_PUBLIC_API_BASE_URL=/api NUXT_PUBLIC_API_TIMEOUT_MS=10000 NUXT_PUBLIC_AUTH_MODE=disabled ``` Ak chces lokalny mock auth: ```env NUXT_PUBLIC_AUTH_MODE=mock ``` ## 3. Uprav Branding Najcastejsie prve zmeny: - nazov projektu v `package.json` - title a meta v `nuxt.config.ts` - texty v `i18n/locales/sk.json` - texty v `i18n/locales/en.json` - obsah domovskej stranky v `app/pages/index.vue` Odporucanie: - nenechaj template texty v produkcnom projekte ## 4. Rozhodni Sa O Auth Template podporuje volitelny auth skeleton. Moznosti: - `disabled` pouzi, ak aplikacia auth nepotrebuje - `mock` pouzi pri lokalnom vyvoji bez realneho prihlasenia - `userinfo` pouzi, ak backend alebo proxy vracia user info endpoint Priklad ochrany route: ```ts definePageMeta({ requiresAuth: true }) ``` Priklad s rolou: ```ts definePageMeta({ requiresAuth: true, roles: ['ADMIN'] }) ``` ## 5. Rozhodni Sa O API Integracii Mas 2 hlavne cesty: - bez OpenAPI pouzivaj `useApi()` a doplnaj vlastne wrappery do `api/wrappers` - s OpenAPI nahraj specifikaciu do `openapi-spec` a vygeneruj klienta Priklad pouzitia API: ```ts const api = useApi() const health = await api.example.getHealth() ``` Ak mas OpenAPI: 1. nahrad `openapi-spec/example-api.yaml` 2. uprav `openapi-ts.config.ts` 3. spusti: ```bash pnpm generate:api ``` Poznamka: - generator bezi cez `@hey-api/openapi-ts`, takze netreba Javu ## 6. Stavaj UI S Nuxt UI Template pouziva Nuxt UI ako predvolenu komponentovu vrstvu. Pouzivaj najma: - `UButton` - `UCard` - `UInput` - `USelect` - `UFormField` - `UAlert` Priklad: ```vue ``` Odporucanie: - nebuduj novu vrstvu `BaseButton`, `BaseInput`, `BaseCard`, ak na to nie je silny dovod ## 7. Pouzivaj Pinia Len Na Zdielany Stav Pripravene store-y: - `useAuthStore()` - `useUiStore()` Pouzivaj ich na: - user/session stav - loading - notifikacie Nepouzivaj ich na: - kazdy maly lokalny input - docasny stav jedneho formulara, ak ho nepotrebuje viac casti appky Priklad: ```ts const uiStore = useUiStore() uiStore.pushNotification({ title: 'Ulozene', message: 'Operacia prebehla uspesne.', tone: 'success' }) ``` ## 8. Vytvor Prvu Feature Odporucany postup pri novej feature: 1. vytvor route v `app/pages` 2. vytvor alebo dopln API wrapper v `api/wrappers` 3. ak treba, vytvor store v `app/stores` 4. dopln preklady do `i18n/locales` 5. postav UI pomocou Nuxt UI Priklad: - `app/pages/users/list.vue` - `api/wrappers/users.ts` - `app/stores/users.ts` ## 9. Over Kvalitu Pred vacsou zmenou alebo commitom pustaj: ```bash pnpm lint pnpm typecheck pnpm test:run pnpm build ``` Ak menis formatovanie: ```bash pnpm format:fix ``` Template uz obsahuje automaticke testy pre: - `auth` a `ui` store-y - auth plugin a auth middleware - API wrapper a API plugin - logger plugin a `useLogger()` - konzistenciu i18n klucov Ak chces rychly smoke check len pre testovaciu kostru template-u, pouzi: ```bash pnpm vitest run tests/auth.plugin.spec.ts tests/auth.middleware.spec.ts tests/i18n.locales.spec.ts tests/api.plugin.spec.ts tests/logger.plugin.spec.ts tests/use-logger.spec.ts ``` Poznamka: - Vitest aliasy pre Nuxt importy su nastavene vo `vitest.config.ts` ## 10. Co Zmenit Ako Prve V Realnom Projekte Najcastejsie prve upravy: - branding a preklady - title a meta udaje - `.env` konfiguracia - auth mod - API base URL - vlastna domovska stranka - prvy realny API wrapper - prva chranena route, ak treba auth ## Odporucane Minimalne Rozhodnutia Na Start Predtym, nez zacnes feature vyvoj, rozhodni aspon toto: 1. bude auth `disabled`, `mock` alebo `userinfo`? 2. bude FE/BE kontrakt rieseny cez OpenAPI? 3. budete generovat klientov do `openapi-client`? 4. budete drzat globalny stav v Pinia store-och? 5. zostavate pri Nuxt UI ako hlavnej UI vrstve? ## Ked Chces Ist Dalej Podrobnejsi popis najdes v: - `readme.md` - `programing_guide.md` - `openapi-spec/README.md`