CleanFrame
A personal home screen for Samsung The Frame. A starting point to fork and adapt.
Car vitals monitoring, warnings and predicted maintenance dates.
Translation pending
LifestylePython · JavaScriptGitHub @adotakOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Vehicle vitals monitoring, threshold warnings, predictive maintenance and a full service record for modern cars.Read the full 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