Skip to content

R4ULtv/rail-radar

Rail Radar

Features

  • Interactive map with 18,000+ railway stations across Italy, Switzerland, Germany, Finland, Belgium, Denmark, the Netherlands, Norway, Sweden, Poland, the United Kingdom, and Ireland
  • Real-time arrivals and departures from official data sources (RFI, SBB, DB, Digitraffic, iRail, Rejseplanen, NS, Entur, Trafiklab, PLK, LDBWS, Irish Rail)
  • Station search with fuzzy matching
  • Operator directory with network metadata and static coverage maps
  • Trending stations ranked by unique visitors, with both unique and total visit counts available
  • Shareable URLs with map state, saved stations, and recent stations
  • User geolocation support
  • Responsive mobile-friendly design

Project Structure

Directory Description
apps/api Cloudflare Workers API for train data
apps/static Cloudflare Worker for shared media assets
apps/studio Admin tool for station data management
apps/web Next.js frontend with interactive map
packages/data Shared station data and TypeScript types
packages/ui Shared React component library

Quick Start

# Install dependencies
pnpm install

# Run all development apps
pnpm dev

# Run specific app
pnpm --filter=web dev    # Frontend at localhost:3000
pnpm --filter=api dev    # API server
pnpm --filter=static dev # Shared media Worker at localhost:8788
pnpm --filter=studio dev # Admin tool at localhost:3001

Scripts

Command Description
pnpm dev Start all development servers
pnpm --filter=static dev Start the shared media Worker at localhost:8788
pnpm --filter=studio dev Start the admin tool at localhost:3001
pnpm build Build all packages
pnpm lint --force Lint all packages
pnpm format Format code with oxfmt
pnpm check-types --force Run TypeScript type checking
pnpm --filter=api cf-typegen Generate API Worker types
pnpm --filter=static cf-typegen Generate static Worker types

Media Delivery

Shared media is served by apps/static from static.railradar24.com. Small, repo-owned assets such as flags, operator logos, screenshots, and other reusable images are deployed through Cloudflare Workers Static Assets. Larger, growing collections such as future station photos are planned for a dedicated R2 bucket behind the same media app rather than being bundled into the web deployment.

Support

Rail Radar is free to use and independently maintained. If it's useful to you, you can help cover the API calls, hosting, and map tiles that keep it running.

Donate via Polar — one-time, monthly, or yearly support. Also reachable from the in-app /donate page or the "Sponsor" button at the top of this repository.

Contributing

See CONTRIBUTING.md for setup, development workflow, quality checks, and pull request guidelines.

Contributing Station Data

Station data contributions are supported through Rail Radar Studio. For the full workflow, see CONTRIBUTING.md and apps/studio/README.md.

License

This project is licensed under the MIT License - see the LICENSE file.

Acknowledgments

  • 🇮🇹 Italian train data from RFI (Rete Ferroviaria Italiana)
  • 🇨🇭 Swiss train data from transport.opendata.ch
  • 🇫🇮 Finnish train data from Digitraffic
  • 🇧🇪 Belgian train data from iRail (NMBS/SNCB)
  • 🇳🇱 Dutch train data from NS (Nederlandse Spoorwegen)
  • 🇬🇧 UK train data from LDBWS (National Rail)
  • 🇮🇪 Irish train data from Irish Rail (Iarnród Éireann)
  • 🇳🇴 Norwegian train data from Entur
  • 🇸🇪 Swedish train data from Trafiklab
  • 🇵🇱 Polish train data from PKP Polskie Linie Kolejowe (PLK)
  • 🇩🇰 Danish train data from Rejseplanen
  • 🇩🇪 German train data from Deutsche Bahn (DB)
  • Map rendering by Mapbox

About

Interactive, extensible real-time railway tracker for Europe.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Contributors