Skip to content
simplyRobaPublic

About

Fuel cost and mileage tracker - the gazel keeps pace with every fill-up so you don't have to

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

gazel logo

gazel

gazel — short for gas gazelle — /ɡəˈzɛl/

Conventional Commits GitHub License GitHub Workflow Status GitHub release GitHub issues GitHub Repo stars

A lightweight, self-hosted fuel expense and mileage tracker. Log fill-ups, track fuel efficiency and costs across your vehicles, and spot trends over time — all from a single binary with no external dependencies.

The gazel remembers every drop so you don't have to.

gazel dashboard gazel mobile view

Features

  • Multi-vehicle tracking — manage all your cars, motorcycles, and trucks in one place
  • Fill-up logging — record date, odometer, fuel amount, cost, and station
  • Fuel efficiency — automatic MPG / L/100km calculation between fill-ups
  • Cost tracking — cost per mile/km, monthly and yearly spend breakdowns
  • Dashboard — at-a-glance overview with summary stats and recent activity
  • Charts — visualize efficiency, cost, and fuel price trends over time
  • Flexible units — switch between imperial and metric, choose your currency
  • Multi-language — English and German
  • Data portability — export and import your data as JSON
  • Light & dark theme — follows your system preference, with manual override
  • Installable PWA — add to home screen on mobile for a native-like experience
  • Optional OIDC login — protect the UI and API with a standards-based identity provider
  • Single binary — self-contained Rust service with embedded UI, just run it or use Docker

Quick start

Docker run

docker run -p 4110:4110 -v gazel-data:/data \
  ghcr.io/simplyroba/gazel:latest

Open http://localhost:4110. Data is persisted in the gazel-data volume.

Docker Compose

A docker-compose.yml is included in the repository.

docker compose up -d

Configuration

Variable Default Description
GAZEL_PORT 4110 HTTP server listen port.
GAZEL_DB_PATH /data/gazel.db Filesystem path to the SQLite database.
GAZEL_LOG_LEVEL info tracing level filter for logs.
GAZEL_AUTH_ENABLED false Enable OIDC login.
GAZEL_EXTERNAL_URL — Required public URL of Gazel, without a subpath.
GAZEL_OIDC_ISSUER — Required OIDC issuer URL.
GAZEL_OIDC_CLIENT_ID — Required confidential-client ID.
GAZEL_OIDC_CLIENT_SECRET — Required confidential-client secret.
GAZEL_OIDC_PROVIDER_NAME OpenID Connect Name shown on the login button.
GAZEL_OIDC_AUTO_REDIRECT false Skip the login-button click.

Security

Authentication is disabled by default. Enable OIDC or use an authenticating reverse proxy before exposing Gazel outside a trusted network.

Register <GAZEL_EXTERNAL_URL>/auth/callback with a confidential Authorization Code client supporting client_secret_basic or client_secret_post.

Use the issuer URL exactly as advertised, including any trailing slash. The provider must be reachable at startup.

Gazel serves HTTP behind a TLS-terminating reverse proxy. Public and provider URLs require HTTPS; the provider needs a publicly trusted certificate. HTTP URLs are accepted on localhost, 127.0.0.1, and ::1 for local development.

  • All signed-in users share the same data. Restrict access to the OIDC client at your provider.
  • Sessions end 12 hours after login or on restart. Use one instance or sticky routing; instances do not share sessions.
  • Signing out ends only the Gazel session, not the provider session.

Development

See CONTRIBUTING.md for dev setup, testing, and design system documentation.

Copyright (C) 2026 simplyRoba.

This project is developed spec-driven with AI assistance, reviewed by a critical human.

About

Fuel cost and mileage tracker - the gazel keeps pace with every fill-up so you don't have to

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages