Skip to content

Latest commit

Β 

History

3,503 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

StationAPI

Billboard

All Contributors

A GraphQL API that provides nearby Japanese train stations and bus stops, running on Cloudflare Workers.

Documentation

Data Contribution

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.

Data Sources

  • Track lengths between adjacent stations (Station.trackDistanceFromPrevious) are derived from the MLIT National Land Numerical Information railway data (N02), licensed under CC BY 4.0: γ€Œε›½εœŸζ•°ε€€ζƒ…ε ±οΌˆι‰„ι“γƒ‡γƒΌγ‚ΏοΌ‰γ€οΌˆε›½εœŸδΊ€ι€šηœοΌ‰ (https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N02-2025.html) γ‚’εŠ ε·₯γ—γ¦δ½œζˆ
  • Bus stops and routes are derived from the GTFS and ODPT feeds listed in preprocessor/src/gtfs/feed.rs and preprocessor/src/gtfs/odpt.rs.

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Kanta Demizu
Kanta Demizu

πŸ”£ πŸš‡ πŸ’»
SAIGUSA Tomotada
SAIGUSA Tomotada

πŸ€” πŸ”£
mittan12
mittan12

πŸ”£
CodeRabbit
CodeRabbit

πŸ‘€
tahodev
tahodev

πŸ’»

This project follows the all-contributors specification. Contributions of any kind welcome!

Join our community(Japanese only)

Do you like this project? Join our Discord community! https://discord.gg/tsemdME9Nz

Development

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/, the GTFS feeds, and the MLIT railway data
make build    # build the Worker (wasm)
make dev      # run it locally on http://127.0.0.1:8787

make help lists every target.

Testing

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 check

Tests 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.

Deploying

make deploy             # staging   -> stationapi-stg
make deploy-production  # production -> stationapi

The data lives inside the WASM binary, so a data change needs a rebuild and a redeploy; it is not picked up at runtime.

About

πŸ€– The GraphQL API for nearby Japanese train stations and bus stops, powered by Rust and Cloudflare Workers.

Topics

Resources

Contributing

Stars

13 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages