ParkLocator
Mall parking reservations for Cebu with PostGIS search and lock-safe booking across three apps.
2025Flutter, Dart, NestJS, Angular, PostGIS
Problem
Existing parking apps are either too generic (Google Maps) or lack proper admin tools and spatial querying. A dedicated platform was needed with a mobile app for users to find nearby parking spots, an API with geospatial search, and an admin portal for parking spot management.
Constraints
- Monorepo must keep three apps (Flutter, NestJS, Angular) independently buildable
- PostGIS spatial queries for radius-based parking spot search
- Docker Compose for database, must support Apple Silicon (ARM64) via emulation
- Each app must have independent test suites
Key Decisions
- Flutter over React Native
Needed a cross-platform mobile framework with strong performance for map rendering and geolocation to display parking spots.
Chose Flutter for its native performance, rich widget library, and strong geolocation/maps ecosystem (Very Good CLI for project structure).
Trade-off: Dart learning curve vs JavaScript familiarity, but better performance for map-heavy UI and type safety built into the language. - NestJS over Express for the API
API needs structured patterns for auth, validation, and module separation as it grows.
Used NestJS for its opinionated architecture with dependency injection, decorators, and built-in validation pipes.
Trade-off: More boilerplate than Express, but enforced structure prevents code organization problems at scale. - PostGIS over application-level geospatial calculations
Parking spot search requires efficient radius queries and spatial indexing.
Used PostGIS extension for PostgreSQL to handle spatial queries natively with GiST indexes.
Trade-off: Requires PostGIS-specific Docker image and spatial SQL knowledge, but orders of magnitude faster than application-level distance calculations.
- Role
- Sole engineer
- Timeline
- Dec 2025 - Feb 2026
- Stack
- Flutter, Dart, NestJS, Angular, PostGIS, PostgreSQL, Docker, TypeScript