Skip to content

Mallorca Hikes - Beautiful Flutter hiking app with nature-inspired design

Notifications You must be signed in to change notification settings

chippy101/hiking

Repository files navigation

Mallorca Hikes

A beautiful, production-ready mobile application for discovering and navigating hiking trails across Mallorca. Built with Flutter for iOS, Android, and Web.

Features

Core Functionality

  • 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

Technical Highlights

  • 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

Getting Started

Prerequisites

  • 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

Installation

  1. Clone the repository:
git clone https://github.com/yourusername/mallorca-hikes.git
cd mallorca-hikes
  1. Install dependencies:
flutter pub get
  1. Set up environment variables:
cp .env.example .env
# Edit .env with your API keys
  1. Run code generation:
flutter pub run build_runner build --delete-conflicting-outputs
  1. Run the app:
flutter run

Project Structure

lib/
├── 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

Development

Code Generation

Run this command when you modify models or providers:

flutter pub run build_runner watch

Testing

# Run all tests
flutter test

# Run tests with coverage
flutter test --coverage

# Run integration tests
flutter test integration_test

Linting

flutter analyze

Building for Production

Android

flutter build appbundle --release

iOS

flutter build ipa --release

Web

flutter build web --release

Architecture

This 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)

Key Patterns

  • MVVM for feature architecture
  • Repository pattern for data access
  • Provider pattern for dependency injection
  • Offline-first with local-first data strategy

Technologies

  • 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

Configuration

Firebase Setup

  1. Create a Firebase project
  2. Add iOS and Android apps
  3. Download google-services.json (Android) and GoogleService-Info.plist (iOS)
  4. Place in respective directories
  5. Enable Authentication, Firestore, Storage

API Keys

Required API keys in .env:

  • GOOGLE_MAPS_API_KEY: Google Maps Platform
  • WEATHER_API_KEY: OpenWeatherMap or similar
  • MAPBOX_TOKEN: (Optional) For Mapbox

App Store Compliance

Privacy & Permissions

  • Location: Required for GPS tracking and trail navigation
  • Camera: Optional for user photos
  • Storage: Required for offline maps

Data Collection

  • Location data: Only during active tracking
  • Usage analytics: Anonymous via Firebase Analytics
  • User data: Stored securely, GDPR compliant

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Write/update tests
  5. Submit a pull request

License

This project is licensed under the MIT License - see LICENSE file for details.

Support

For issues, questions, or suggestions:

Roadmap

v1.0 (Current)

  • Trail browsing and filtering
  • Trail details with maps
  • GPS tracking
  • Weather integration
  • User profiles

v1.1 (Planned)

  • Social features (share trails)
  • Trail photos upload
  • Offline map downloads
  • Route planning
  • Emergency SOS

v2.0 (Future)

  • Guided audio tours
  • AR navigation
  • Community challenges
  • Integration with fitness trackers

About

Mallorca Hikes - Beautiful Flutter hiking app with nature-inspired design

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published