I've been building business directory apps for local clients and decided to document the architecture and package it as a reusable starter kit for other developers.
The Stack
- Backend: Laravel 11 REST API
- Frontend: Flutter PWA + Android
- Maps: OpenStreetMap via flutter_map (no Google Maps API key needed)
- Database: MySQL with full-text search and Haversine geolocation
How it works
The API handles two types of users: admin and capturista (data entry operator). Capturistas capture business listings which go into a pending state. Admins review and approve or reject them before they appear publicly.
Authentication uses custom tokens stored in a tokens_sesion table — no Sanctum overhead for a simple use
Top comments (0)