VMaps is a professional, open-source maps application for Linux desktop built with Flutter. It features a stunning glassmorphic dark UI, real-time place search, route planning, and favorites management — all powered by free and open-source map services.
| Feature | Description |
|---|---|
| 🗺️ Interactive Map | Smooth pan, zoom, and tap interactions powered by OpenStreetMap |
| 🔍 Place Search | Search any location worldwide with live results via Nominatim API |
| 🛣️ Route Planning | Calculate driving routes between two points with distance & time estimates (OSRM) |
| ⭐ Favorites | Save and manage your favorite places with local persistent storage |
| 🎨 4 Map Layers | Switch between Standard, Dark, Topographic, and Humanitarian tile styles |
| 📍 Custom Markers | Animated markers with glow effects and glassmorphic labels |
| 🔄 Reverse Geocoding | Tap anywhere on the map to get the address of that location |
| 🏙️ Quick Jump | Instantly navigate to major cities from the settings panel |
| 🖥️ Desktop Optimized | Designed specifically for Linux desktop with proper window controls |
VMaps uses a glassmorphic dark theme with:
- Frosted glass panels with backdrop blur
- Subtle hover animations and micro-interactions
- A clean sidebar navigation system
- Responsive layout optimized for desktop screens
VMaps follows Clean Architecture principles with the BLoC pattern for state management:
lib/
├── domain/ # Business logic layer
│ ├── entities/ # PlaceEntity, RouteEntity
│ └── repositories/ # MapRepository interface
├── data/ # Data access layer
│ ├── models/ # PlaceModel, RouteModel
│ ├── datasources/ # Nominatim, OSRM, LocalStorage
│ └── repositories/ # MapRepositoryImpl
├── application/ # State management layer
│ ├── map/ # MapBloc (camera, zoom, markers, layers)
│ ├── search/ # SearchBloc (live search with debounce)
│ ├── route/ # RouteBloc (route calculation)
│ └── favorites/ # FavoritesBloc (saved places)
├── presentation/ # UI layer
│ ├── pages/ # MapsPage
│ └── widgets/ # MapView, SearchPanel, RoutePanel, etc.
└── core/ # Shared utilities
├── consts/ # MapConstants (tile URLs, defaults)
└── theme/ # MapStyles, VaxpTheme
| Technology | Purpose |
|---|---|
| Flutter | Cross-platform UI framework |
| flutter_map | Map rendering (vendor-free, pure Flutter) |
| flutter_bloc | State management (BLoC pattern) |
| OpenStreetMap | Map tiles |
| Nominatim API | Place search & reverse geocoding |
| OSRM API | Route calculation |
| SharedPreferences | Local favorites storage |
| latlong2 | Geographic coordinate handling |
- Flutter SDK 3.7.0 or later
- Linux development dependencies:
sudo apt install clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev
# Clone the repository
git clone https://github.com/vaxpapps/vmaps.git
cd vmaps
# Get dependencies
flutter pub get
# Run in development mode
flutter run -d linux
# Build release binary
flutter build linux --releaseThe release binary will be at: build/linux/x64/release/bundle/vmaps
- Click the Search icon in the sidebar
- Type a place name — results appear automatically after 500ms
- Click a result to navigate the map to that location
- Click the Routes icon in the sidebar
- Click on the map to set the origin point
- Click again to set the destination point
- Press "Calculate Route" to see the path, distance, and estimated time
- Tap on the map or search for a place
- Click "Save" on the place info card
- Access saved places anytime from the Favorites icon in the sidebar
- Swipe left on a favorite to remove it
- Click the layers button (bottom-right controls)
- Choose from: Standard, Dark, Topographic, or Humanitarian
- Quick Jump — Navigate instantly to major cities
- Reset Map — Return to the default view
- Map data © OpenStreetMap contributors
- Search powered by Nominatim
- Routing powered by OSRM
- Built with the VAXP template