Welcome to the WayfarerMobile Developer Guide. This documentation provides comprehensive information for developers working on or contributing to the Wayfarer Mobile application.
WayfarerMobile is a .NET MAUI cross-platform mobile application for location tracking, trip management, and group location sharing. It targets Android and iOS platforms with a focus on reliable background location tracking, offline capabilities, and turn-by-turn navigation.
| Section | Description |
|---|---|
| Development Setup | Environment setup, prerequisites, and build instructions |
| Architecture | System architecture, project structure, MVVM patterns |
| Services | Core services documentation and responsibilities |
| API Integration | Backend API communication, endpoints, authentication |
| Testing | Test framework, running tests, testing strategies |
| Security | Security implementation, data protection, authentication |
| Contributing | Contribution guidelines, code style, PR process |
| Category | Technology | Version |
|---|---|---|
| Framework | .NET MAUI | 10.0 |
| Runtime | .NET | 10.0 |
| Maps | Mapsui | 5.0.0 |
| UI Components | Syncfusion MAUI Toolkit | 1.0.8 |
| MVVM | CommunityToolkit.Mvvm | 8.4.0 |
| Database | SQLite-net-pcl | 1.9.172 |
| QR Scanning | ZXing.Net.MAUI | 0.4.0 |
| HTTP | Microsoft.Extensions.Http | 10.0.0 |
| Resilience | Polly | 8.5.2 |
| Logging | Serilog | 4.2.0 |
| Platform | Minimum Version | Target Version |
|---|---|---|
| Android | API 24 (Android 7.0) | Latest |
| iOS | 15.0 | Latest |
Note: Windows and macOS are not supported. The application is designed specifically for mobile devices with GPS capabilities.
- Background Location Tracking: 24/7 location tracking using platform-native foreground services
- Offline Maps: Download trip areas for offline use with SQLite tile caching
- Turn-by-Turn Navigation: OSRM-based routing with audio announcements
- Group Location Sharing: Real-time location sharing via Server-Sent Events (SSE)
- PIN Security: Optional app lock with salted SHA256 PIN hashing
- Timeline History: View and manage location history synchronized with the server
- Source Code:
src/WayfarerMobile/- Main MAUI project - Core Library:
src/WayfarerMobile.Core/- Platform-agnostic code - Tests:
tests/WayfarerMobile.Tests/- Unit tests - Documentation:
docs/- Design specs and reference documentation
- Setup Development Environment - Follow Development Setup
- Understand Architecture - Review Architecture
- Explore Services - Study Services
- Run Tests - See Testing
- Contribute - Follow Contributing
WayfarerMobile Solution
|
+-- WayfarerMobile.Core (Pure C#, no MAUI dependencies)
| +-- Models
| +-- Interfaces
| +-- Algorithms
| +-- Enums
|
+-- WayfarerMobile (MAUI Application)
| +-- Platforms/
| | +-- Android/
| | | +-- Services/LocationTrackingService.cs
| | | +-- Services/LocationBridge.cs
| | +-- iOS/
| | +-- Services/LocationTrackingService.cs
| | +-- Services/LocationBridge.cs
| +-- Services/
| +-- ViewModels/
| +-- Views/
| +-- Data/
| +-- Shared/
|
+-- WayfarerMobile.Tests (xUnit Tests)
- MVVM Strict: All business logic in ViewModels, Views contain only UI-specific code
- Service Owns GPS: The foreground service directly owns GPS acquisition and filtering
- Single Source of Truth: LocationBridge pattern for cross-platform location communication
- Offline First: Local SQLite storage with server synchronization
- XML Documentation: All public APIs documented with XML comments
For questions or issues, please refer to:
- Troubleshooting Guide
- FAQ
- Project issues on the source repository