Kronos
En multi-tenant geospatial projektledelsesplatform til byggedokumentation med interaktive kort, tidslinjevisualisering og capture-workflows.
Ydelser
Teknologier
Udfordringen
Byggeteams står over for betydelige udfordringer med at håndtere byggedokumentation effektivt:
- Mangel på geospatial kontekst: Traditionelle projektledelsesværktøjer integrerer ikke geografisk information, hvilket gør det svært at knytte fotos, problemer og milepæle til specifikke lokationer på en byggeplads
- Fragmenteret tidslinjetracking: Ingen måde at visualisere hvordan et projekt udvikler sig over tid gennem luftfotos, billeder og færdiggjorte milepæle
- Friktion med eksterne interessenter: Underentreprenører og feltarbejdere har brug for enkle måder at uploade dokumentationsfotos uden at oprette konti eller lære kompleks software
- Afkoblet problemhåndtering: Defekter og kvalitetsproblemer går tabt uden geografisk lokalisering og ordentlige workflows til indsamling af dokumentation
Vores Tilgang
Vi designede Kronos som en omfattende platform, der kombinerer geospatial intelligens med intuitiv projektledelse:
- Geospatial-first arkitektur: Bygget på PostGIS og GeoDjango med Cloud Optimized GeoTIFF (COG) support, der muliggør high-performance kortrendering gennem TiTiler
- Event-drevet backend: Implementerede et transaktionelt outbox-mønster for pålidelig, afkoblet event-levering på tværs af systemet
- Polymorf ressourcemodel: Designede et Class Table Inheritance-mønster, der understøtter 7+ ressourcetyper (kort, medier, features, milepæle, dokumenter) med et samlet query-interface
- Multi-tenant isolation: Komplet organisation-niveau dataseparation med rollebaseret adgangskontrol, brugerdefinerede kvoter og admin-impersonation til support
- Capture link-system: Sikre, tokeniserede upload-links, der kan sendes via SMS/WhatsApp til eksterne interessenters fotoindsamling
Nøglefunktioner
- Interaktivt Kortarbejdsrum: Laghåndtering, grænsedigering, ressource-pins og sværhedsgrad-kodede problemmarkører med MapLibre GL JS
- Tidslinjevisualisering: Se projekter udvikle sig over tid med afspilningskontroller (1x-30x hastighed), zoombare baner og minimap-navigation
- Capture Workflows: Generer tidsbegrænsede, geo-afgrænsede upload-links til eksterne brugere—ingen autentificering påkrævet
- Problemsporing: Geografisk-bevidst defekthåndtering med sværhedsgrader, dokumentationsindsamling og aktivitetslogning
- Review Workflows: Batch-godkendelse/afvisning af uploadede fotos med per-element beslutningssporing
- Ressourcebibliotek: Centraliseret asset management med SHA-256 deduplikering, soft delete og detaljerede audit trails
- Smart Tags: Hierarkisk, farvekodede tagging-system med brugerdefinerede ikoner og bulk-operationer
- Multi-kanal Notifikationer: In-app og email notifikationer med deep linking til relaterede entiteter
Resultater
Leverede platformkapabiliteter:
- 326+ React-komponenter med fuld TypeScript-dækning
- 43 API ViewSets der driver et omfattende REST API
- 7 polymorfe ressourcetyper samlet under et enkelt query-interface
- 38 custom UI-komponenter (ingen eksterne komponentbiblioteksafhængigheder)
- 23 modulære CSS-filer refaktoreret fra en 2.470-linjers monolit
Teknisk Arkitektur
En moderne full-stack arkitektur optimeret til geospatiale workloads og real-time samarbejde:
| Lag | Teknologier | |-----|-------------| | Frontend | React 19, TypeScript, Vite, Tailwind CSS v4, MapLibre GL JS, Zustand, React Query, React Router 7 | | Backend | Django 5.0, Django REST Framework, GeoDjango, Celery, Redis | | Database | PostgreSQL 16 med PostGIS 3.4 til spatiale forespørgsler | | Infrastruktur | Docker, TiTiler (COG tile serving), MinIO/Cloudflare R2 (S3-kompatibel storage) | | Integrationer | Supabase Auth, Stripe (betalinger), Twilio (SMS/WhatsApp), Resend (email) |
Tekniske Højdepunkter
Event-Drevet Arkitektur: Transaktionel outbox-mønster sikrer, at ingen events går tabt under behandling. Events skrives til databasen i samme transaktion som forretningsdata, derefter asynkront dispatched via Celery workers med retry-logik og dead-letter queuing.
Geospatial Pipeline: Brugeruploads flyder gennem GDAL/Rasterio-behandling til Cloud Optimized GeoTIFFs, lagret i S3-kompatibel storage, derefter serveret som XYZ tiles gennem TiTiler til MapLibre GL JS på frontend.
Class Table Inheritance: En polymorf ressourcemodel tillader samlede queries på tværs af alle ressourcetyper mens type-specifikke udvidelser bevares—muliggør funktioner som
Resource.objects.maps()sammen medResource.objects.all().
Skærmbilleder


