Skip to content

ksharma-xyz/KRAIL

Repository files navigation

KRAIL

KRAIL is a modern, Compose Multiplatform app providing a seamless trip-planning experience across Android and iOS. Built using Kotlin and Swift (for minor iOS-specific parts), the app offers real-time public transport information, personalised features like trip-saving and themes, and modular architecture for maintainability.

Krail App CI

Table of Contents


Architecture

KRAIL follows a modular, cleanly separated architecture to ensure clarity, scalability, and maintainability across platforms. Key modules include:

  • composeApp: Main entry point and UI code for Android and shared Compose UI components.
  • iosApp: iOS-specific entry point and platform adaptations.
  • core: Shared business logic (domain layer).
  • feature/...: Feature-specific modules (e.g. trip planner, discover).
  • gtfs-static: Handling GTFS (General Transit Feed Specification) assets or prebuilt data.
  • taj: Design system (Compose-based theming—not Material Design, but inspired by it).
  • sandook: Local Database for offline storage.
  • core: Core utilities and extensions e.g. appInfo, coroutines-ext, date-time, log, network.

Core Technologies

Area Technology
View Layer Jetpack Compose + Compose Multiplatform
Dependency Injection Koin
Networking :core:network module using Ktor (async HTTP client)
Local Storage sandook module SQLDelight (type-safe SQL)
Design System taj module built using Compose foundation APIs inspired from Material Design
Platform Management Gradle Kotlin DSL, multiplatform targets

App Features

  • Cross‑Platform UI: Shared Compose UI logic across Android and iOS.
  • Real-Time Trip Planning: Fetch and plan transit routes in Sydney and NSW.
  • Save Frequent Trips: Quickly access saved trips for one‑tap planning.
  • Park & Ride Integration: Discover nearby parking availability and integrate with train/metro journeys. See :feature:park-ride.
  • Custom Themes: Match app appearance to user preferences. See ThemeSelectionScreen.kt.
  • "Discover Sydney" (v1.7.5 update): Explore local attractions, food spots, and events.

Getting Started

Prerequisites

  • JDK 17+
  • Kotlin SDK 2.1+
  • Android Studio (latest stable)
  • Xcode (for iOS development)
  • API Keys
  • Firebase project (for analytics, crash reporting, etc.)
    • Put google-services.json in composeApp/src/debug/ and composeApp/src/release/
    • Put GoogleService-Info.plist in iosApp/iosApp

Building & Running

  • Clone the repository:

    git clone [email protected]:ksharma-xyz/Krail.git
  • Build:

    ./gradlew build
  • Run Tests:

    ./gradlew test
  • Run App:
    Use Android Studio or Xcode to deploy on simulators or real devices.


Contributing

Welcoming contributions from the community. Please create a new issue or pick up an existing one. Please follow module structure and existing code patterns for consistency.


Download

Download Krail App on Google Play Store iOS Krail App on Apple App Store


License

Copyright 2024-2025 Karan Sharma.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Contact


About

KRAIL is a Compose Multiplatform app for trip planning on public transport in Sydney, NSW, Australia.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •