smart-garage

smart-garage

Docker app from Flizzy's Repository

Overview

Smart Garage — self-hosted vehicle management for Unraid. Maintenance, fuel analytics, expenses, documents, and reminders. One container, SQLite database, automatic updates via :latest image.
Smart Garage

Smart Garage

Your vehicles. Your data. Your NAS.

Self-hosted vehicle management for Unraid and homelab — maintenance, fuel, costs, and documents in one Docker container.

Release License: MIT GHCR

Install · Features · Updates · Changelog · Report issue


Why Smart Garage?

Most vehicle apps live in the cloud — your service history, receipts, and fuel data on someone else's server. Smart Garage runs entirely on your Unraid box or homelab: one container, one data folder, no subscription.

Built for people who want a clean garage dashboard without handing their data to a third party.

✨ Features

🚗 Vehicles Profiles, photos, specs from the built-in catalog or manual entry, modifications, odometer quick-update
🔧 Maintenance Schedules, service log with parts & fluids, overdue/due-soon dashboard
🛡️ TÜV / HU & AU Inspection due dates with reminders
Fuel Quick fill-up, consumption analytics (L/100 km or MPG), projected annual usage, charts
🧭 Odometer Log readings over time, distance per month, yearly projection, charts
🧮 Fuel calculator Route planner (your location or type-ahead address search → road distance), trip cost, split per person, tank & range, commute per month/year, vehicle comparison, "is the cheaper station worth the detour?", mileage reimbursement — collapsible cards that remember what you typed
📍 Live fuel prices Pump prices around you by GPS or address, radius slider, your grade (E5/E10/Diesel), cheapest-first, brand filter, manual + auto refresh. Germany, via a free Tankerkönig key entered in the app or the container — see docs/FUEL-PRICES.md
💶 Expenses & costs Track costs, monthly overview dashboard, category breakdown
📋 Insurance Policies, SF class, premiums, renewal tracking
📄 Documents Store invoices and PDFs per vehicle
🕓 History One timeline for services, fill-ups and odometer updates
🔔 Notifications Push alerts via Pushover or Telegram — delivered by a background worker, no open browser tab needed
📝 Notes & wishlist Markdown notes linked to vehicles or services, plus planned purchases
👨‍👩‍👧 Family garage Share vehicles with other users (view or edit)
💾 Backup JSON backup with restore, CSV export from the UI
📱 Installable (PWA) Add to home screen on iOS, Android, desktop Chrome/Edge
🎨 Personal Dark/light mode, 9 design presets, custom background with adjustable blur
🌍 Languages & units English & German · kilometres or miles · litres or US gallons · your currency
🧩 Your fields Hide fields you don't need (HSN/TSN, VIN…) and add custom ones like tire size
👤 Multi-user Open local registration, per-user data + sharing, optional OIDC single sign-on
📦 Simple ops Single Docker image, SQLite on /data, no extra database container

🖥️ Install

Unraid — Community Applications

Smart Garage is available in the Unraid Community Applications store. No docker compose required.

  1. Open the Apps tab (Community Applications must be installed).
  2. Search for Smart Garage.
  3. Click Install and review the template settings:
    • Web UI port — default 3000 (change if that port is in use)
    • AppData — default /mnt/user/appdata/smart-garage (database + uploads; created automatically)
    • Upload limits — optional, defaults are fine for most users
  4. Click Apply, then open the WebUI (or http://<unraid-ip>:<port>/).
  5. Register your account (first user becomes admin) and add your first vehicle.

Updates: Docker → smart-garageForce Update (pulls ghcr.io/flizzy27/smart-garage:latest).

More detail: docs/UNRAID.md

Docker — Linux, NAS, homelab (no Unraid)

Use the pre-built image from GitHub Container Registry. You need a persistent volume mounted at /data inside the container.

docker run:

docker run -d \
  --name smart-garage \
  --restart unless-stopped \
  -p 3000:3000 \
  -v smart-garage-data:/data \
  -e DATABASE_URL=file:/data/smart-garage.db \
  -e UPLOAD_DIR=/data/uploads \
  -e MAX_UPLOAD_SIZE_MB=25 \
  -e MAX_IMAGE_SIZE_MB=10 \
  ghcr.io/flizzy27/smart-garage:latest

Open http://localhost:3000/ (or your host IP), register, and add a vehicle.

Docker Compose (optional):

docker compose up -d

Uses the same image and a named volume — see docker-compose.yml.

Image: ghcr.io/flizzy27/smart-garage:latest

Full ops guide: docs/INSTALL.md

Updates

Channel Image tag When updated
Stable (default) ghcr.io/flizzy27/smart-garage:latest Version release tags only (v0.13.0, …) — CI must pass first
Development ghcr.io/flizzy27/smart-garage:development Every push to main after CI passes
Platform Stable update Dev preview
Unraid Docker → Force Update (uses :latest) Change repository tag to :development in container settings
Docker docker pull ghcr.io/flizzy27/smart-garage:latest docker pull ghcr.io/flizzy27/smart-garage:development

Promote to stable: when a dev build is approved, tag a release (git tag v0.10.1 && git push origin v0.10.1). That publishes :latest.

Pin a version: ghcr.io/flizzy27/smart-garage:v0.13.0

💾 Backup

In-app backup: Settings → Data & export — download a full JSON backup (restorable) or a CSV export of expenses.

Manual backup — archive your AppData / volume:

/data/
├── smart-garage.db    # all app data
└── uploads/           # images & documents

On Unraid: /mnt/user/appdata/smart-garage

📚 Documentation

Doc Description
docs/UNRAID.md Unraid install & troubleshooting
docs/INSTALL.md Backup, restore, updates
docs/OIDC.md Optional single sign-on (Pocket ID, Authentik, Keycloak…)
docs/FUEL-PRICES.md Optional live fuel prices (Tankerkönig key, coverage, privacy)
docs/CA-SUBMISSION.md Community Applications submission packet
CHANGELOG.md Release history
SECURITY.md Security policy

🏗️ Tech

Next.js 16 · React 19 · SQLite · Prisma · Tailwind CSS 4 · next-intl

Single standalone Docker image (~production-ready for homelab scale).

📄 License

MIT — Copyright (c) 2026 flizzy27


Made for homelab & Unraid · No cloud required

Install smart-garage on Unraid in a few clicks.

Find smart-garage in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for smart-garage Review the template variables and paths Click Install

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/flizzy27/smart-garage:latest
Last Updated2026-08-23
First Seen2026-06-20

Runtime arguments

Web UI
http://[IP]:[PORT:3000]/
Network
bridge
Shell
sh
Privileged
false

Template configuration

Web UIPorttcp

Web interface port.

Target
3000
Default
3000
Value
3000
AppDataPathrw

SQLite database and uploads. Created automatically by Unraid.

Target
/data
Default
/mnt/user/appdata/smart-garage
Value
/mnt/user/appdata/smart-garage
Max upload size (MB)Variable

Maximum document upload size (PDF, receipts).

Target
MAX_UPLOAD_SIZE_MB
Default
25
Value
25
Max image size (MB)Variable

Maximum vehicle image upload size.

Target
MAX_IMAGE_SIZE_MB
Default
10
Value
10
Database URLVariable
Target
DATABASE_URL
Default
file:/data/smart-garage.db
Value
file:/data/smart-garage.db
Upload directoryVariable
Target
UPLOAD_DIR
Default
/data/uploads
Value
/data/uploads
Node environmentVariable
Target
NODE_ENV
Default
production
Value
production
Fuel prices: Tankerkönig API keyVariable

Optional. Enables the live fuel price page (German filling stations). Request a free key at https://onboarding.tankerkoenig.de/ — registrations are reviewed by hand, so the key arrives by email after a few days, up to about a week. You can paste it here, or enter it later under Settings -> Fuel prices in the app (no container restart needed). Left empty, the Fuel prices page just explains how to get a key. Guide: https://github.com/flizzy27/smart-garage/blob/main/docs/FUEL-PRICES.md

Target
TANKERKOENIG_API_KEY
SSO: issuer URLVariable

Optional single sign-on. Base URL of your OpenID Connect provider, e.g. https://id.example.com (Pocket ID, Authentik, Keycloak, Authelia). Leave empty to keep username/password login only. Guide: https://github.com/flizzy27/smart-garage/blob/main/docs/OIDC.md

Target
OIDC_ISSUER
SSO: client IDVariable

Optional single sign-on. Client ID registered with your provider.

Target
OIDC_CLIENT_ID
SSO: client secretVariable

Optional single sign-on. Client secret registered with your provider.

Target
OIDC_CLIENT_SECRET
SSO: button labelVariable

Optional. Text on the login button, e.g. 'Pocket ID'. Defaults to 'Single Sign-On'.

Target
OIDC_BUTTON_LABEL
SSO: redirect URIVariable

Optional. Only needed behind a reverse proxy that does not forward X-Forwarded-Proto/Host. Example: https://garage.example.com/api/auth/oidc/callback

Target
OIDC_REDIRECT_URI
SSO: allow account creationVariable

Optional. 'false' only lets people sign in who already have an account here. Default is 'true'.

Target
OIDC_ALLOW_SIGNUP