A beautiful, production-ready mobile application for discovering and navigating hiking trails across Mallorca. Built with Flutter for iOS, Android, and Web.
- Browse and discover hiking trails with beautiful card-based UI
- Filter trails by length, difficulty, location, and weather
- Detailed trail information with elevation profiles
- Interactive maps with offline support
- Real-time GPS tracking during hikes
- Weather forecasts and trail conditions
- Points of interest (restaurants, viewpoints, parking)
- User reviews and ratings
- Personal hiking statistics and history
- Clean Architecture with MVVM pattern
- Offline-first with local caching
- Riverpod for state management
- Smooth 60 FPS animations
- Dark/Light theme support
- Full accessibility (VoiceOver/TalkBack)
- Multiple language support
- App Store & Google Play compliant
- Flutter SDK 3.2.0 or higher
- Dart SDK 3.2.0 or higher
- Xcode 15+ (for iOS development)
- Android Studio / VS Code
- Firebase account
- Clone the repository:
git clone https://github.com/yourusername/mallorca-hikes.git
cd mallorca-hikes- Install dependencies:
flutter pub get- Set up environment variables:
cp .env.example .env
# Edit .env with your API keys- Run code generation:
flutter pub run build_runner build --delete-conflicting-outputs- Run the app:
flutter runlib/
├── app/ # App configuration & theme
├── core/ # Core utilities & services
├── data/ # Models, repositories, providers
├── features/ # Feature modules
│ ├── home/ # Trail listing
│ ├── hike_detail/ # Trail details
│ ├── map/ # Interactive maps
│ ├── tracking/ # GPS tracking
│ ├── profile/ # User profile
│ └── search/ # Search & filters
└── shared/ # Shared widgets
Run this command when you modify models or providers:
flutter pub run build_runner watch# Run all tests
flutter test
# Run tests with coverage
flutter test --coverage
# Run integration tests
flutter test integration_testflutter analyzeflutter build appbundle --releaseflutter build ipa --releaseflutter build web --releaseThis app follows Clean Architecture principles:
- Presentation Layer: UI components, state management (Riverpod providers)
- Domain Layer: Business logic, use cases
- Data Layer: Repositories, data sources (API, local DB)
- MVVM for feature architecture
- Repository pattern for data access
- Provider pattern for dependency injection
- Offline-first with local-first data strategy
- Framework: Flutter 3.x
- Language: Dart 3.x
- State Management: Riverpod
- Navigation: GoRouter
- Database: Hive
- Maps: Google Maps
- Backend: Firebase (Auth, Firestore, Storage)
- Weather: WeatherAPI
- CI/CD: GitHub Actions / Codemagic
- Create a Firebase project
- Add iOS and Android apps
- Download
google-services.json(Android) andGoogleService-Info.plist(iOS) - Place in respective directories
- Enable Authentication, Firestore, Storage
Required API keys in .env:
GOOGLE_MAPS_API_KEY: Google Maps PlatformWEATHER_API_KEY: OpenWeatherMap or similarMAPBOX_TOKEN: (Optional) For Mapbox
- Location: Required for GPS tracking and trail navigation
- Camera: Optional for user photos
- Storage: Required for offline maps
- Location data: Only during active tracking
- Usage analytics: Anonymous via Firebase Analytics
- User data: Stored securely, GDPR compliant
- Fork the repository
- Create a feature branch
- Make your changes
- Write/update tests
- Submit a pull request
This project is licensed under the MIT License - see LICENSE file for details.
For issues, questions, or suggestions:
- Create an issue on GitHub
- Email: support@mallorcahikes.app
- Trail browsing and filtering
- Trail details with maps
- GPS tracking
- Weather integration
- User profiles
- Social features (share trails)
- Trail photos upload
- Offline map downloads
- Route planning
- Emergency SOS
- Guided audio tours
- AR navigation
- Community challenges
- Integration with fitness trackers