{"id":45918391,"url":"https://github.com/nash87/parkhub-rust","last_synced_at":"2026-04-21T03:05:52.040Z","repository":{"id":341114135,"uuid":"1168935513","full_name":"nash87/parkhub-rust","owner":"nash87","description":"Modern parking management platform built in Rust — Axum, redb, React 19. 64 feature flags, 10 languages, 1685 tests. Self-hosted, modular, AI-driven.","archived":false,"fork":false,"pushed_at":"2026-03-28T08:14:12.000Z","size":11650,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-28T12:49:58.548Z","etag":null,"topics":["2fa","axum","demo","dsgvo","gdpr","germany","glass-morphism","iot","management-system","modular","on-premise","open-source","parking","parking-management","react","rust","self-hosted","smart-parking","tailwindcss"],"latest_commit_sha":null,"homepage":"https://parkhub-rust-demo.onrender.com","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nash87.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY-AUDIT.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-28T00:53:23.000Z","updated_at":"2026-03-28T08:14:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nash87/parkhub-rust","commit_stats":null,"previous_names":["nash87/parkhub-rust"],"tags_count":73,"template":false,"template_full_name":null,"purl":"pkg:github/nash87/parkhub-rust","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nash87%2Fparkhub-rust","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nash87%2Fparkhub-rust/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nash87%2Fparkhub-rust/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nash87%2Fparkhub-rust/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nash87","download_url":"https://codeload.github.com/nash87/parkhub-rust/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nash87%2Fparkhub-rust/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290799,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2fa","axum","demo","dsgvo","gdpr","germany","glass-morphism","iot","management-system","modular","on-premise","open-source","parking","parking-management","react","rust","self-hosted","smart-parking","tailwindcss"],"created_at":"2026-02-28T08:03:36.509Z","updated_at":"2026-04-19T02:15:42.773Z","avatar_url":"https://github.com/nash87.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/app.png\" alt=\"ParkHub\" width=\"96\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eParkHub — Self-Hosted Parking Management\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/nash87/parkhub-rust/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/nash87/parkhub-rust/actions/workflows/ci.yml/badge.svg\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003ca href=\"CHANGELOG.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/Release-v4.13.0-brightgreen.svg?style=flat-square\" alt=\"v4.13.0\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square\" alt=\"MIT License\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.rust-lang.org/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Rust-1.94%2B-orange.svg?style=flat-square\u0026logo=rust\u0026logoColor=white\" alt=\"Rust 1.94+\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://astro.build/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Astro-6-BC52EE.svg?style=flat-square\u0026logo=astro\u0026logoColor=white\" alt=\"Astro 6\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://react.dev/\"\u003e\u003cimg src=\"https://img.shields.io/badge/React-19-61DAFB.svg?style=flat-square\u0026logo=react\u0026logoColor=black\" alt=\"React 19\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://tailwindcss.com/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Tailwind_CSS-4-06B6D4.svg?style=flat-square\u0026logo=tailwindcss\u0026logoColor=white\" alt=\"Tailwind CSS 4\"\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Tests-1785%2B-success.svg?style=flat-square\" alt=\"1785+ tests\"\u003e\n  \u003ca href=\"docs/GDPR.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/DSGVO-konform-green.svg?style=flat-square\" alt=\"GDPR Compliant\"\u003e\u003c/a\u003e\n  \u003ca href=\"COMPLIANCE-REPORT.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/Compliance-Audited-brightgreen.svg?style=flat-square\" alt=\"Compliance Audited\"\u003e\u003c/a\u003e\n  \u003ca href=\"docker-compose.yml\"\u003e\u003cimg src=\"https://img.shields.io/badge/Docker-ready-2496ED.svg?style=flat-square\u0026logo=docker\u0026logoColor=white\" alt=\"Docker Ready\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eIhre Daten. Ihr Server. Ihre Kontrolle.\u003c/strong\u003e\u003cbr\u003e\n  The on-premise parking management runtime for the canonical ParkHub product.\u003cbr\u003e\n  Ships as a \u003cstrong\u003esingle binary\u003c/strong\u003e with zero external dependencies. Zero cloud. Zero tracking.\u003cbr\u003e\n  100% GDPR compliant by design.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://parkhub-rust-demo.onrender.com\"\u003e\u003cstrong\u003e🚀 Try the Live Demo\u003c/strong\u003e\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"docs/INSTALLATION.md\"\u003eInstallation\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"docs/API.md\"\u003eAPI Docs\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"docs/GDPR.md\"\u003eGDPR Guide\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"docs/COMPLIANCE.md\"\u003eCompliance\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"docs/SECURITY.md\"\u003eSecurity\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"CHANGELOG.md\"\u003eChangelog\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## What's New in v4.13.0\n\n| Feature | Description |\n|---------|-------------|\n| **Modular UX Platform** | 72-module registry with admin dashboard at `/admin/modules`, runtime enable/disable toggle for safe modules, per-module JSON Schema config editor, and Command Palette (`Cmd+K` / `Ctrl+K` / `/`). See [docs/FEATURES.md § Modular UX Platform](docs/FEATURES.md#4-modular-ux-platform) |\n| **Backend refactors** | `db.rs` (4528 LOC), `api/mod.rs` router, and `api/modules.rs` (3066 LOC) split into focused sub-modules; `main.rs` bootstrap helpers extracted for testability |\n| **Security hardening** | Cross-tenant admin write guards on user updates; async lock scopes tightened under load |\n| **Testing depth** | `cargo-fuzz` harnesses for JWT + HMAC (nightly), `proptest` on `parkhub-common` validators, `cargo-mutants` weekly, `insta` snapshot tests |\n| **OpenAPI coverage closed** | Pass 1 + pass 2 wired 280 of 282 annotated handlers (99.3 %) into `ApiDoc`; spec at [`docs/openapi/rust.json`](docs/openapi/rust.json) now exposes **229 paths** and regenerates on every schema change |\n| **Runtime toolchain refresh** | Rust builder bumped to `rust:1.95-slim`; distroless runtime base pinned to `cc-debian13@sha256:56aaf20…` |\n\n---\n\n## Product Model\n\nParkHub is one product with multiple runtimes. This Rust edition shares the same core product model as the PHP edition, while keeping a Rust-first deployment story: single binary, embedded storage, and local-first operation.\n\nNot every advanced module is equally hardened or equally enabled by default across runtimes. Treat the shared booking, admin, compliance, and theme surfaces as the core product line; treat advanced integrations and enterprise modules as optional and runtime-sensitive.\n\n---\n\n## 💡 Why Self-Hosted?\n\nMost parking management SaaS costs 200–2,000 EUR/month, stores your data on US cloud infrastructure, and requires a data processing agreement just to get started.\n\nParkHub is different. It runs on your server — a Raspberry Pi, a VPS, or your company network. Your data never leaves your premises, which means **no GDPR processor agreement needed**, no CLOUD Act exposure, and no monthly fees. The entire source code is MIT-licensed and auditable.\n\n---\n\n## 🚀 Quick Start\n\n### 🐳 Docker (recommended)\n\n```bash\ngit clone https://github.com/nash87/parkhub-rust.git \u0026\u0026 cd parkhub-rust\ndocker compose up -d\n# Open http://localhost:8080 — admin password is in the logs\n```\n\nThe first build takes 5–10 minutes (compiles Rust + React from source). After that, starts are instant.\n\n### 📦 Pre-built binary\n\nDownload the latest release binary from [GitHub Releases](https://github.com/nash87/parkhub-rust/releases/latest) (built automatically by CI on every tagged release):\n\n```bash\n# Linux x86_64\ncurl -Lo parkhub-server https://github.com/nash87/parkhub-rust/releases/latest/download/parkhub-server-linux-x86_64\nchmod +x parkhub-server\n./parkhub-server --headless --unattended --port 8080\n```\n\n### 🔨 Build from source\n\n```bash\ngit clone https://github.com/nash87/parkhub-rust.git \u0026\u0026 cd parkhub-rust\n# Default build is pure MIT and headless (no GUI):\ncargo build --release --package parkhub-server\n./target/release/parkhub-server --headless --unattended --port 8080\n```\n\nTo build the optional desktop GUI (pulls Slint, which is GPL-3.0 — see [LICENSES.md](LICENSES.md)):\n\n```bash\ncargo build --release --package parkhub-server --features gui\n```\n\n**[Live Demo](https://parkhub-rust-demo.onrender.com)** | Login: `admin@parkhub.test` / `demo` | (auto-resets every 6 hours)\n\n---\n\n## ✨ Feature Highlights\n\n### 🏢 Core Platform\n- **Full booking lifecycle** — one-tap quick booking, recurring reservations, guest bookings, swap requests, waitlists, automatic no-show release\n- **Visual lot editor** — per-floor interactive grid with drag-and-drop, real-time occupancy, color-coded availability\n- **4-tier RBAC** — user, premium, admin, superadmin with JWT session auth and token refresh\n- **Credits system** — monthly quotas with per-booking deduction\n- **Absence tracking** — homeoffice, vacation, sick leave with team overview and iCal import\n- **Admin dashboard** — occupancy stats, 7-day booking charts, weekday/hour heatmaps, CSV export, announcements\n\n### 🌍 Localization \u0026 Accessibility\n- **10 languages** — EN, DE, FR, ES, IT, PT, TR, PL, JA, ZH with runtime hot-loading\n- **12 switchable themes** — theme switching is part of the product contract, but the exact runtime theme set is still being pulled onto a shared semantic registry and parity gate\n- **Accessible parking** — `is_accessible` slots with 30-min priority booking, admin toggle, stats\n\n### 🎨 Theme Contract\n- **Shared product surface** — themes are a core ParkHub surface, not decorative runtime extras\n- **Semantic parity first** — theme switching must preserve state clarity, hierarchy, contrast, and critical controls across runtimes\n- **Registry alignment in progress** — Rust and PHP currently expose different concrete theme inventories, so public naming is gated until both runtimes match the shared registry\n\n### 🔌 Integrations \u0026 Extensions\n- **Webhooks v2** — HMAC-SHA256 signed event delivery with retry logic and delivery logs\n- **iCal Calendar Sync** — subscribe to bookings from Google Calendar, Outlook, or Apple Calendar\n- **Web Push notifications** — VAPID-based push with action buttons and service worker handler\n- **Stripe payments** — checkout sessions, webhook handler, payment history, self-service config\n- **OAuth/Social login** — self-service Google + GitHub OAuth\n- **Enterprise identity (optional)** — SAML/SSO and other advanced identity flows are runtime-sensitive and should be treated as optional enterprise modules, not as baseline auth\n- **GraphQL API** — full schema alongside REST with interactive GraphiQL playground\n- **Plugin/extension system** — trait-based plugin architecture with event hooks\n\n### 📊 Analytics \u0026 Operations\n- **Admin analytics dashboard** — daily bookings/revenue charts, peak hours heatmap, top lots, user growth\n- **CO₂ tracking** — per-booking CO₂ estimates via `FuelType` enum + `/api/v1/bookings/co2-summary` (carpool detection, dashboard KPI tile, 10-locale copy)\n- **Prometheus metrics** — `/metrics` endpoint for Grafana/K8s monitoring\n- **Audit log** — full audit trail with UI, filtering, and multi-format export (PDF, CSV, JSON)\n- **Scheduled reports** — automated daily/weekly/monthly email digests\n- **k6 load tests** — smoke, load, stress, and spike test scripts in `tests/load/`\n- **Lighthouse CI** — accessibility ≥ 95, performance ≥ 90, SEO ≥ 95 gates\n\n### 🔔 Notification Contract\n- **Core notifications** — in-app notifications plus transactional email\n- **Advanced notifications** — Web Push via VAPID where configured\n- **Gated channels** — SMS/WhatsApp-style channels should be treated as gated unless explicitly proven operational in the active runtime\n\n### 🎟️ Guest and Pass Contract\n- **Core guest flow** — guest bookings and host-visible guest handling\n- **Advanced pass flow** — digital passes, QR generation, visitor pre-registration, and check-in surfaces\n- **Runtime-sensitive surfaces** — QR/check-in/public verification flows should be treated as advanced and runtime-sensitive, not as unconditional baseline behavior\n\n### 🔒 Security\n- **httpOnly cookie auth** with SameSite=Lax (XSS-proof, Bearer fallback for APIs)\n- **Argon2id** password hashing (wrapped in spawn_blocking)\n- **Optional AES-256-GCM** database encryption at rest\n- **Auto-generated TLS 1.3** certificates (rustls, no OpenSSL)\n- **Constant-time token comparison** (subtle crate)\n- **IP-based rate limiting** — 5 login/min, 100 req/s global\n- **Nonce-based CSP + HSTS** + security headers\n- **2FA/TOTP** — QR code enrollment, backup codes, per-account enable/disable\n- **Session management** — list and revoke active tokens, login history with IP/user-agent\n- **Complete audit log** — every write operation recorded\n\n### 🔐 Auth Contract\n- **Core auth** — login, registration, password reset, RBAC, 2FA/TOTP, session management\n- **Integration auth** — OAuth providers such as Google and GitHub\n- **Enterprise identity** — SAML/SSO and similar flows remain optional and runtime-sensitive\n\n### 🧩 Modularity\n**72 modules** across 11 categories in a single declarative registry, all exposed in the admin dashboard at `/admin/modules`. 15 are safe to flip on/off at runtime via `PATCH /api/v1/admin/modules/{name}`; 5 ship JSON Schema config editors at `PATCH /api/v1/admin/modules/{name}/config`. Every toggle and config write lands in the audit log. A Command Palette (`Cmd+K` / `Ctrl+K` / `/`) auto-seeds \"Go to…\" entries for every active module with a UI route. Compile-time: build only what you need via `--features \"headless,mod-...\"`. See [ARCHITECTURE.md § Module System](ARCHITECTURE.md#module-system) and [docs/FEATURES.md § Modular UX Platform](docs/FEATURES.md#4-modular-ux-platform).\n\n---\n\n## 📸 Screenshots\n\n| | |\n|---|---|\n| ![Dashboard](screenshots/02-dashboard.png) | ![Booking](screenshots/05-book.png) |\n| Dashboard with occupancy stats | Interactive booking flow |\n| ![Admin Panel](screenshots/08-admin.png) | ![Dark Mode](screenshots/09-dark-mode.png) |\n| Admin panel with layout editor | Full dark mode support |\n| ![Login](screenshots/01-login.png) | ![Vehicles](screenshots/07-vehicles.png) |\n| Clean login screen | Vehicle registry |\n| ![Modules Dashboard](screenshots/10-modules-dashboard.png) | ![Command Palette](screenshots/11-command-palette.png) |\n| Admin Modules Dashboard — toggle plugins + edit JSON-schema config without redeploying (v4.13.0) | Command Palette (Cmd+K) — navigate + run actions from one search bar |\n\n---\n\n## 🛠️ Tech Stack\n\n| Layer | Technology |\n|-------|-----------|\n| **Language** | [Rust](https://www.rust-lang.org/) 1.94+ (edition 2024) |\n| **HTTP Framework** | [Axum](https://github.com/tokio-rs/axum) 0.8 + [Tokio](https://tokio.rs/) async runtime |\n| **Database** | [redb](https://github.com/cberner/redb) 2 — embedded pure-Rust key-value store |\n| **Encryption** | AES-256-GCM at rest · Argon2id passwords · rustls TLS 1.3 |\n| **Frontend** | [React](https://react.dev/) 19 + [TypeScript](https://www.typescriptlang.org/) + [Astro](https://astro.build/) 6 |\n| **Styling** | [Tailwind CSS](https://tailwindcss.com/) 4 — 12 switchable themes |\n| **API Docs** | [utoipa](https://github.com/juhaku/utoipa) + Swagger UI — full OpenAPI 3.0 spec at [`docs/openapi/rust.json`](docs/openapi/rust.json), 229 paths, drift-gated in CI |\n| **Desktop Client** | [Slint](https://slint.dev/) GUI with system tray (Windows/macOS) |\n| **Service Discovery** | [mdns-sd](https://github.com/keepsimple1/mdns-sd) — zero-config LAN autodiscovery |\n| **Deployment** | Single binary · Docker · Helm chart · Render/Koyeb PaaS |\n\n---\n\n## ⚖️ How ParkHub Compares\n\n| Feature | **ParkHub** | Parkeon | ParkMobile | SpotHero |\n|---------|-------------|---------|------------|---------|\n| **Self-hosted / On-premise** | ✅ Yes | ❌ No | ❌ No | ❌ No |\n| **Open source** | ✅ MIT | ❌ No | ❌ No | ❌ No |\n| **Monthly SaaS fee** | 🆓 Free | 💰 High | 💰 High | 💰 High |\n| **GDPR compliant by default** | ✅ Yes | ⚠️ Contract needed | ⚠️ Contract needed | ⚠️ Contract needed |\n| **Data leaves your premises** | ✅ Never | ❌ Always | ❌ Always | ❌ Always |\n| **Single binary deployment** | ✅ Yes | ❌ No | ❌ No | ❌ No |\n| **Customizable / Extensible** | ✅ 72 modules · runtime toggles · JSON Schema config | ❌ No | ❌ No | ❌ No |\n| **Multi-language UI** | ✅ 10 languages | ⚠️ Limited | ⚠️ Limited | ⚠️ Limited |\n| **API access** | ✅ Full REST + GraphQL | ⚠️ Enterprise only | ⚠️ Limited | ⚠️ Limited |\n| **Air-gapped deployment** | ✅ Yes | ❌ No | ❌ No | ❌ No |\n\n\u003e *ParkHub is designed for organizations that need full data sovereignty. SaaS tools are optimized for consumer/enterprise cloud use cases.*\n\n---\n\n## 🏗️ Architecture\n\n```\n                    ┌─────────────────────────────────┐\n                    │     React 19 + Astro 6 SPA      │\n                    │   TypeScript · Tailwind CSS 4    │\n                    └───────────────┬─────────────────┘\n                                    │ httpOnly Cookie + Bearer Token\n                    ┌───────────────▼─────────────────┐\n                    │       Axum 0.8 HTTP Server       │\n                    │   /api/v1/*  · /swagger-ui       │\n                    │   /metrics   · /health           │\n                    ├─────────────────────────────────┤\n                    │  redb (embedded key-value DB)    │\n                    │  Optional AES-256-GCM at rest    │\n                    └─────────────────────────────────┘\n                          Single Rust binary (~15 MB)\n```\n\nThe entire stack — API server, database, and frontend — compiles into a **single binary**. No PostgreSQL, no Redis, no nginx. Just download and run. The React frontend is embedded via `rust-embed` and served as static files.\n\nFor LAN deployments, mDNS autodiscovery lets clients find the server without any DNS configuration. A desktop client (Slint UI) with system tray integration is available for Windows and macOS.\n\nFor a deep dive into code structure, database design, and key design decisions, see **[ARCHITECTURE.md](ARCHITECTURE.md)**.\n\n---\n\n## 🚢 Deployment\n\nParkHub runs anywhere — from a Raspberry Pi to Kubernetes.\n\n| Method | Complexity | Best For |\n|--------|------------|----------|\n| **Docker Compose** | Low | Standard deployment — `docker compose up -d` |\n| **Kubernetes / Helm** | Medium | Enterprise — full chart with HPA, PVC, all module flags, TLS ingress |\n| **Bare Metal** | Low | Single binary, zero dependencies, x86_64 + ARM64 |\n| **Windows** | Low | Desktop GUI with system tray and setup wizard |\n| **PaaS** (Render) | Low | Quick demos — [Live Demo](https://parkhub-rust-demo.onrender.com) |\n\n- **Container images**: `ghcr.io/nash87/parkhub-rust:latest` (linux/amd64, distroless — ~25 MB)\n- **Helm chart**: `helm/parkhub/` — see [helm/README.md](helm/README.md)\n\nSee [docs/INSTALLATION.md](docs/INSTALLATION.md) for detailed guides.\n\n---\n\n## 🧪 Testing\n\n**1,785 Rust unit + integration tests** (`cargo test --workspace`) plus Vitest frontend and 29 Playwright E2E specs. Clippy runs in pedantic + nursery mode with zero warnings. Lighthouse CI enforces accessibility ≥ 95, performance ≥ 90.\n\n```bash\ncargo test --workspace           # Rust backend\ncd parkhub-web \u0026\u0026 npx vitest run # Frontend unit tests\nnpx playwright test              # E2E tests\n```\n\nSupplementary safety nets (all CI-enforced):\n\n- **`cargo-fuzz`** — nightly fuzz harnesses on JWT decoding + HMAC verification (`fuzz/`)\n- **`proptest`** — property tests on `parkhub-common` validators\n- **`cargo-mutants`** — weekly mutation testing, survivors fail the workflow\n- **`insta`** — snapshot tests for router + OpenAPI output\n- **Lighthouse CI** — a11y ≥ 95, perf ≥ 90, SEO ≥ 95 gates\n- **CodeQL + Trivy** — SAST + container CVE scanning on every push\n- **SBOM + cosign** — every release image attested with Syft SBOM and cosign signature\n- **cargo-deny** — advisories, licenses, bans, sources on every PR\n\n---\n\n## 📖 API Documentation\n\nInteractive API docs at `/swagger-ui` when the server is running. The full OpenAPI 3.0 spec — snapshotted at [`docs/openapi/rust.json`](docs/openapi/rust.json) and regenerated on every schema change — covers **229 paths** and 280 documented operations across auth, bookings, lots, vehicles, admin, modules, GDPR, and more. A CI drift gate (`make drift`) blocks any handler change that forgets to update the spec. The OpenAPI coverage work landed in v4.13.0 and wired 280 of 282 annotated handlers (99.3 %) into `ApiDoc`.\n\n**[Live API Docs →](https://parkhub-rust-demo.onrender.com/swagger-ui)**\n\nA ready-made Postman collection is available at `docs/postman/` — see [ARCHITECTURE.md](ARCHITECTURE.md#postman-collection) for import instructions.\n\n---\n\n## ⚙️ Configuration\n\nAll configuration is via environment variables or `config.toml`. Key variables:\n\n| Variable | Purpose |\n|----------|---------|\n| `PARKHUB_DB_PASSPHRASE` | Enable AES-256-GCM database encryption |\n| `SMTP_HOST` / `SMTP_USER` / `SMTP_PASS` | Email notifications |\n| `PARKHUB_ADMIN_PASSWORD` | Set admin password (auto-generated if omitted) |\n| `DEMO_MODE=true` | Enable demo overlay with 6-hour auto-reset |\n| `OAUTH_GOOGLE_CLIENT_ID` | Google OAuth client ID |\n| `OAUTH_GITHUB_CLIENT_ID` | GitHub OAuth client ID |\n| `RUST_LOG=info` | Log level |\n\nFull reference: [docs/CONFIGURATION.md](docs/CONFIGURATION.md)\n\n---\n\n## 🐘 PHP Edition\n\nA feature-equivalent **PHP edition** (Laravel 12 + MySQL/SQLite/PostgreSQL) exists for environments where shared hosting compatibility matters. Both editions share the same React frontend and REST API surface, so they're fully interchangeable.\n\n**[nash87/parkhub-php →](https://github.com/nash87/parkhub-php)**\n\n---\n\n## 📜 Legal Compliance\n\nParkHub is built for GDPR/DSGVO compliance by design. Audited against **9 regulatory frameworks**:\n\n**GDPR** (EU) | **DSGVO** (DE) | **TTDSG** (DE) | **DDG** (DE) | **BDSG** (DE) | **NIS2** (EU) | **CCPA** (US) | **UK GDPR** | **nDSG** (CH)\n\n| Document | Scope |\n|----------|-------|\n| [GDPR Guide](docs/GDPR.md) | Data inventory, user rights (Art. 15–22), retention, TOMs |\n| [Compliance Matrix](docs/COMPLIANCE.md) | DSGVO, TTDSG, DDG, BDSG, GoBD, NIS2, UK GDPR, CCPA, nDSG, LGPD |\n| [Compliance Report](COMPLIANCE-REPORT.md) | Automated compliance checks with scoring |\n| [Security Model](docs/SECURITY.md) | Auth, encryption, OWASP Top 10, vulnerability disclosure |\n| [Privacy Template](docs/PRIVACY-TEMPLATE.md) | Ready-to-use Datenschutzerklärung (German) |\n| [Impressum Template](docs/IMPRESSUM-TEMPLATE.md) | DDG §5 provider identification (German) |\n| [BFSG Accessibility Template](legal/bfsg-barrierefreiheit-template.md) | German Accessibility Improvement Act (BFSG) statement — required for most commercial deployments from 2025-06-28 |\n| [EU AI Act Transparency Template](legal/ai-act-transparency-template.md) | Art. 50 transparency notice — required if the operator enables AI/ML features |\n| [Third-Party Licenses](LICENSE-THIRD-PARTY.md) | All Rust crate and npm dependency licenses |\n\nSee [`legal/`](legal/) for the full template set — all documents are operator-customizable, not binding legal texts.\n\n**Key compliance features:** Argon2id passwords, AES-256-GCM encryption at rest, TLS 1.3, audit logging, data export (Art. 15/20), account erasure (Art. 17), no cookies, no tracking, no third-party data processors by default.\n\n---\n\n## 🤝 Contributing\n\nContributions are very welcome! Here's how to get started:\n\n1. **Fork** the repository and create a feature branch\n2. **Read** [DEVELOPMENT.md](DEVELOPMENT.md) for the local dev loop, and [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md) for code style, commit conventions, and PR process\n3. **Install pre-commit hooks** (config already in `.pre-commit-config.yaml`):\n   ```bash\n   pre-commit install\n   ```\n4. **Run the pre-push gate** before opening a PR — `make ci` mirrors the GitHub Actions pipeline (fmt + clippy + check + test + frontend + OpenAPI drift):\n   ```bash\n   make ci             # full local CI mirror — required before push\n   make act            # optional: run the actual workflows locally via nektos/act (.actrc preconfigured)\n   ```\n5. **Open a PR** — CI will run automatically. The [OpenAPI parity contract](docs/openapi-parity.md) ensures the REST surface stays aligned with the [PHP edition](https://github.com/nash87/parkhub-php).\n\n**Bug reports and feature requests:** [GitHub Issues](https://github.com/nash87/parkhub-rust/issues)\n\n**Security vulnerabilities:** please follow the [responsible disclosure policy](SECURITY.md) — do not open a public issue.\n\n---\n\n## 📄 License\n\nMIT — see [LICENSE](LICENSE).\n\nThe **default build** (`cargo build`) is pure MIT and uses the `headless` feature — no GPL dependencies. Server/Docker images and the binaries published to GitHub Releases are all built this way.\n\nThe **optional `gui` feature** (`cargo build --features gui`) pulls [Slint](https://slint.dev/) (GPL-3.0 community edition or commercial license) for the desktop tray client. Binaries built with this feature are GPL-3.0.\n\nSee [LICENSES.md](LICENSES.md) and [LICENSE-THIRD-PARTY.md](LICENSE-THIRD-PARTY.md) for the full dependency license inventory.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnash87%2Fparkhub-rust","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnash87%2Fparkhub-rust","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnash87%2Fparkhub-rust/lists"}