BrokeMap is an Android application designed to help users discover nearby places and activities on a map while focusing on budget-oriented filters.
The app retrieves business and activity data from a custom backend API, then displays the results on Google Maps with markers and filtering tools adapted to each place category.
This repository contains the Android client.
The mobile app is connected to:
- a custom backend API built with FastAPI
- a PostgreSQL 15 database
- a Dockerized deployment for the backend stack
- the Google Maps Android SDK for map rendering and markers
- display nearby places on an interactive Google Map
- show markers for multiple place categories
- filter places by type
- filter places with budget-related criteria
- display detailed information returned by the API
- request and use the device location
- preload and cache business details for a smoother browsing experience
From the codebase, the main supported categories include:
- bars
- restaurants
- fast food places
- museums
- benches / low-cost public spots
- Kotlin
- Jetpack Compose
- Google Maps Compose
- Retrofit + Gson
- Android ViewModels and state flows
- DataStore
- FastAPI backend
- PostgreSQL 15
- Docker
app/src/main/java/fr/nebulo9/brokemap/: Android application source codeapp/src/main/java/fr/nebulo9/brokemap/api/: API client and Retrofit servicesapp/src/main/java/fr/nebulo9/brokemap/models/: ViewModels and state managementapp/src/main/java/fr/nebulo9/brokemap/services/: Android services such as location handlingapp/src/main/java/fr/nebulo9/brokemap/ui/: Compose UI, screens, filters, and themeapp/src/main/res/: icons, styles, map resources, and Android resourcessecrets.example.properties: example file for local API keys
At a high level, the workflow is the following:
- The app initializes its Retrofit client and Google Maps configuration.
- It requests location permission from the user.
- It loads businesses from the backend API.
- It preloads category-specific details when needed.
- It displays places as map markers.
- It applies client-side filters based on selected criteria.
- It shows a details sheet for a selected place.
This makes the project a good example of:
- API consumption on Android
- map-based UI design
- filtering geolocated business data
- integration between a mobile frontend and a custom backend
- Android Studio
- a recent Android SDK
- a Google Maps Platform API key
- access to the backend API used by the app
The project uses a secrets.properties file for local secrets.
Use the provided template:
MAPS_API_KEY=YOUR_GOOGLE_MAPS_API_KEY- This repository focuses on the Android application layer.
- The backend API, database, and Docker deployment are part of the overall system architecture, but are not included in this repository.
- building an Android app with Jetpack Compose
- integrating Google Maps into a custom mobile UI
- consuming a REST API with Retrofit
- handling user location and map-centered discovery
- implementing domain-specific filters around place type and price-related criteria
- structuring a project around UI, services, API access, and state management