Next.js 16.0.1 (App Router, Turbopack) ile geliştirilmiş Skylab yönetim paneli.
- Next sürüm: 16.0.1
- Paket yöneticisi: pnpm
- UI: Tailwind CSS (yalnızca Tailwind renkleri; ihtiyaç olursa
tailwind.config.*ile eklenir) - Domain (prod):
https://admin-skylab.vercel.app - Not: Responsivity şu an kapsam dışı (gereksinim)
- Proje Mimari Özeti
- Hızlı Başlangıç
- Çevre Değişkenleri (.env)
- Komutlar
- Geliştirme Notları (Next 16 değişiklikleri, dynamic routes)
- Kimlik Doğrulama ve Akış
- API Katmanı
- Dağıtım (Vercel) ve Domain
src/app: App Router sayfaları ve API route’larıapp/api/*: Frontend-proxy API uçları (ör.auth,users,announcements,events)- Ör.
src/app/api/auth/login/route.ts: OAuth başlangıcına yönlendirir (GET)
src/lib: İstemciler ve yardımcı katmanlarlib/api/client.ts: Genel API istemcisilib/api/server-client.ts: Sunucu tarafı fetch wrapper’ı (cookie/token yönetimi)lib/auth/oauth2.ts: OAuth2 URL üretimi, token alma/yenileme
src/components: Form ve UI bileşenleri (ör.components/forms/Form.tsxRHF+Zod)backend_datalari/: Backend referans dökümantasyonu (gerekirse frontend düzeyinde uyarlanır)
- Node.js 18+
- pnpm 8+
pnpm installpnpm dev
# http://localhost:3000pnpm build
pnpm start/.env.local örneği:
NEXT_PUBLIC_API_URL=https://api.yildizskylab.com
OAUTH2_AUTH_URL=... # oauth yetkilendirme endpointi
OAUTH2_TOKEN_URL=... # oauth token endpointi
OAUTH2_CLIENT_ID=...
OAUTH2_CLIENT_SECRET=...
OAUTH2_REDIRECT_URI=http://localhost:3000/api/auth/callback- Prod ortamında
OAUTH2_REDIRECT_URIhttps://admin-skylab.vercel.app/api/auth/callbackolmalıdır.
pnpm dev: Geliştirmepnpm build: Üretim derlemesi (Turbopack)pnpm start: Üretim sunucusupnpm lint(varsa): Lint kontrolü
- App Router + Turbopack.
middlewarekonvansiyonu depreceated →proxykullanımı önerilir. Uyarı build’i engellemez; daha sonrasrc/proxy.ts’e taşınabilir.
cookies()kullanan sayfalar SSG yerine dinamik render edilir. Bu beklenen davranış olup build’i engellemez.- Gerekirse sayfa başına
export const dynamic = 'force-dynamic'veyarevalidate = 0ile netleştirilebilir.
- Login sayfası
/loginoauth yetkilendirme URL’sine otomatik yönlendirir. - OAuth callback:
GET /api/auth/callbackkodu token’a çevirir veauth_token/refresh_tokencookie’lerini yazar, ardından/dashboard’a yönlendirir. - Oturum durumu:
GET /api/auth/mebackend’e token ile gider, kullanıcıyı döner (erişim yoksa cookie temizleme). - Logout:
POST /api/auth/logoutcookie temizler.
- Tüm istekler
NEXT_PUBLIC_API_URLüzerinden backend’e yönlenir. - İstemci tarafında
lib/api/client.ts, sunucu tarafındalib/api/server-client.tskullanılır. - Bazı uçlar form-data / blob ister (örn. QR kod).
lib/api/qr-codes.tsheader normalizasyonu içerir.
- Platform: Vercel
- Prod domain:
https://admin-skylab.vercel.app - Vercel ortam değişkenlerini
.env.localile eşleyin (Project Settings → Environment Variables). - Build Command:
pnpm build - Install Command:
pnpm install - Output: Next.js (otomatik)
- Paket yönetimi: yalnızca pnpm
- Renkler: yalnızca Tailwind CSS palette; ihtiyaç halinde
tailwind.config.*ile ekleyin - Component yapısı: modüler, okunaklı, sorumluluğu net
- Tip güvenliği: Zod + React Hook Form ile formlar, tiplerin uyuşmasına dikkat
- OAuth callback dönmüyorsa:
OAUTH2_REDIRECT_URIprod/dev uyumunu ve OAuth client izinli URL’lerini kontrol edin. - 401/403: Cookie’de
auth_tokenvar mı; backend’da rol/yetki ayarlarını doğrulayın. Dynamic server usageuyarıları: sayfanın SSG yerine dinamik render edilmesi normal; gerekirse dinamik bayrakları ekleyin.