Türkiye’nin araba topluluk platformu — Forum + Akış + Araçlar.
Not: Aktif legacy uygulama depo kökünde yer alır.
package.json,scripts/migrate.jsveschema.sqldosyaları bu kök dizin için kanonik kaynaktır; yanlışlıkla alt klasörlerde çalışmayın.
apps/web) tam geçiş.ACTIVE_UI=legacy verilirse geri dönüş (rollback) amaçlı kullanılabilir (varsayılan artık next).Legacy arayüzü geliştirme (aktif):
npm run dev:legacy
npm run start:legacy
Next arayüzü geliştirme (migration):
npm run dev:web
npm run build:web
| URL pattern | Legacy (public/) |
Next (apps/web) |
Durum |
|---|---|---|---|
/ |
✅ index.html / SPA ana ekran |
✅ app/page.tsx |
İki arayüzde de var |
/index.html |
✅ statik giriş | ✅ /‘e redirect |
Next tarafında kalıcı yönlendirme var |
/login |
⚠️ modal/SPA akışı | ✅ app/login/page.tsx |
Next karşılığı hazır |
/register |
⚠️ modal/SPA akışı | ✅ app/register/page.tsx |
Next karşılığı hazır |
/feed |
⚠️ SPA içinde feed paneli | ✅ app/feed/page.tsx |
Next karşılığı hazır |
/search |
⚠️ navbar içi arama | ✅ app/search/page.tsx |
Next karşılığı hazır |
/notifications |
⚠️ SPA panel | ✅ app/notifications/page.tsx |
Next karşılığı hazır |
/dashboard |
❌ ayrı route yok | ✅ app/dashboard/page.tsx |
Sadece Next |
/post/:id |
✅ SPA post detail route | ✅ /items/:id (app/items/[id]/page.tsx) |
Kalıcı yönlendirme planlandı |
/thread/:slug |
✅ SPA thread route | ✅ app/thread/[slug]/page.tsx |
Next karşılığı hazır |
/profile/:username |
✅ SPA profile route | ✅ app/profile/[username]/page.tsx |
Next karşılığı hazır |
/messages , /messages/:username |
✅ SPA messages route | ✅ app/messages/* |
Next karşılığı hazır |
/rehber.html |
✅ statik sayfa | ✅ /rehber |
Next karşılığı hazır (yeni URL) |
/sanayi.html |
✅ statik sayfa | ✅ /sanayi |
Next karşılığı hazır (yeni URL) |
/karsilastir.html |
✅ statik sayfa | ✅ /karsilastir |
Next karşılığı hazır (yeni URL) |
/ozellikler.html |
✅ statik sayfa | ✅ /ozellikler |
Next karşılığı hazır (yeni URL) |
Next frontend tarafında kullanılan endpointler Nest API üzerinde çalışır:
auth, feed, profile, search, notificationsforum, discovery, businesses, bookmarks, reportsDetay endpoint envanteri ve taşınma kararları: docs/next-cutover-api-matrix.md.
ACTIVE_UI=next ve NEXT_APP_URL tanımlıysa kullanıcı-facing route’lar Next’e 301 ile yönlendirilir
(örn: /, /feed, /search, /notifications, /forum, /thread/:slug, /profile/:username, /models, /rehber.html, /sanayi.html, /karsilastir.html, /post/:id).ACTIVE_UI=legacy kullanılabilir.Her iki backend’de de cookie politikası hizalandı:
tokenrefresh_tokenhttpOnly: truesameSite: laxsecure: NODE_ENV=productionpath: /Bu repo yeni mimari geçişi için aşağıdaki başlangıç yapısını içerir:
apps/api: NestJS + Fastify + TypeScript (yeni API iskeleti)apps/web: Next.js + TypeScript (yeni frontend iskeleti)packages/shared: paylaşılan tipler (DTO/type contract)npm run dev:api
npm run dev:web
npm run build:api
npm run build:web
apps/api tarafında gerçek veritabanı bağlantısı (pg) eklendi.POST /api/auth/register, POST /api/auth/login, POST /api/auth/logout, GET /api/auth/me endpointleri Nest tarafında çalışır hale getirildi./login sayfası ile yeni auth endpointlerini test edecek istemci formu eklendi.apps/api tarafına BullMQ + Redis tabanlı QueueService eklendi.POST /api/notifications/system-test endpointi ile bildirim job’ı kuyruğa atılabilir hale geldi.npm run worker:api script’i eklendi.GET /api/feed, POST /api/feed, POST/DELETE /api/feed/:id/like, GET /api/feed/:id/comments, POST /api/feed/:id/comment./feed test sayfası eklendi.POST /api/auth/refresh eklendi; rol bazlı yetki için RolesGuard altyapısı kuruldu.GET /api/profile/me, PUT /api/profile/me, GET /api/profile/:username.GET /api/search?q=... (PostgreSQL FTS).Socket.IO gateway) ve bildirim yayınlama entegre edildi.apps/api/test/health.e2e-spec.ts).Legacy Express uygulaması hâlâ çalışır:
npm run dev:legacy
npm run start:legacy
Repo, pnpm-workspace.yaml + turbo.json ile monorepo düzenine taşındı:
apps/api (NestJS + Fastify)apps/web (Next.js App Router)packages/shared (types + zod şemaları + utils)pnpm install
pnpm dev
pnpm build
pnpm lint
pnpm test
.env.example + runtime env validationdocker-compose.local.yml ile aşağıdaki servisler birlikte ayağa kalkar:
docker compose -f docker-compose.local.yml up --build
npm install
cp .env.example .env
# .env dosyasını düzenle
npm run migrate, kökteki scripts/migrate.js dosyasını çalıştırır ve kökteki schema.sql şemasını uygular.
createdb arabalariseviyoruz
npm run migrate
İsterseniz aynı akışı manuel olarak da kök dizinden çalıştırabilirsiniz:
node scripts/migrate.js
npm run dev:legacy
| Metod | Rota | Açıklama | |——-|——————|—————–| | POST | /api/auth/register | Kayıt ol | | POST | /api/auth/login | Giriş yap | | POST | /api/auth/logout | Çıkış yap | | GET | /api/auth/me | Aktif kullanıcı |
| Metod | Rota | Açıklama | |——–|——————————–|——————-| | GET | /api/forum/categories | Kategoriler | | GET | /api/forum/threads | Tüm konular | | GET | /api/forum/threads?category=x | Kategori konuları | | GET | /api/forum/threads?tag=x | Etikete göre konular | | GET | /api/forum/threads/:slug | Konu detayı | | POST | /api/forum/threads | Konu aç | | POST | /api/forum/threads/:slug/posts | Yanıt yaz | | POST | /api/forum/posts/:id/like | Beğen | | DELETE | /api/forum/posts/:id/like | Beğeniyi geri al | | GET | /api/forum/tags | Popüler etiketler |
| Metod | Rota | Açıklama | |——–|————————————-|——————————| | POST | /api/discovery/users/:userId/follow | Kullanıcı takip et | | DELETE | /api/discovery/users/:userId/follow | Kullanıcı takibini bırak | | POST | /api/discovery/threads/:threadId/follow | Thread takip et | | DELETE | /api/discovery/threads/:threadId/follow | Thread takibini bırak | | POST | /api/discovery/models | Marka/model kaydı aç | | GET | /api/discovery/models | Model listesi | | GET | /api/discovery/models/:slug | Model landing verisi | | POST | /api/discovery/models/:modelId/follow | Model takip et | | DELETE | /api/discovery/models/:modelId/follow | Model takibini bırak |
| Metod | Rota | Açıklama | |——-|—————–|————–| | GET | /api/feed | Akışı getir | | POST | /api/feed | Post paylaş | | POST | /api/feed/:id/like | Beğen |
| Metod | Rota | Açıklama | |——-|—————|——————–| | POST | /api/score | Alınır mı skoru | | GET | /api/score/stats | İstatistikler |
Bu repoda staging için temel deploy altyapısı eklendi:
docker-compose.staging.yml: Postgres + Redis + API + Worker + Web servisleriapps/api/Dockerfile, apps/web/Dockerfile: üretim imajı build dosyalarıdeploy/k8s/*: namespace/deployment/service/ingress manifestleri.github/workflows/staging.yml: staging build/doğrulama workflow.github/workflows/cd-staging.yml: staging deploy workflow (image push + migration + rollout).env.staging.example: staging ortam değişken örneğidocker compose -f docker-compose.staging.yml up --build
kubectl apply -f deploy/k8s/namespace.yaml
kubectl apply -f deploy/k8s/api-deployment.yaml
kubectl apply -f deploy/k8s/web-deployment.yaml
kubectl apply -f deploy/k8s/worker-deployment.yaml
kubectl apply -f deploy/k8s/db-migrate-job.yaml
kubectl apply -f deploy/k8s/ingress.yaml
/.github/workflows/staging.yml (lint + typecheck + test + migration check + image/compose doğrulama)/.github/workflows/cd-staging.yml (staging deploy + db migration + rollout)deploy/SECRETS.mddeploy/ROLLBACK.mdNestJS modülleri:
Global:
user_sessions)Prisma schema (apps/api/prisma/schema.prisma) model kapsamı:
Pipeline:
pnpm --filter @berra/api run prisma:generate
pnpm --filter @berra/api run prisma:migrate
pnpm --filter @berra/api run prisma:seed
pnpm-lock.yaml olmadığında CI/build tarafında --frozen-lockfile hatası alınmaması için
repo kökünde nixpacks.toml ile install komutu pnpm i --no-frozen-lockfile olarak override edilmiştir.