Backend
API-ul PoetryHub rulează pe Nitro — framework-ul server al Nuxt — cu handler-e file-based în server/api/.
Nitro & framework
- Nitro — server engine Nuxt; fiecare fișier
server/api/foo.get.tsdevineGET /api/foo - Preset Vercel —
nitro.preset: 'vercel'înnuxt.config.ts - Cache —
defineCachedEventHandlerpe rute publice frecvente; headers pe/_nuxt/** - Runtime config — secrete server-only (
databaseUrl,jwtSecret, chei OAuth)
Autentificare
Utilizatori publici
- Înregistrare/login email + parolă (
bcryptjs) - OAuth Google (
josepentru JWT, flow în/api/auth/google) - Sesiune JWT în cookie httpOnly
- Roluri:
user,editor,moderator,admin
Admin panel
- Model separat
AdminUser+ loginPOST /api/auth/login - Middleware
adminpe rute/admin/*
Validare & erori
- Zod — validare input pe endpoint-uri critice
- createError (h3) — răspunsuri HTTP cu status corect (401, 403, 404, 422)
- Utilitare în
server/utils/— auth, slug, cache keys, home payload
Integrări externe
- PoetryDB — import corpus clasic (
POETRY_DB_URL) - Anthropic — enrichment opțional date poezii (
ANTHROPIC_API_KEY) - Google OAuth —
NUXT_OAUTH_GOOGLE_CLIENT_ID/SECRET
Structură server
server/
├── api/ # Route handlers (public API)
├── utils/ # Shared server logic
├── middleware/ # Nitro middleware (dacă există)
└── plugins/ # Nitro pluginsVezi referința API pentru lista completă de endpoint-uri.