A GraphQL API that provides nearby Japanese train stations and bus stops, running on Cloudflare Workers.
- For automation agent and contributor workflows, see AGENTS.md.
- For contribution guidelines, see CONTRIBUTING.md.
- For system architecture and design decisions, see docs/architecture.md.
- For technical debt analysis and architectural concerns, see docs/technical_debt.md.
- For the record of the Cloudflare Workers migration, see docs/cloudflare-workers-migration.md.
- For the published GraphQL schema, see schema/public.graphql.
This project includes a comprehensive dataset of Japanese railway information in the data/ directory. The data is maintained in CSV format and contributions are primarily targeted at Japanese speakers. For detailed information about data structure and contribution guidelines, please refer to data/README.md.
Thanks goes to these wonderful people (emoji key):
Kanta Demizu 🔣🚇💻 | SAIGUSA Tomotada 🤔🔣 | mittan12 🔣 | CodeRabbit 👀 |
This project follows the all-contributors specification. Contributions of any kind welcome!
Do you like this project? Join our Discord community! https://discord.gg/tsemdME9Nz
No database is required. The data is generated into generated/*.csv and embedded
into the WASM binary at build time.
rustup target add wasm32-unknown-unknown
cargo install worker-build --locked
make data # build generated/*.csv from data/ and the GTFS feeds
make build # build the Worker (wasm)
make dev # run it locally on http://127.0.0.1:8787make help lists every target.
make test# unit tests for every native crate
make check # type-check, including the wasm32 target
make clippy # lint, including the wasm32 target
make fmt # formatting checkTests need no external services. stationapi (domain / use case) and
preprocessor (data pipeline) are covered by unit tests; the published GraphQL
schema is verified in CI by diffing the Worker's SDL against
schema/public.graphql.
make deploy # staging -> stationapi-stg
make deploy-production # production -> stationapiThe data lives inside the WASM binary, so a data change needs a rebuild and a redeploy; it is not picked up at runtime.
