Skip to content

Flutter mobile app for managing memorable places with GPS tracking, Google Maps integration, camera support, and SQLite storage. Built with Riverpod state management and Material Design 3.

Notifications You must be signed in to change notification settings

yohanangulo/great-places

Repository files navigation

Great Places

A comprehensive Flutter mobile application for discovering, managing, and sharing memorable locations with advanced location services and SQLite integration.

Features

Core Functionality

  • Location Discovery: Add places with detailed information
  • Photo Integration: Capture and store photos using device camera
  • Location Services: GPS coordinates and reverse geocoding
  • Interactive Maps: Google Maps integration with custom markers
  • Offline Storage: SQLite database for reliable local data persistence

Technical Highlights

  • State Management: Flutter Riverpod for reactive state management
  • Location Services: GPS with location permissions handling
  • Database: SQLite with custom data models and relationships
  • Maps Integration: Google Maps Flutter plugin with custom UI

Architecture

App Flow Diagram

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   UI Screens    │    │  State Manager  │    │   Data Layer    │
│                 │    │                 │    │                 │
│ • Places List   │◄──►│ Riverpod        │◄──►│ SQLite DB       │
│ • Add Place     │    │ Providers       │    │ File Storage    │
│ • Place Detail  │    │                 │    │                 │
│ • Map View      │    │                 │    │                 │
└─────────────────┘    └─────────────────┘    └─────────────────┘
         │                       │                       │
         ▼                       ▼                       ▼
┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   UI Widgets    │    │     Models      │    │ External APIs   │
│                 │    │                 │    │                 │
│ • Image Input   │    │ • Place         │    │ • Google Maps   │
│ • Location Input│    │ • PlaceLocation │    │ • Camera/GPS    │
│ • Places List   │    │                 │    │ • Geocoding     │
└─────────────────┘    └─────────────────┘    └─────────────────┘

Project Structure

lib/
├── models/          # Data models and entities
├── providers/       # Riverpod state management
├── screens/         # UI screens and navigation
├── widgets/         # Reusable UI components
├── theme/           # App theming and styling
└── extensions/      # Dart extensions and utilities

Technology Stack

  • Framework: Flutter 3.3.2+
  • State Management: Flutter Riverpod 2.5.1
  • Database: SQLite with sqflite 2.3.3
  • Location Services: location 6.0.2
  • Maps: google_maps_flutter 2.6.1
  • Image Handling: image_picker 1.1.1
  • HTTP Client: http 1.2.2
  • UI: Material Design 3 with Google Fonts

Key Dependencies

dependencies:
  flutter_riverpod: ^2.5.1 # State management
  google_maps_flutter: ^2.6.1 # Maps integration
  location: ^6.0.2 # GPS services
  image_picker: ^1.1.1 # Camera/gallery
  sqflite: ^2.3.3+1 # SQLite database
  http: ^1.2.2 # API requests
  google_fonts: ^6.2.1 # Typography
  uuid: ^4.4.0 # Unique identifiers

Screenshots

Add New place screen Demo Places List

Installation & Setup

Prerequisites

  • Flutter SDK 3.3.2 or higher
  • Android SDK (API level 21+) or iOS 11.0+
  • Google Maps API key

Setup Instructions

  1. Clone the repository

    git clone https://github.com/yohanangulo/great-places.git
    cd great-places
  2. Install dependencies

    flutter pub get
  3. Configure Google Maps

    • Get a Google Maps API key from Google Cloud Console
    • Add the API key to platform-specific configuration files
  4. Run the application

    flutter run

Project Structure

The application follows Flutter best practices with a modular architecture:

  • Models: Immutable data classes with proper serialization
  • Providers: Reactive state management with Riverpod
  • Screens: Feature-based screen organization
  • Widgets: Reusable components with consistent styling
  • Database: SQLite integration with migration support

Skills Demonstrated

  • Cross-platform mobile development with Flutter
  • State management patterns and reactive programming
  • SQLite database design and implementation
  • Google Maps SDK integration
  • Camera and location services implementation
  • Material Design implementation

Built with Flutter | Developed by Yohan Angulo

About

Flutter mobile app for managing memorable places with GPS tracking, Google Maps integration, camera support, and SQLite storage. Built with Riverpod state management and Material Design 3.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published