Skip to content

mohamedchouat/SilkRoad

Repository files navigation

🏜️ SilkRoad App

📸 Screenshots

📸 Screenshots

Splash Screen Main Activity Map Screen Foreground Notification
Splash Screen Main Activity Map Screen Foreground Notification

Kotlin Jetpack Compose License

SilkRoad App is a modern Android application for recording and visualizing GPS routes.
It uses Jetpack Compose, MVI with UDF (Unidirectional Data Flow), and a foreground notification service to track the user in real-time.


✨ Features

  • 🏁 Splash Screen – Smooth entry animation on app start
  • 🗺️ Map Screen – Show route, footprints, and camel marker at last position
  • 🔴 Auto-Follow Location – Camera always moves to the last recorded point
  • 📍 Markers – Footprints for route history, camel for current location
  • 🔔 Foreground Notification Service – Keeps tracking active in background
  • 🛠️ MVI + UDF Architecture – Clear state management and scalable code
  • 📦 Use Cases – Insert point, get points flow, calculate distance
  • Offline Persistence – Room database caching of GPS points

🏗️ Tech Stack

  • Language: Kotlin
  • UI: Jetpack Compose
  • Architecture: MVI + UDF
  • Dependency Injection: Hilt
  • Persistence: Room Database
  • Maps: Google Maps Compose
  • Foreground Service: Persistent notification for route tracking
  • Extras: Coroutine Flow, State management, Vector Drawable Icons

📂 Project Structure

SilkRoadApp
│   SilkRoadApplication.kt        # Application class
│   MainActivity.kt               # Main Activity
│   PermissionManager.kt          # Compose permission handling
│
├── domain
│   ├── usecase
│   │   ├── InsertPointUseCase.kt
│   │   ├── GetPointsFlowUseCase.kt
│   │   └── CalculateDistanceUseCase.kt
│   ├── repository
│   │   ├── RouteRepository.kt
│   │   └── LocationRepository.kt
│   └── GpsPoint.kt
│
├── data
│   ├── repository
│   │   └── RouteRepositoryImpl.kt
│   ├── local
│   │   ├── GpsPointEntity.kt
│   │   ├── GpsPointDao.kt
│   │   └── GpsDatabase.kt
│   └── location
│       └── LocationService.kt
│
├── presentation
│   ├── systemstatus
│   │   ├── SystemStatusViewModel.kt        # Foreground notification / service VM
│   │   ├── SystemStatusState.kt
│   │   └── SystemStatusIntent.kt
│   ├── state
│   │   ├── SilkRoadState.kt                # Map & route state
│   │   └── SilkRoadIntent.kt
│   └── SilkRoadViewModel.kt
│
├── ui
│   ├── theme
│   │   └── SilkRoadTheme.kt
│   ├── components
│   │   └── BlinkingCircle.kt
│   └── map
│       ├── MapScreen.kt
│       └── getBitmapDescriptorFromVector.kt
│
└── di
    ├── UseCaseModule.kt
    └── AppModule.kt

About

SilkRoad is an Android app for tracking routes and monitoring system status. It is built with Kotlin, Jetpack Compose, and Hilt for clean and modular code. The app follows MVVM and UDF/MVI architecture for a scalable and maintainable structure. It includes background location tracking, interactive maps, and a foreground notification service.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages