fahrplan
is a dynamic, visual station departure schedule for Swiss public transport service (SBB, Postauto, etc.) based on Meteor.js 2.7.1
We developed fahrplan
in our free time during our study years and installed a signage monitor in our living community. Currently we are offering our consulting and engineering services at Technokrat GmbH. Please visit us if you need fast & reliable full-stack engineering services in electrical engineering, rapid prototyping, MVPs or feasibility research in a one-stop experience.
See https://fahrplan.technokrat.ch for a live demonstration.
To select a station:
- Hit any key and type in the station name in the query field popping up. If no station is found, just hit enter once again also crawl through the public database.
- Select the station on the list with a click
Alternatively use the URL GET parameter ?ibnr=12345678
, which will set the IBNR directly. This is especially useful for kiosk mode operation.
You might host your own fahrplan
instance for non-commercial purposes.
For a quickstart, first install Docker. Then build the Docker image and run docker-compose. This can simply be done with:
git clone https://github.com/technokrat-llc/fahrplan.git
cd fahrplan
./run_in_docker.sh
Your fahrplan
instance should then be running under http://localhost:3000
Requirements such as Docker and Meteor.js are automatically downloaded by the script.
fahrplan
is supported on all machines that can run Meteor.js,
a Node.js based distributed-reactivity web framework, and MongoDB.
Install them and run
meteor run
inside the cloned repository.
version: '3.8'
networks:
traefik-public:
external: true
services:
fahrplan:
image: ghcr.io/technokrat/fahrplan/fahrplan:latest
restart: unless-stopped
environment:
- MONGO_URL=mongodb://mongo/fahrplan
- ROOT_URL=https://fahrplan.technokrat.ch
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik-public"
- "traefik.http.routers.fahrplan.rule=Host(`fahrplan.technokrat.ch`)"
- "traefik.http.routers.fahrplan.tls.certresolver=leresolver"
- "traefik.http.routers.fahrplan.entrypoints=websecure"
- "traefik.http.routers.fahrplan.service=fahrplan"
- "traefik.http.services.fahrplan.loadbalancer.server.port=80"
networks:
- default
- traefik-public
mongo:
image: mongo:latest
restart: always
networks:
- default
You can configure a webserver such as Nginx to proxy traffic to your instance. Take the following configuration as an example:
server {
listen [::]:80;
listen 80;
server_name fahrplan.technokrat.ch;
return 301 https://$server_name$request_uri;
}
server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
server_name fahrplan.technokrat.ch;
ssl on;
ssl_certificate /etc/letsencrypt/live/technokrat.ch/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/technokrat.ch/privkey.pem;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; ";
location ^~ /.well-known {
default_type "text/plain";
root /var/www/html;
}
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
Please don't hesitate if you encounter a bug or want to contribute.
You reach us through GitHub, our website https://technokrat.ch and by email at contact@technokrat.ch
Apropos: We are always searching for multi-talents in the field of electrical engineering, IoT, product development, mechatronics, etc. Just send us your resumé or visit https://technokrat.ch/jobs