İçeriğe geç

Katman Izolasyonu — Deploy Runbook

Detay

Bu runbook, tek monolith repo icinde landing / admin / customer katmanlarinin ileride ayri konumlara tasinabilmesi icin guncel mimariyi ozetler.

KatmanPublic URLAPI prefixLib root
Landing/, /pricing, /blog/.../api/landing/lib/landing/, components/landing/
Admin/admin/.../api/admin/lib/admin/, components/admin/
Customer/customer/.../api/customer/lib/customer/, components/customer/
Infra/api/infra/lib/cron/, lib/webhooks/, lib/kernel/mail/

Legacy URL’ler (/api/payment/*, /api/cron/*, /api/webhooks/*) 307 route stub ile yeni prefix’lere yonlenir. GET-only legacy media/vehicles stub’lari next.config.mjs redirect’lerine tasindi (/api/brands|gallery|hero-images|vehicles).

Stripe webhook (manuel): Dashboard’da endpoint URL’yi su sekilde guncelleyin: https://ecutuningportal.com/api/landing/payment/webhook (Eski /api/payment/webhook 307 redirect paralel calisir; yine de dashboard’i guncelleyin.)

Asagidaki moduller tum katmanlar tarafindan kullanilir:

  • lib/kernel/prisma.ts — PostgreSQL / Prisma
  • lib/kernel/redis.ts, lib/kernel/rate-limit.ts
  • lib/kernel/mail/, lib/kernel/sms/
  • lib/kernel/payment/confirm-* — landing + customer checkout ortak mantik

Domain kodu asla lib/ kokunde kalmamali; deprecation shim’ler gecici.

  • proxy.ts — orchestrator
  • proxy/admin.ts — admin cookie gate
  • proxy/customer.ts — iron-session dogrulama
  • proxy/landing.ts — i18n delocalize, hero A/B, metadata image rewrite
  • lib/edge/hero-hash.ts — FNV-1a (proxy + hero-variant senkron)

Dokunulmaz kontratlar lib/architecture/landing-seo-boundaries.test.ts ile korunur:

  • Ingilizce root: https://ecutuningportal.com/ (/en/ prefix yok)
  • hreflang 24 dil + x-default
  • robots: admin/customer/api disallow
  • sitemap: yalnizca public landing rotalari
Terminal window
npm run build
chown -R yigit:yigit .next .env
pm2 restart ecutuningportal
npm run cf:purge:warm
Terminal window
npm run architecture:check
npm test
ETP_E2E_BASE_URL=http://49.12.188.137:3000 npm run test:e2e

DEPLOY_LAYER=landing|admin|customer ile build-time route exclusion henuz otomatik degil. Ayri deploy icin onerilen yol:

  1. nginx path-based routing (/admin → admin instance, /customer → customer instance)
  2. Landing instance yalnizca (landing) route group + /api/landing + /api/infra
  3. Paylasilan DB ve lib/kernel her instance’ta ayni kalir

CI (.github/workflows/ci.yml):

  • npm run architecture:check — 350+ katman guard testi
  • npm test — unit + integration
  • npm run lint, npx tsc --noEmit, npm run i18n:check

Yeni API route eklerken lib/architecture/api-route-inventory.test.ts allowlist’ini kucultun; hedef unscoped route sayisi sifir.