API and logger for GBFS endpoints, noticeably Velib' in Paris

Overview

GBFS Watcher

A daemon which logs Velib' stations statuses and provides a REST endpoint to access data. Velib' API is built over GBFS v1, so this API could trivially be generalized to other mobility networks.

The goal of the project is to be as lightweight and portable as possible to allow running it for years with decent latency on a Raspberry Pi, possibly using a bad to average USB hard drive.

This requirement comes from a previous attempt for a similar project backed on SQLite which became much too slow on such hardware after a few month of data was ingested (SQLite despite its bad reputation should be quite competitive for this task).

Usage

I'm hosting an instance at https://velib-history-api.dupre.io, open the link to see the list of available endpoints.

You can also host your own instance using methods below, use the --help parameter to see extra options.

Using cargo

cargo run --release --bin server -- \
    --journals-dir <JOURNALS_DIR>   \
    --dumps-dir <DUMPS_DIR>

Using docker

docker run ghcr.io/remi-dupre/gbfs-watcher:latest \
    --journals-dir <JOURNALS_DIR>                 \
    --dumps-dir <DUMPS_DIR>
You might also like...
The second Rust implementation on GitHub of third-party REST API client for Bilibili.

Bilibili REST API The second Rust implementation on GitHub of third-party REST API client for Bilibili. Designed to be lightweight and efficient. It's

Simple Rust 🦀 api with Rocket 🚀

Car API Written in Rust & Rocket.rs 🦀 🚀 Running project Running by cargo You just need to run the following command: cargo run Running on docker Fi

API for the creation character based games in Linux.
API for the creation character based games in Linux.

Console Game Engine for Linux. API for the creation of character based games in Linux. The inspiration came from the olcConsoleGameEngine. This is my

Rust wrapper for the LeapC Ultraleap (Leap Motion) hand tracking device API.

LeapRS LeapRS is a safe wrapper for LeapC, the Leap Motion C API. It uses the generated binding provided by leap-sys. This is an API for accessing Lea

🔥Implemetación de una API REST basada en microservicios con Rust
🔥Implemetación de una API REST basada en microservicios con Rust

Microservicios 🚀 Breve Descripción Bienvenido a todos, aquí aprenderás a programar una API REST desde cero enfocada a la aquitectura de microservicio

QQ ChatBot with ChatGPT api, implement in Rust

qbot QQChatBot with ChatGPT gpt-3.5-turbo api Rust 实现,抽象了 cqhttp 的收发消息 msg、openai ai 的消息对象,具有一定管理权限、预设机器人角色、机器人指令等功能。 原理上是接受 cqhttp 的 local websocket

`memory_pages` is a small library provinig a cross-platform API to request pages from kernel with certain premisions

memory_pages: High level API for low level memory management While using low-level memory management in a project can provide substantial benefits, it

💩 Small HTTP client for the Webpurify API following the sans-io approach 🦀

💩 tame-webpurify Super simple client for the WebPurify REST API What is this? An incredibly small library to interact with the https://www.webpurify.

Proc-macros for generating icons from the Iconify API

iconify-rs This crate provides a macro to embed SVGs from Iconify. For a list of icons, see Iconify Icon Sets. 📝 Usage let svg = iconify::svg!("mdi:h

Releases(v1.0.0)
  • v1.0.0(Nov 16, 2022)

    First release:

    • support watching periodically remote API's state
    • lightweight storage (27 bytes / updated station)
    • periodic dumps

    Full Changelog: https://github.com/remi-dupre/gbfs-watcher/commits/v1.0.0

    Source code(tar.gz)
    Source code(zip)
Uma lib para a API do Brasil API (para o Rust)

Uma lib para a API do BrasilAPI (para o Rust) Features CEP (Zip code) DDD Bank CNPJ IBGE Feriados Nacionais Tabela FIPE ISBN Registros de domínios br

Pedro Augusto 6 Dec 13, 2022
An API for getting questions from http://either.io implemented fully in Rust, using reqwest and some regex magic. Provides asynchronous and blocking clients respectively.

eithers_rust An API for getting questions from http://either.io implemented fully in Rust, using reqwest and some regex magic. Provides asynchronous a

null 2 Oct 24, 2021
Rust library for hardware accelerated drawing of 2D shapes, images, and text, with an easy to use API.

Speedy2D Hardware-accelerated drawing of shapes, images, and text, with an easy to use API. Speedy2D aims to be: The simplest Rust API for creating a

null 223 Dec 26, 2022
The utility is designed to check the availability of peers and automatically update them in the Yggdrasil configuration file, as well as using the admin API - addPeer method.

Yggrasil network peers checker / updater The utility is designed to check the availability of peers and automatically update them in the Yggdrasil con

null 6 Dec 25, 2022
Code to follow along the "Zero To Production" book on API development in Rust.

Zero To Production / Code (Chapter 10 - Part 1) Zero To Production In Rust is an opinionated introduction to backend development using Rust. This repo

Luca Palmieri 2.8k Dec 31, 2022
Interact with the crate's API

cargo-crate-api Interact with the crate's API Documentation Installation Getting Started Reference FAQ Contribute CHANGELOG Install Download a pre-bui

null 7 Aug 9, 2022
Conversion Tools API Rust client

ConversionTools Rust This Conversion Tools API Rust client allows you to use the site API and convert files faster and more conveniently. Site Convers

WinsomeQuill 2 Jan 23, 2022
Public aircraft & flightroute api Built in Rust for Docker, using PostgreSQL & Redis

api.adsbdb.com public aircraft & flightroute api Built in Rust for Docker, using PostgreSQL & Redis See typescript branch for original typescript vers

Jack Wills 66 Dec 22, 2022
Simple RESTful API in rust created with actix-web. (Routing, models, JWT auth).

rust-simple-api Simple RESTful API created with rust, actix-web, Diesel, JWT. Running application Manual Firstly generate a secret.key which will be u

null 2 Jul 30, 2022
A asynchronous implementation of the invidious innertube aka youtubei API wrapper

A asynchronous implementation of the invidious innertube aka youtubei API wrapper. Using tokio,reqwest, serde and serde_json

11Tuvork28 11 Dec 22, 2022