Skip to content

5. Property & Municipality Portal

5.1 Architecture

graph TD
  subgraph APP["📱 KRG Property App — Flutter 3.x"]
    direction LR
    SEARCH["🔍 Property\nSearch"] ~~~ TRANSFER["🏠 Transfer\nRequests"] ~~~ PERMIT["📋 Building\nPermits"]
    MAP["🗺️ GIS\nMap Viewer"] ~~~ PAY["💳 Payments\n& Fees"] ~~~ DOCS["📄 Document\nVault"]
    TRACK["📊 Application\nTracker"] ~~~ NOTIF["🔔 Notif.\nCenter"]
  end

  subgraph CORE["Flutter Core"]
    direction LR
    RVP["Riverpod 2.x"] ~~~ HIVE["Hive / Isar"] ~~~ DIO["Dio + Interceptors"] ~~~ SEC["Secure Storage"]
  end

  APP --> CORE
  CORE --> BFF["⚡ BFF Layer — Laravel 13 (PHP 8.4)\nAggregates APIs · Formats for Mobile/Web"]
  BFF --> KONG["🚪 Kong API Gateway"]
  KONG --> MS["Property Microservices"]

5.2 Mobile App Features

Module Description Tech
Property Search Search by address, owner, parcel ID; view property details Meilisearch + PostGIS
GIS Map Viewer Interactive map with parcel boundaries, zoning layers, satellite imagery OpenLayers + GeoServer tiles
Transfer Requests Initiate buy/sell, track progress, upload documents, digital signatures Camunda BPMN workflow
Building Permits Apply for construction/renovation permits, upload plans, track review Dynamic forms (JSON Schema)
Payments & Fees Pay transfer tax, permit fees, property tax; view receipts FIB, Qi, NassPay, AsiaPay, FastPay
Document Vault Store title deeds, permits, building plans, contracts Encrypted MinIO + local cache
Application Tracker Real-time status of all submitted applications WebSocket push updates
Notifications Push notifications for status changes, payment reminders, deadlines ntfy/UnifiedPush + APNs/FCM (delivery only)
Appointments Book, reschedule for in-person services (inspections, disputes) Calendar + push reminders
Rental Registry Register/lookup rental contracts, tenant info Laravel CRUD service

5.3 Web Portal

Layer Technology
Framework Next.js 14+ (React 18, App Router)
UI Library Tailwind CSS 4 + Shadcn/UI + Radix Primitives
Map Component OpenLayers 9 with GeoServer tile layers
State Management Zustand + TanStack Query
Forms React Hook Form + Zod validation
i18n next-intl (Kurdish Soranî, Kurdish Kurmancî, Arabic, English)
RTL Support Tailwind RTL plugin + CSS logical properties
Auth NextAuth.js v5 → Keycloak OIDC

Web-Specific Features

  • Full cadastral map viewer with layer controls (parcels, zoning, buildings, addresses)
  • Bulk property search for agents and legal professionals
  • Side-by-side document comparison for transfer reviews
  • Print-ready title deed and certificate generation

5.4 Admin Dashboard (Municipality Staff)

Layer Technology
Framework Laravel 13 (PHP 8.4) — Filament 3 Admin Panel
Frontend Livewire 3 + Alpine.js + Tailwind CSS
Workflow Engine Camunda 8 (BPMN) embedded via API
Map Admin OpenLayers + GeoServer admin for parcel editing
Reports Laravel Excel + Metabase embeds
Audit Logging Spatie Activity Log + Kafka producer
Permissions Spatie Laravel-Permission + Keycloak sync

Admin Dashboard Modules

Module Description
Application Queue View, assign, process incoming applications (transfers, permits, valuations)
Property Management Create, edit, merge/split properties; manage ownership records
Parcel Editor Edit parcel boundaries on GIS map; approve subdivision requests
Inspection Scheduler Assign inspectors, schedule field visits, review inspection reports
Valuation Panel Run ML-assisted valuations, override with manual assessment
Reporting Transaction volumes, processing times, revenue, pending cases
Citizen Communication Send notifications, respond to inquiries, manage appointments