Skip to content

Repository files navigation

🧭 GEC Compass

Campus Navigation App for Government Engineering College, Thrissur

GEC Compass is a cross-platform campus navigation application built with Flutter that helps students, staff, and visitors navigate the GEC Thrissur campus with ease. It features real-time GPS tracking, turn-by-turn walking directions along campus roads, and a beautiful ambient dark-themed UI.

Tip

πŸ“² Download the Optimized Android APK (ARM64-v8a) β€” For most modern phones (highly optimized size: 18.2 MB).


✨ Features

  • πŸ—ΊοΈ Interactive Campus Map β€” Full satellite + labeled map of GEC Thrissur with building markers, categorized by type (Departments, Workshops, Hostels, Cafes/ATMs, Rooms/Labs).
  • 🚢 Walking Navigation β€” Dijkstra-based shortest-path routing along actual campus roads with turn-by-turn instructions.
  • πŸ“ Real-Time GPS Tracking β€” Live blue-dot user position with heading indicator and location accuracy ring.
  • 🏒 Place Management β€” Add, edit, and manage custom places on the map with names, categories, and photos.
  • ☁️ Cloud Sync β€” All custom places are synced globally via a Vercel serverless API so updates reflect on every device.
  • πŸŒ™ Ambient Dark Theme β€” A premium dark UI with smooth glassmorphism effects and micro-animations.
  • πŸ“± Cross-Platform β€” Runs on Android (APK), Web (Vercel), iOS, Windows, macOS, and Linux.
  • πŸ’¬ WhatsApp Integration β€” Quick contact via WhatsApp for feedback and support.

πŸ—οΈ Architecture

GEC Compass/
β”œβ”€β”€ api/                        # Vercel serverless functions
β”‚   └── places.js               # Cloud sync API (Vercel KV / GitHub Gist / GitHub Repo)
β”œβ”€β”€ config.json                 # Dynamic API URL configuration
β”œβ”€β”€ gec_compass_app/            # Flutter application
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”œβ”€β”€ models/             # Data models (Building)
β”‚   β”‚   β”œβ”€β”€ screens/            # UI screens (MapScreen)
β”‚   β”‚   └── services/           # Business logic
β”‚   β”‚       β”œβ”€β”€ data_service.dart      # Cloud data sync service
β”‚   β”‚       β”œβ”€β”€ routing_service.dart   # Dijkstra road-graph navigation
β”‚   β”‚       └── pdr_service.dart       # Pedestrian Dead Reckoning
β”‚   β”œβ”€β”€ assets/
β”‚   β”‚   └── campus_buildings.json      # OSM-sourced building data
β”‚   └── android/                # Android platform files
β”œβ”€β”€ vercel.json                 # Vercel deployment configuration
β”œβ”€β”€ vercel-build.sh             # Flutter web build script for Vercel
└── package.json                # Node.js dependencies (@vercel/kv)

πŸš€ Getting Started

Prerequisites

  • Flutter SDK (stable channel)
  • Node.js (for serverless API development)
  • Android Studio or VS Code with Flutter extensions

Run Locally

# Clone the repository
git clone https://github.com/anjo2007/GECMAPS.git
cd GECMAPS/gec_compass_app

# Get Flutter dependencies
flutter pub get

# Run on Chrome (Web)
flutter run -d chrome

# Run on Android (connected device or emulator)
flutter run

Build Release APK

cd gec_compass_app
flutter build apk --release
# Output: build/app/outputs/flutter-apk/app-release.apk

Build Web

cd gec_compass_app
flutter build web --release
# Output: build/web/

☁️ Cloud Sync Setup

The serverless API (api/places.js) supports multiple database backends and a secondary backup option to ensure reliability.

Primary Storage Options

Configure one of the following as primary:

Backend Environment Variables Description
Vercel KV (default) KV_REST_API_URL, KV_REST_API_TOKEN Redis-based, auto-configured when linking Vercel KV
GitHub Gist GITHUB_TOKEN, GIST_ID Stores places in a GitHub Gist
GitHub Repo GITHUB_TOKEN, GITHUB_REPO Stores places.json in a repository

Secondary Backup Options

You can configure a backup storage option that runs alongside the primary. If both a primary and backup are configured, the API performs dual-writes on every POST and read failover on GET (if the primary store fails/rate-limits).

Backup Backend Environment Variables Description
GitHub Repo Backup BACKUP_GITHUB_REPO Backup repository path (e.g., username/repo). Uses GITHUB_TOKEN
Vercel KV Backup BACKUP_KV_REST_API_URL, BACKUP_KV_REST_API_TOKEN Secondary Vercel KV store
GitHub Gist Backup BACKUP_GIST_ID Secondary GitHub Gist ID. Uses GITHUB_TOKEN

Note

If no explicit backup environment variable is set, any configured non-primary credentials (for example, configuring both GIST_ID and GITHUB_REPO concurrently) will automatically act as the backup driver. If no backend is configured, the API uses an ephemeral in-memory cache.

Deploy to Vercel

  1. Push this repository to GitHub
  2. Import the project on Vercel
  3. Vercel will automatically detect the configuration from vercel.json
  4. Configure environment variables for primary and backup storage options under Project Settings.
  5. (Optional) Link a Vercel KV store for persistent cloud sync

πŸ—ΊοΈ Navigation System

The app uses a Dijkstra shortest-path algorithm over a hand-curated road graph of the GEC Thrissur campus. The graph contains ~40 waypoints placed along actual internal campus roads, ensuring navigation lines follow walkways instead of cutting through buildings.

How It Works

  1. User selects a destination building on the map
  2. The app finds the closest road waypoint to the user's GPS position and the destination
  3. Dijkstra's algorithm computes the shortest path through the campus road network
  4. The route is rendered as a blue polyline on the map
  5. Turn-by-turn instructions are generated from named waypoints along the route

πŸ“Έ Screenshots

Coming soon β€” deploy the app to see it in action!


πŸ› οΈ Tech Stack

Component Technology
Frontend Flutter (Dart)
Map flutter_map + OpenStreetMap tiles
Backend Vercel Serverless Functions (Node.js)
Database Vercel KV / GitHub API
Hosting Vercel
Navigation Custom Dijkstra graph routing

πŸ“„ License

This project is open source and available under the MIT License.


πŸ‘¨β€πŸ’» Author

Anjo β€” @anjo2007


Built with ❀️ for the GEC Thrissur community

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages