Modüler monolith, multi-tenant SaaS apartman yönetimi (FAZ 1). Kurallar: DEVELOPMENT_RULES.md.
- Node.js 20+
- PostgreSQL (bu repo için ayrı Docker servisi — beemmb ile paylaşılmaz)
- (Önerilen) Upstash Redis — Vercel’de entegrasyon
cp .env.example .env
# AUTH_SECRET: openssl rand -base64 32
# Site yönetimine özel Postgres (port 5433 — beemmb 5432 kullanıyorsa çakışmaz)
docker compose up -d
npm install
npm run db:migrate
npm run db:seed
npm run devdb:migrate ve db:seed, repodaki kök .env içindeki DATABASE_URL değerini kullanır (web uygulamasıyla aynı veritabanı).
Uygulama: http://localhost:3000/tr
Demo giriş (seed sonrası): admin@demo.local / Demo123!
| Paket | Açıklama |
|---|---|
apps/web |
Next.js (Vercel) — admin + portal UI |
packages/db |
Prisma şema ve client |
packages/modules/property-core |
Apartman CRUD (Contract → Repository → Service) |
packages/modules/platform-auth |
Kimlik doğrulama servisi |
packages/platform-audit |
Merkezi audit |
packages/platform-cache |
Redis (Upstash) |
Team: Site Yonetimi (siteyonetim) — beemmb-arge ile paylaşılmaz.
- GitHub reposunu bu team altındaki projeye bağlayın: siteyonetim/siteyonetim
- Root Directory:
apps/web(projede ayarlı) - CLI her zaman bu team ile:
npx vercel -S siteyonetim … - Deploy (monorepo kökünden):
npx vercel deploy --prod -S siteyonetim --regions fra1--regions fra1zorunlu — Neon veritabanı Frankfurt'ta (eu-central-1); bu bayrak olmadan fonksiyonlar Vercel'in varsayılanı olaniad1'e (ABD) döner ve her sorgu transatlantik gecikmeye maruz kalır (sayfa yükleri ~3s'den ~0.5s'ye düşüyor bu bayrakla).- Önemli:
apps/web/vercel.jsoniçindeki"regions": ["fra1"]ayarı test edildi ve hem CLI hem git-push ile tetiklenen deploy'larda tek başına işe yaramadı (fonksiyonlar yineiad1'de kaldı) — sebebi netleşmedi, muhtemelen dashboard'daki proje ayarı override ediyor. Kalıcı çözüm: Vercel dashboard →siteyonetimprojesi → Settings → Functions → Function Region → Frankfurt (fra1) seçip kaydedin. Bu yapılmadan git push ile otomatik deploy'lar sessizceiad1'e dönebilir; CLI ile deploy ederken de her seferinde--regions fra1bayrağını unutmayın. .envdosyanız asla deploy paketine dahil edilmemeli (load-env.cjsvarlığını görürseDATABASE_URL'i yerel Docker'a çevirir) — kök.vercelignorebunu engelliyor, silmeyin.
- Neon + migration + seed:
Neon şartları: siteyonetim team Neon terms
cd ~/Documents/GitHub/siteyonetim ./scripts/vercel-neon-setup.sh
- Ortam:
AUTH_SECRET(Production + Preview); Neon sonrasıDATABASE_URLotomatik gelir. Ayrıca Storage → Upstash Redis entegrasyonu (bölge: Frankfurt) eklenmeli —UPSTASH_REDIS_REST_URL/TOKENolmadan merkezi cache (platform-cache) sessizce devre dışı kalır.
Eski kurulum: beemmb-arge/siteyonetim-web artık kullanılmamalı; karışıklığı önlemek için Vercel panelinden silebilirsiniz (devbeemmb projesine dokunmayın).
Canlı demo giriş (seed sonrası): admin@demo.local / Demo123!
npm run dev # geliştirme
npm run build # production build
npm run db:generate # Prisma client
npm run db:migrate # migrate dev (FAZ 1.1: party/occupancy migration)- Apartman oluştur → Detay ile apartmana gir.
- Bloklar / Daireler sekmelerinden yapı tanımla.
- Kişiler sekmesinde malik/kiracı kartı oluştur, Portal erişimi ile giriş tanımla (min. 8 karakter şifre).
- Atamalar sekmesinde daire ↔ kişi (malik/kiracı) eşle.
Malik/kiracı: /tr/portal/login → atanan daireler listelenir.
- Apartman detayında Finans → ilk girişte mali dönem ve varsayılan gelir/gider kalemleri oluşur.
- Kasa sekmesinde kasa tanımla.
- Cari sekmesinde malik/tedarikçi cari kartları aç (isteğe bağlı kişi bağlantısı).
- Gelir / gider sekmesinde fiş kaydet (kasa ve/veya cari); kasa bakiyesi ve cari bakiye transactional güncellenir.
- Dönem sonunda Dönemi kapat (kapalı döneme yeni fiş yazılamaz).
- Aidat ekranında tanım oluştur (sabit veya m²).
- Yıl/ay seçerek tahakkuk oluştur, ardından kesinleştir (cari borç yazılır).
- En az bir kasa tanımlı olmalı; Manuel tahsilat ile otomatik mahsup.
- Borç sekmesinde yaşlandırma; malik portalında ekstre ve açık borç.