Skip to content

destucr/Geo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Geo - Location & Fare Management System

Geo is a full-stack distributed system designed for trip management and fare calculation. It includes a Go-based backend, a scalable Kubernetes deployment, and an iOS client.

Architecture

  • Backend: High-performance Go service using fasthttp.
  • Database: PostgreSQL for persistent trip storage.
  • Messaging: RabbitMQ for asynchronous processing of trip data.
  • Frontend: iOS Application (VIPER Architecture).
  • Observability: Prometheus for metrics, Loki for logs, and Grafana for visualization.
  • Infrastructure: Kubernetes (K8s) manifests for automated deployment and scaling.

Tech Stack

  • Language: Go 1.24+, Swift 6.0
  • Frameworks: RxSwift, Alamofire (iOS), Logrus (Backend)
  • Monitoring: Prometheus, Grafana, Loki
  • Deployment: Docker, Kubernetes

Getting Started

Prerequisites

  • Docker Desktop (with Kubernetes enabled)
  • kubectl
  • Go 1.24 (for local backend development)
  • Xcode (for iOS development)

Local Deployment (Kubernetes)

  1. Build the Backend Image:

    docker build -t geo-backend:latest ./backend
  2. Deploy to Kubernetes:

    kubectl apply -f k8s/
  3. Access Internal Tools (Port-Forwarding):

    # Grafana (Dashboards)
    kubectl port-forward svc/grafana 3000:3000 -n geo-system &
    
    # RabbitMQ (Management UI)
    kubectl port-forward svc/rabbitmq 15672:15672 -n geo-system &

iOS App Setup

  1. Navigate to frontend/Geo.
  2. Install dependencies: pod install.
  3. Open Geo.xcworkspace and update the BACKEND_BASE_URL in your configuration to match your local IP.

Observability

The system is pre-configured with a "Geo Backend Observability" dashboard in Grafana. It tracks:

  • Request Rate & Latency
  • HTTP Errors
  • Custom Application Metrics (e.g., geo_trips_total)
  • Real-time logs via Loki

License

MIT

About

Geo is a full-stack distributed system designed for trip management and fare calculation. It includes a Go-based backend, a scalable Kubernetes deployment, and an iOS client.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors