Skip to content

Latest commit

Β 

History

3,508 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.
  • Some of the reference travel times in travel_times/cases.csv are derived from the Toei Subway GTFS (Bureau of Transportation, Tokyo Metropolitan Government, CC BY 4.0) and from the Tokyo Metro, Metropolitan Intercity Railway (Tsukuba Express), Tokyo Waterfront Area Rapid Transit (Rinkai Line), and Tama Toshi Monorail GTFS feeds published by the Public Transportation Open Data Center under the Public Transportation Open Data Basic License.

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