GeoPod
GeoPod is a solidui based demonstrator app utilising a map-based interface to location oriented data. Location data is stored in your own encrypted personal online datastore (Pod) hosted in your Data Vault on a Solid Server. The location based data is displayed through a map interface. The points of interest represented as locations are shared with a user of the app through secure, private, encrypted Solid Pods by the custodian of the knowledge. Within the map interface when a point of interest is tapped the data/text associated with that point is displayed. The app was developed by the ANU Software Innovation Institute and written by Graham Williams.
If you appreciate the app then please show some ❤️ and star the GitHub Repository to support the project.
The latest version of the app can be run online at geopod.solidcommunity.au with no installation required, or downloaded and installed for your platform from the Solid Community AU repository:
- Web solidcommunity;
- GNU/Linux deb or zip;
- Windows zip or inno.
Contributions are welcome. Visit github to submit an issue or, even better, fork the repository yourself, update the code, and submit a Pull Request. The app is implemented in Flutter using solidpod for Flutter to manage the Solid Pod interactions. Thank you.
Introduction
Currently as of 20251121 the app utilises the solidui package to log into a solid server and to provide the scaffolding for the app. Once logged in you are presented with a simple map interface. Once Pods are incorporated the app will retrieve points of interest that you have access to through your Pod.


MacOS/iOS
This project uses a human readable project.yml in macos and ios folders, where
Xcode build configuration files are generated automatically with
xcodegen generate. To alter the build configuration for macos or ios, edit
project.yml in macos/ios folder, re-run xcodegen to generate updated build
configuration and update native pods with pod install, before building or
running the flutter app. The script update_project.sh performs these steps
and aligns Podfile with Xcode build config, so after a build config change, do:
bash update_project.sh [macos/ios]
flutter run [--debug -d macos]
Time-stamp: <Friday 2026-01-02 19:07:50 +1100 Graham Williams>
Libraries
- app
- The primary MaterialApp widget.
- app_scaffold
- The primary app scaffold with navigation menu.
- constants/app
- App-wide constants.
- constants/example_places_data
- Built-in example places data compiled directly into the application.
- home
- The application's home page.
- main
- Define the main entry point for the app.
- models/hourly_weather_data
- Hourly weather data model for historical and forecast data.
- models/place
- Data model representing a saved place.
- models/pod_file_item
- Data model for POD file items.
- models/weather_data
- Weather data model for Open-Meteo API.
- services/fullscreen_service
- Service for managing fullscreen mode state.
- services/gdelt_news_service
- GDELT News Service for fetching geospatial news data.
- services/geocoding_service
- Geocoding service using OpenStreetMap Nominatim API.
- services/location_service
- Location service for getting user's current position.
- services/map_settings_pod
- POD file operations for map settings.
- services/map_settings_service
- Service for managing map display settings with persistence.
- services/map_source
- Map tile source definitions and extensions.
- services/places/encrypted_places_io
- I/O operations for encrypted places data.
- services/places/encrypted_places_paths
- Path management for encrypted places storage.
- services/places/encrypted_places_service
- Service for managing encrypted places data in the user's Solid Pod.
- services/places/places_cache_manager
- In-memory cache manager for instant access to places data.
- services/places/places_cache_persistence
- Persistence service for places cache using SharedPreferences.
- services/places/places_import_export
- Import and export functionality for places data.
- services/places/places_pod_file
- POD file operations for places service.
- services/places_service
- Service for managing places data in the user's Solid Pod.
- services/pod/pod
- POD services barrel file for GeoPod.
- services/pod/pod_auth
- POD authentication utilities for GeoPod.
- services/pod/pod_directory_service
- POD directory listing service for GeoPod.
- services/pod/pod_file_system
- POD file system operations for GeoPod.
- services/pod/pod_http
- POD HTTP client for GeoPod.
- services/pod/pod_path
- POD path utilities for GeoPod.
- services/weather_service
- Weather service using Open-Meteo API.
- utils/is_desktop
- Check if we are running a desktop (and not a browser).
- utils/ui_utils
- Common UI utilities for showing dialogs and snackbars.
- utils/widget_utils
- Common utilities for widget state management.
- widgets/add_place_form
- Form widget for adding a new place to the user's Solid Pod.
- widgets/encryption/security_key_dialog
- Security key dialog widget for encrypted data access.
- widgets/files_page
- Widget for files page with login check.
- widgets/geomap
- The primary map widget.
- widgets/hourly_weather_chart
- Widget for displaying hourly weather chart.
- widgets/locations/detail_row
- A simple detail row widget.
- widgets/locations/edit_import_place_dialog
- Dialog for editing a place during import preview.
- widgets/locations/edit_place_dialog
- Dialog for editing a place's lat, lng, and note.
- widgets/locations/import_format_dialog
- Dialog showing the expected JSON format for importing places.
- widgets/locations/import_operations
- Import operations and dialogs for LocationsPage.
- widgets/locations/import_preview_dialog
- Dialog showing a preview of places to be imported with edit/delete capabilities.
- widgets/locations/locations_page_header
- Locations page header widget.
- widgets/locations/locations_page_views
- Empty and error state widgets for locations page.
- widgets/locations/place_list_tile
- A list tile widget for displaying a single user place.
- widgets/locations/place_operations
- Place operations handlers for LocationsPage.
- widgets/locations_page
- Widget displaying saved locations from the user's Solid Pod.
- widgets/map/delete_place_handler
- Delete place handler for GeoMap.
- Fullscreen toggle button overlay widget.
- widgets/map/geomap_action_handlers
- User action handlers for GeoMap (add, save, delete places).
- widgets/map/geomap_builders
- UI builders for GeoMap widget.
- widgets/map/geomap_core
- Core map widget builder for GeoMapWidget.
- widgets/map/geomap_encrypted_places_loader
- Encrypted places management for GeoMap.
- widgets/map/geomap_event_handlers
- Event handlers for GeoMap authentication and data changes.
- widgets/map/geomap_initialization
- Initialization and lifecycle management for GeoMap.
- widgets/map/geomap_news_logic
- News-related logic for GeoMapWidget.
- widgets/map/geomap_news_mixin
- News-related state and methods mixin for GeoMapWidget.
- widgets/map/geomap_place_handlers
- Place save/delete handlers for GeoMapWidget.
- widgets/map/geomap_places_loader
- Place loading and encrypted places handling for GeoMap.
- widgets/map/geomap_settings
- Settings loading and validation logic for GeoMap.
- widgets/map/geomap_settings_loader
- Settings loading and validation for GeoMap.
- widgets/map/geomap_state_logic
- State management logic for GeoMapWidget.
- widgets/map/geomap_state_mixin
- State management for GeoMap widget.
- widgets/map/geomap_viewport_logic
- Viewport-related logic for GeoMapWidget.
- widgets/map/login_required_dialog
- Login required dialog for GeoMap.
- Map floating action buttons widget.
- Map overlay buttons widget.
- widgets/map/map_tile_layer
- Map tile layer widget for GeoMap.
- widgets/map/marker_data
- Data model for a map marker.
- widgets/map/marker_details_sheet
- Bottom sheet for displaying marker details.
- widgets/map/marker_with_animation
- Animated marker widget with delayed entrance animation.
- widgets/map/news_list_dialog
- Dialog for displaying a list of news in the current map view.
- widgets/map/news_marker_details_sheet
- Bottom sheet and dialog for displaying news marker details.
- widgets/map/news_marker_layer
- News marker layer widget for GeoMap.
- widgets/map/news_operations
- News marker operations for GeoMapWidget.
- widgets/map/place_save_handler
- Place save handler for optimistic saving with background updates.
- widgets/map/places_marker_layer
- Places marker layer widget for GeoMap.
- widgets/map/user_location_marker_layer
- User location marker layer widget for GeoMap.
- widgets/map_settings_dialog
- Dialog for configuring map display settings.
- widgets/pod/file_list_tile
- File list tile widget with animation support.
- widgets/pod/file_type_helpers
- Helper functions for file type detection, icons, and descriptions.
- widgets/pod/pod_browser_layouts
- Layout widgets for POD file browser.
- widgets/pod/pod_dialogs
- Dialog utilities for POD file browser.
- widgets/pod/pod_file_browser
- POD file browser widget for browsing files in the POD.
- widgets/pod/pod_file_list
- POD file list widget for displaying files and directories.
- widgets/pod/pod_file_preview
- POD file preview widget for viewing file contents.
- widgets/settings/color_picker_tile
- A tile widget for displaying and selecting a color.
- widgets/settings/encryption_key_operations
- Encryption key operations for settings dialog.
- widgets/settings/settings_actions
- Action buttons for map settings dialog.
- widgets/settings/settings_sections
- Settings sections for map settings dialog.
- widgets/settings/viewport_selector
- Widget for selecting initial viewport location with presets.
- widgets/weather/pdf_chart_painter
- PDF chart painting functionality.
- widgets/weather/pdf_data_table
- PDF data table builder for weather data.
- widgets/weather/pdf_document_builder
- PDF document builder for weather reports.
- widgets/weather/pdf_download_stub
- Platform-specific PDF download stub for non-web platforms.
- widgets/weather/pdf_download_web
- Platform-specific PDF download implementation for web.
- widgets/weather/pdf_dual_chart_painter
- PDF dual-line chart painting functionality for max/min values.
- widgets/weather/pdf_export_handler
- Platform-specific PDF export handling.
- widgets/weather/pdf_utils
- Utility functions for PDF generation.
- widgets/weather/weather_chart_builder
- Chart widget builders for weather data visualization.
- widgets/weather/weather_chart_config
- Configuration constants for weather charts.
- widgets/weather/weather_chart_data_card
- Daily weather data card widget.
- widgets/weather/weather_chart_data_processor
- Data processing utilities for weather charts.
- widgets/weather/weather_chart_dual_painter
- Custom painter for dual-line weather chart (e.g., max/min temperature).
- widgets/weather/weather_chart_empty_state
- Weather chart empty state widget.
- widgets/weather/weather_chart_header
- Weather chart header widget.
- widgets/weather/weather_chart_helpers
- Helper functions for weather chart data type handling.
- widgets/weather/weather_chart_painter
- Custom painter for weather chart.
- widgets/weather/weather_chart_pdf
- PDF export functionality for weather chart.
- widgets/weather/weather_chart_range_indicator
- Weather chart data range indicator widget.
- widgets/weather/weather_chart_sampling
- Data sampling algorithms for weather chart.
- widgets/weather/weather_date_selector
- Weather date range selector for historical weather.
- widgets/weather/weather_detail_builders
- Weather detail builders for weather dialog.
- widgets/weather/weather_view_widgets
- Weather view widgets for weather dialog.
- widgets/weather_dialog
- Weather info dialog widget.