

İki adet Next.js 16 uygulamasını (3000 portunda genel portal ve 3001 portunda yönetim paneli) ve 13 paylaşımlı dahili paketi birleştiren bir Turborepo monorepo mimarisi geliştirildi. PostgreSQL üzerinde depolanan ve anında düzenlenebilen %100 dinamik CMS; Supabase Realtime ile 250-1000ms aralığında gerçek zamanlı senkronizasyon; Supercluster ile MapLibre GL etkileşimli harita keşfi; İngilizce, Arapça (RTL ve Cairo fontu) ve Türkçe tam uyumluluk; kesintisiz çevrimdışı yedek veri katmanı; ve pgcrypto bcrypt parola denetimleri ile Kurumsal Güvenlik Merkezi sağlandı.
Geleneksel gayrimenkul portalları ciddi mimari sınırlamalarla karşılaşmaktadır: her ilan ve banner değişikliği için yazılımcı müdahalesi gerektiren statik tasarımlar; danışman ilanları ile ziyaretçi aramaları arasında gecikmelere yol açan yavaş veri güncellemeleri; müşteri portalı ile yönetim panelini ayrıştıran parçalı kod yapıları; yetersiz çok dilli ve Arapça RTL desteği; kaba kuvvet koruması ve adli denetim kayıtlarından yoksun zayıf yönetim güvenliği.
İki adet Next.js 16 uygulamasını (3000 portunda genel portal ve 3001 portunda yönetim paneli) ve 13 paylaşımlı dahili paketi birleştiren bir Turborepo monorepo mimarisi geliştirildi. PostgreSQL üzerinde depolanan ve anında düzenlenebilen %100 dinamik CMS; Supabase Realtime ile 250-1000ms aralığında gerçek zamanlı senkronizasyon; Supercluster ile MapLibre GL etkileşimli harita keşfi; İngilizce, Arapça (RTL ve Cairo fontu) ve Türkçe tam uyumluluk; kesintisiz çevrimdışı yedek veri katmanı; ve pgcrypto bcrypt parola denetimleri ile Kurumsal Güvenlik Merkezi sağlandı.
Ziyaretçi ekranlarına bir saniyenin altında yansıyan içerik güncellemeleri (~250–1000ms), metin kayması yaşanmayan %100 RTL ve çok dilli kararlılık, akıcı 60fps vektör harita kümelemesi, çevrimdışı mod sayesinde sıfır kesinti ve kurumsal düzeyde denetim izleme güvenliği başarıyla sağlandı.
Çift Uygulama Mimarisi: Yüksek performanslı genel portal (apps/website) ve kapsamlı yönetim paneli (apps/admin) tek bir Turborepo monorepoda
13 Paylaşımlı Dahili Paket: @workspace/ui, maps, branding, i18n, lib, database, types, constants, config, hooks ve utils için modüler alan ayrımı
%100 Dinamik CMS Motoru: Sıfır sabit kodlu metin; @dnd-kit ile sürükle-bırak görsel anasayfa bölüm oluşturucu ve anlık görünürlük anahtarları
Gerçek Zamanlı Senkronizasyon: 250ms gecikmeli akıllı yenileme ile genel ziyaretçi ekranlarını canlı tutan Supabase Realtime dinleyicileri
Etkileşimli Harita Gezgini (/explore): Supercluster kümeleme, özel fiyat hapı işaretçileri ve senkronize ilan listesi sunan tam ekran MapLibre GL motoru
Eksiksiz Üç Dilli ve RTL Desteği: Base UI DirectionProvider ile İngilizce, Arapça (RTL ve Cairo yazı tipi) ve Türkçe arasında kesintisiz geçiş
Finansman ve Satın Alma Maliyetleri Hesaplayıcı: Faiz ve vade kaydırıcıları içeren etkileşimli konut kredisi ve tapu/noter masrafları dökümü
Kurumsal Güvenlik Merkezi: Singleton güvenlik ayarları, pgcrypto bcrypt parola tekrarı engelleme, kaba kuvvet hesap kilitleme ve oturum sonlandırma
Kapsamlı CRM Talep Yönetimi: Atama, notlar ve iletişim geçmişi içeren çok aşamalı müşteri adayı takip hattı (yeni → incelendi → iletişime geçildi → takip → pazarlık → tamamlandı)
Hiyerarşik Medya Yöneticisi: MIME doğrulaması, 10MB/50MB boyut sınırları ve SHA-256 dosya tekilleştirme sunan çok klasörlü varlık yöneticisi
Dayanıklı Çevrimdışı Veri Katmanı: Veritabanı bağlantısı olmadan tam site gezintisi ve test olanağı tanıyan 260'tan fazla satırlık gerçekçi demo verisi
Next.js 16.2.6 (App Router + Turbopack) ve React 19.2.4 uygulamalarını Tailwind CSS v4 ve Base UI / Shadcn bileşenleriyle buluşturan bir Turborepo monorepo olarak kurgulandı. Veri katmanı 25 sıralı SQL migrasyonu, sıkı Satır Düzeyi Güvenlik (RLS) politikaları ve SECURITY DEFINER RPC fonksiyonlarıyla Supabase (PostgreSQL 15+) tarafından yönetilmektedir.
Next.js 16 uygulamaları arasında döngüsel bağımlılık içermeyen 13 paketli temiz bir Turborepo mimarisi yapılandırmak
Hızlı yönetimsel güncellemeler sırasında tarayıcı performansını korumak için 250ms gecikmeli Supabase Realtime senkronizasyonu kurmak
Arapça sokak ve konum isimlerinin haritada doğru harf birleşimleriyle görünmesi için MapLibre GL ile mapbox-gl-rtl-text eklentisini entegre etmek
PostgreSQL içinde pgcrypto bcrypt ve SECURITY DEFINER fonksiyonları kullanarak sıfır düz metin parola geçmişi ve hesap kilitleme sistemi geliştirmek
Veritabanı bağlantısı bulunmadığında tüm dinamik sorguları şeffafça simüle eden dayanıklı bir çevrimdışı veri katmanı oluşturmak
Kurumsal Monorepo Yönetimi: Çoklu uygulama derlemeleri, paylaşımlı paketler ve birleşik Tailwind v4 tasarım belirteçleri
İleri Düzey PostgreSQL ve RLS: Otomatik denetim kayıtları, parola son kullanma tetikleyicileri ve rol tabanlı erişim denetimi (Sahip/Yönetici/Editör)
Coğrafi Web Uygulamaları: MapLibre GL entegrasyonu, Supercluster algoritma optimizasyonu ve ters coğrafi kodlama ile konum seçici tasarımı
Gerçek Zamanlı Durum Senkronizasyonu: Sunucu taraflı Next.js sayfaları ile istemci taraflı Supabase Realtime soket olaylarını uyumlu hale getirmek
Kapsamlı Uluslararasılaştırma ve RTL: Dinamik font alt kümesi değiştirme, arayüz yönü aynalama ve çok dilli sınıflandırma ağaçları
Ziyaretçiler için birinci sınıf bir gayrimenkul arama deneyimi sunarken emlak ofislerine kod yazmaya gerek kalmadan eksiksiz kontrol sağlayan kurumsal bir dijital platform inşa edildi.
The codebase is organized into 2 standalone Next.js 16 applications and 13 internal shared workspace packages managed via Turborepo:
apps/website: Public Real Estate Portal (Port 3000) featuring listings directory, interactive map explorer, financing calculator, and dynamic homepage
apps/admin: Back-Office Management Portal (Port 3001) with role-based access control, listing editor, CRM pipeline, and Enterprise Security Center
13 Domain Packages: @workspace/ui (Base UI + Tailwind v4), @workspace/maps (MapLibre GL), @workspace/branding (Dynamic theming), @workspace/i18n (Trilingual RTL), @workspace/lib (Queries & Auth), @workspace/database (Supabase schema), @workspace/types, @workspace/constants, @workspace/config, @workspace/utils, @workspace/hooks, @workspace/eslint-config, @workspace/typescript-config
The backend is structured through 25 sequential, idempotent SQL migrations delivering comprehensive data integrity and Row-Level Security (RLS):
Core Schema & Taxonomy: Languages, user roles (owner, admin, editor), categories, locations, amenities, properties, and full-text tsvector search
Dynamic CMS & Versioned Settings: Translations table, site sections, JSONB branding/theme/SEO settings, navigation menus, and testimonials
Row-Level Security (RLS): Public read access for published/visible listings; staff-only write access; Supabase Realtime publications
Storage Buckets & Media Deduplication: Buckets for site assets, property images, and documents with transactional deduplication procedures
Audit Logging & Soft Deletion: Complete audit trails logging user IDs, IP addresses, User-Agents, and JSON diffs, with soft-delete trash recovery
A multi-layered security architecture protects administrative operations, staff credentials, and user data:
Cryptographic Password Reuse Checks: Zero-plaintext password history using pgcrypto crypt() with Blowfish salts inside PostgreSQL
Brute-Force Account Lockout Engine: Automatic lockout after configurable failed attempts with owner-only unlock privileges
Session Revocation & Versioning: Immediate multi-device session invalidation upon password reset by incrementing profile session_version
Role-Based Server Action Guards: Strict authorization gates (requireStaff, requireAdmin, requireOwner) enforcing principle of least privilege
Native multilingual infrastructure supporting English, Arabic (RTL), and Turkish with zero layout anomalies:
Dynamic Locale Routing: Handled via next-intl with URL prefixes (/en, /ar, /tr) and automatic RTL direction switching
Arabic Typography: Automatic subset loading of Google's Cairo font for crisp Arabic readability and balanced vertical metrics
Component Mirroring: Base UI DirectionProvider dynamically mirrors navigation drawers, modal controls, and card layouts
RTL Vector Map Rendering: MapLibre integration with @mapbox/mapbox-gl-rtl-text plugin ensuring proper Arabic script shaping and joining on map labels
Real-time communication and offline resilience guarantee seamless operation under all network conditions:
Supabase Realtime Broadcast: Public portal subscribes to PostgreSQL change events, updating visitor screens in ~250–1000ms without page reloads
Debounced Router Invalidation: Background RealtimeRefresher triggers router.refresh() with 250ms debouncing to prevent re-render cascades
Resilient Offline Fallback Mode: Over 260 lines of realistic mock data allowing complete site navigation, testing, and staging without active database credentials