尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Vehicle vitals monitoring, threshold warnings, predictive maintenance and a full service record for modern cars.查看完整 README ↗Turn vehicle telemetry into clear health alerts, maintenance forecasts, range estimates, and trip history.
Live demo: vitadrive.vercel.app
The dashboard includes responsive Trips, Health, and Overview views:
| Trips | Health | Mobile Overview |
|---|---|---|
flowchart LR
bridge["OBD-II bridge"] -->|vehicle API key| api["FastAPI on Vercel"]
clients["REST clients"] --> api
browser["Browser SPA<br/>native ES modules"] -->|Clerk session| api
api --> security["Clerk JWT · API keys<br/>DB rate limits · CSP"]
api --> services["Service layer<br/>monitor · anomaly JSON · maintenance<br/>range · trips · retention"]
services --> sqlalchemy["SQLAlchemy Core"]
sqlalchemy --> postgres["Supabase PostgreSQL"]
sqlalchemy --> sqlite["SQLite"]
cron["Vercel Cron"] --> prune["/api/cron/prune"]
prune --> services
services -. optional errors and traces .-> sentry["Sentry"]
See the architecture guide for the request lifecycle, schema and migrations, authentication modes, retention, and configuration.
| Decision | Why | Trade-off |
|---|---|---|
| FastAPI | Typed request validation, OpenAPI, and one API that serves both the dashboard and REST clients. | Application behavior follows FastAPI/Starlette middleware and dependency semantics. |
| SQLAlchemy Core + Alembic | Explicit queries support SQLite and PostgreSQL; migrations make schema changes reproducible. | Schema changes and migration scripts require deliberate, manual review. |
| Database-backed rate limits | Counters are shared across short-lived Vercel instances. | Limited requests add database work and depend on database availability. |
| Daily summaries after 30 days | Keeps long-term sensor trends while bounding raw-reading growth. | Older samples are represented by daily aggregates, not individually retained readings. |
| Vanilla ES modules, no build | The static dashboard can be served directly without a bundler or generated assets. | Module boundaries and imports are maintained by hand; modern browser module support is required. |
| Anomaly model exported to JSON | Inference stays in plain Python without a PyTorch or NumPy runtime dependency. | Training is a separate PyTorch workflow and must export updated weights. |
| Clerk JWT authentication | Public JWKS verification scopes vehicle data to the signed-in owner without storing passwords. | Deployed environments must configure Clerk; auth-off mode is only for trusted local development. |
| Stdlib-only bridge with offline buffer | Runs beside the car, retries REST delivery, and keeps queued readings in local SQLite during outages. | The bridge must run continuously on a connected device and manage its local buffer. |
| Strict script CSP | External modules and delegated actions avoid allowing inline script execution. | New UI behavior must use external modules rather than inline scripts or handlers. |
pip-audit checks dependencies; Dependabot proposes weekly Python and GitHub Actions updates.pytest --cov reports 181 passed, 7 skipped; 89.21% total coverage (85% required).onclick attributes. Native modules and delegated data-action events removed that script exception.python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
vitadrive demo --days 60
vitadrive serve
Open http://127.0.0.1:8000. Local use defaults to SQLite and auth-off mode; do not expose that configuration publicly.
docker compose up --build
docker compose run --rm app vitadrive demo
Open http://localhost:8000. The database port is not
published to the host. Stop the stack and remove its local volume with
docker compose down -v.
Install the optional adapter support on a device connected to the vehicle, then send readings to a running VitaDrive server:
pip install -e ".[obd]"
vitadrive bridge <VIN> --url https://<your-vita-drive-host> --api-key <vehicle-api-key>
See the OBD bridge guide for hardware, simulation, buffering, and service setup. For Vercel, Supabase, Clerk, and environment variables, see the deployment guide.
vitadrive/
adapters/ OBD-II and simulated reading sources
migrations/ Alembic environment and revisions 0001–0004
static/js/ Browser-native dashboard ES modules; no build step
api.py FastAPI routes and error handling
anomaly.py JSON-backed anomaly inference
bridge.py Vehicle-side delivery, retries, and offline buffer
service.py Monitoring and reporting orchestration
storage.py SQLAlchemy Core tables and persistence
trips.py Trip detection and efficiency summaries
docs/
adr/ Architecture decision records
images/ Dashboard screenshots and tour
ARCHITECTURE.md Request, data, deployment, and configuration reference
tests/ Unit, API, migration, and documentation tests
e2e/ Playwright browser tests
The API's interactive schema is available at /docs when the app is running.
Dashboard code is plain ES modules in vitadrive/static/js/ with no build step.
Standard OBD-II exposes only a subset of the monitored signals; several vehicle-specific metrics require manufacturer telematics or a CAN gateway. Default thresholds and service intervals are generic—follow the vehicle's owner manual. Nearby results depend on OpenStreetMap coverage, and recall results come from the US NHTSA database by model and year rather than VIN.
MIT