Easy-to-manage touch screens
무료 오픈소스 터치스크린으로 USB 설정 가이드, 드래그‑드롭 편집기, 로컬 제어를 제공하며 Home Assistant용으로 제작되었습니다
시드니 교통(기차·지하철도·버스·페리·경전철) 실시간 정보와 저장한 경로, 주차·승차 현황, 다크모드를 iPhone·Android에서 제공합니다
Live Sydney train, metro, bus, ferry and light rail times. Saved trips, live Park & Ride spaces and dark mode, on iPhone and Android.
라이프스타일Kotlin · HTMLGitHub @ksharma-xyz온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
KRAIL is a Compose Multiplatform app for trip planning on public transport in Sydney, NSW, Australia.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
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 follows a modular, cleanly separated architecture to ensure clarity, scalability, and
maintainability across platforms. Key modules include:README 전문 보기 ↗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 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.| 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 |
NSW_TRIP_PLANNER_API_KEY — obtain
via NSW Open Data developer platform.composeApp/src/debug/ and composeApp/src/release/iosApp/iosAppClone the repository (with submodules):
git clone --recurse-submodules [email protected]:ksharma-xyz/Krail.git
If you cloned without --recurse-submodules, fetch the submodule afterwards:
cd Krail
git submodule update --init --recursive
KRAIL pulls in KRAIL-API-PROTO
as a submodule at krail-api-proto/. Wire codegen in :io:bff-api reads
the .proto files from there; without the submodule, compileDebugSources
fails with a confusing "no protos found" error.
Build:
./gradlew build
Run Tests:
./gradlew test
Run App:
Use Android Studio or Xcode to deploy on simulators or real devices.
Full quality checks (fullQualityChecks):
Compiles Android + iOS and runs Detekt in one command.
./scripts/fullQualityChecks.sh
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.
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.