Profile
Back to NewsBack
GitHub Trending 3 min
Reader Mode
better-rail/app: An alternative mobile client for Israel Railways

better-rail/app: An alternative mobile client for Israel Railways

5 hours ago

Better Rail

 

Better Rail is an open source mobile client for Israel Railways, with an emphasis on great design, performance and accessibility.

Available on the App Store & Play Store

Overview

Better Rail is built with React Native. We also use Swift and Kotlin to leverage native platform functionalities.

The repository is a Bun workspaces monorepo:

| Path | What | | ------------------- | ------------------------------------------------------------------------------------------------- | | apps/mobile | The React Native / Expo app (README) | | apps/api | The API on Cloudflare Workers: timetable, live rides, fares (README) | | apps/egress-proxy | Fixed-IP relay for the two upstreams a Worker can't reach (README) | | apps/conductor | Discord bot + email bridge, a Cloudflare Worker (README) | | apps/web | better-rail.co.il — TanStack Start site & web timetable (README) | | packages/stations | Station list + photos shared by every app |

Installation

The following steps assume your environment is already set up for running Expo / React Native apps (Xcode for iOS, Android Studio for Android). If this is your first time, check out the Expo local development setup guide beforehand.

Prerequisites

Setup Steps

  • Fork the repo and clone it to your machine.
  • Run bun install from the repository root (this installs every workspace).
  • cd apps/mobile, then run bun start to start the development server.
  • Android only: run cp -v google-services{.development,}.json
  • Run the app with:
- bun prebuild --platform ios && bun ios (to open the iPhone simulator) - bun prebuild --platform android && bun android (for the Android emulator).

The first run generates the native projects and may take a while.

If you change anything that affects the native layer (config, plugins, native dependencies), run bun prebuild to regenerate the native projects.

If you want to contribute and face issues during installation, please reach out to us at [email protected] and we'll try to help!

Workspace scripts

Every app can also be driven from the repository root:

bun run mobile:start   # Metro / Expo dev server
bun run mobile:e2e:ios # Maestro on an installed iOS E2E build
bun run mobile:e2e:android # Maestro on an installed Android E2E build
bun run api:dev        # the API in a local workerd (wrangler dev)
bun run web:dev        # website + web app on :3000
bun run lint           # oxlint + oxfmt across the repo
bun run test           # mobile + api + egress-proxy + conductor + web tests

EAS commands run from apps/mobile.

Contributing

Pull requests are currently limited to collaborators in order to avoid spam. If you found a bug or have an idea, please open an issue and we can discuss it from there. Want to contribute to the app? Join our Discord and share your ideas with us. To report a security issue, please email us at [email protected]

License

The source code is released under the AGPL-3.0 license. The project assets - the user interface, app branding, images, illustations, icons and fonts are outside the scope of the license.

Chat with me