

Architettato un monorepo Turborepo con 2 applicazioni Next.js 16 (portale pubblico e pannello admin) potenziate da 13 pacchetti interni. Include CMS dinamico al 100% su PostgreSQL; sincronizzazione in tempo reale tramite canali Supabase Realtime (~250–1000ms); esplorazione cartografica interattiva con MapLibre GL e Supercluster; parità trilingue (inglese, arabo RTL con font Cairo, turco); modalità offline fallback con dati dimostrativi realistici; e Centro di Sicurezza Enterprise con pgcrypto bcrypt e blocco account.
I moderni portali immobiliari affrontano sfide critiche: layout rigidi che richiedono l'intervento dello sviluppatore per ogni modifica; lenta propagazione dei dati tra annunci interni e ricerche pubbliche; strutture frammentate tra portale utente e back-office; scarso supporto per la tipografia araba RTL; e sicurezza debole priva di blocco contro attacchi brute-force e registri di controllo forense.
Architettato un monorepo Turborepo con 2 applicazioni Next.js 16 (portale pubblico e pannello admin) potenziate da 13 pacchetti interni. Include CMS dinamico al 100% su PostgreSQL; sincronizzazione in tempo reale tramite canali Supabase Realtime (~250–1000ms); esplorazione cartografica interattiva con MapLibre GL e Supercluster; parità trilingue (inglese, arabo RTL con font Cairo, turco); modalità offline fallback con dati dimostrativi realistici; e Centro di Sicurezza Enterprise con pgcrypto bcrypt e blocco account.
Rilasciato un ecosistema immobiliare pronto per la produzione con aggiornamenti istantanei (~250–1000ms), stabilità tipografica RTL al 100%, clustering vettoriale a 60fps, zero interruzioni grazie al fallback offline e sicurezza amministrativa avanzata.
Architettura a doppia applicazione: Portale pubblico ad alte prestazioni (apps/website) e pannello di controllo admin (apps/admin) in un monorepo Turborepo unificato
13 pacchetti interni condivisi: Netta separazione delle competenze per UI, mappe, branding, i18n, lib, database, tipi e utilità
Motore CMS dinamico al 100%: Zero testo statico; generatore visivo di sezioni drag-and-drop con @dnd-kit e controllo visibilità immediato
Sincronizzazione in tempo reale: Listener Supabase Realtime con aggiornamento intelligente a 250ms per mantenere attivi gli schermi dei visitatori
Mappa interattiva (/explore): Motore a schermo intero MapLibre GL con clustering Supercluster e indicatori prezzo personalizzati
Parità trilingue e RTL: Routing fluido tra inglese, arabo (RTL con font Cairo) e turco con mirroring Base UI
Calcolatore finanziario e costi di acquisto: Ammortamento mutuo interattivo con cursori di interesse e ripartizione dettagliata delle imposte
Centro di Sicurezza Enterprise: Parametri di sicurezza centralizzati, prevenzione riutilizzo password con pgcrypto bcrypt e blocco account
Pipeline CRM per richieste: Gestione lead multi-fase con assegnazione, note interne e storico comunicazioni
Gestore risorse digitali gerarchico: Gestione cartelle con convalida MIME, limiti 10MB/50MB e deduplicazione SHA-256
Livello di fallback offline resiliente: Oltre 260 righe di dati realistici per navigare e testare il sito anche senza connessione al database
Costruito come monorepo Turborepo con applicazioni Next.js 16.2.6 e React 19.2.4 stilizzate con Tailwind CSS v4 e Base UI / Shadcn. Il layer dati è gestito da Supabase (PostgreSQL 15+) tramite 25 migrazioni SQL, criteri Row-Level Security (RLS) e funzioni RPC SECURITY DEFINER.
Progettare un'architettura Turborepo a 13 pacchetti con dipendenze pulite e zero riferimenti circolari
Implementare la sincronizzazione Supabase Realtime con debouncing a 250ms per preservare le prestazioni del browser
Integrare MapLibre GL con il plugin mapbox-gl-rtl-text per visualizzare correttamente i toponimi arabi sulla mappa
Costruire un sistema di sicurezza per password e blocco account direttamente in PostgreSQL tramite pgcrypto bcrypt
Creare un'architettura di fallback offline che simula fedelmente tutte le query in assenza di credenziali Supabase
Architetture Monorepo Enterprise: Gestione di workspace multi-app con Turborepo e design token unificati in Tailwind v4
Sicurezza avanzata PostgreSQL e RLS: Creazione di audit trail, trigger per password e controllo accessi basato sui ruoli
Applicazioni Web Geospaziali: Integrazione MapLibre GL, ottimizzazione Supercluster e selettore coordinate con reverse geocoding
Sincronizzazione di stato Realtime: Armonizzazione delle pagine Next.js SSR con gli eventi WebSocket di Supabase
Ingegneria i18n e RTL avanzata: Gestione dinamica dei font, mirroring direzionale e tassonomie multilingue
Realizzata una piattaforma immobiliare digitale all'avanguardia che unisce ricerca pubblica e gestione amministrativa sicura senza necessità di codice.
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