Plan transfer-aware journeys across the M1–M5 network with an offline-first Expo and React Native app.
Features · Screenshots · Getting started · Architecture · Data policy
MeBuc is focused on one task: helping riders travel from station A to station B on the Bucharest Metro.
The app searches Romanian station names with or without diacritics, calculates routes across line transfers, presents the journey as an easy-to-follow timeline, and recommends where to board when coach-position data is available. Its bundled network data keeps core route planning available without an internet connection.
- Transfer-aware routing — compare the fastest journey with options that use fewer transfers.
- Flexible station search — find stations with or without Romanian diacritics.
- Interactive network map — explore the complete M1–M5 network from static SVG and coordinate data.
- Clear journey guidance — review duration, transfers, line badges, stops, exits, warnings, and coach recommendations.
- Offline-first operation — search, map browsing, and core route planning work from bundled data.
- Honest data labels — distinguish bundled, remotely updated, and verified live information.
- Three languages — Romanian, English, and Russian.
- Cross-platform UI — run on iOS, Android, and the web.
Responsive route planning and map exploration on a 390 × 844 viewport.
- Node.js 20 or newer
- npm
- An Android or iOS development environment only if you plan to run a native build
git clone https://github.com/pashawkola33/MeBuc.git
cd MeBuc
npm installnpm run startOr launch a specific platform:
npm run android
npm run ios
npm run webThe iOS command requires macOS and Xcode. Native Android development requires the Android SDK.
| Area | Technology |
|---|---|
| Application | Expo SDK 54, React Native 0.81, React 19 |
| Navigation | Expo Router 6 |
| Language | TypeScript 5 |
| Map rendering | react-native-svg |
| Platforms | iOS, Android, Web |
| Data model | Bundled static metro network data |
MeBuc/
├── app/ # Expo Router screens
├── src/
│ ├── data/metro/ # Stations, lines, connections, transfers, schedules
│ ├── features/
│ │ ├── route-planner/ # Transfer-aware routing
│ │ ├── stations/ # Search and grouped-station resolution
│ │ ├── lines/
│ │ ├── map/
│ │ ├── schedule/
│ │ └── settings/
│ ├── i18n/ # English, Romanian, and Russian translations
│ ├── lib/ # Shared utilities
│ └── ui/ # Maps, route cards, timelines, and inputs
├── scripts/ # Validation and repository checks
└── docs/ # Product, data-policy, and setup documentation
Expo Router screens coordinate the application flow, feature modules contain domain logic, and the bundled metro dataset provides the source for offline route planning.
Run the full repository check before submitting changes:
npm run verifyIndividual checks are also available:
| Command | Purpose |
|---|---|
npm run validate:data |
Validate the bundled metro dataset |
npm run health |
Run the project health check |
npm run check:secrets |
Detect accidentally committed secrets |
MeBuc treats data provenance as a product feature:
- Core route planning uses bundled static data and remains available offline.
- Service status, delays, and arrival information are not presented as live unless they come from a verified source.
- Station names preserve Romanian diacritics.
- Metro lines are not identified by color alone.
The dataset in src/data/metro/metadata.json is derived from the Metrorex network map and covers the active M1–M5 network. See the data policy for sourcing and freshness details.
Before opening a change:
- Read AGENTS.md and the relevant documentation in docs.
- Keep offline behavior and data provenance intact.
- Run
npm run verify. - Describe any user-visible or dataset changes clearly.
This project is available under the MIT License.



