GeoPod

Flutter Dart

GitHub GitHub License Flutter Version Last Updated GitHub commit activity (dev) GitHub Issues Build Installers

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:

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.

Map Screen Darwin

Map Screen Darwin

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.
widgets/map/fullscreen_toggle_button
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.
widgets/map/map_floating_buttons
Map floating action buttons widget.
widgets/map/map_overlay_buttons
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.