100 lines
4.2 KiB
Markdown
100 lines
4.2 KiB
Markdown
# MotorSignal Website/Admin Current State
|
|
|
|
Audited 2026-09-08 against the implementation plan and the deployed API at
|
|
`api.motorsignal.app`.
|
|
|
|
## Repository Boundary
|
|
|
|
This repository is the Flutter mobile application. It contains no separate
|
|
website frontend, no FastAPI source, and no Alembic migration directory. The
|
|
production FastAPI source currently lives on the VPS under
|
|
`/opt/motorsignal/current/app`; it is not available as local versioned source.
|
|
|
|
The production website at `motorsignal.app` is currently a placeholder static
|
|
page. It is not an admin panel.
|
|
|
|
## Verified API Surface
|
|
|
|
The deployed FastAPI application currently exposes:
|
|
|
|
- `GET /api/v1/health`
|
|
- `GET /api/v1/ready`
|
|
- `POST /api/v1/auth/register`
|
|
- `POST /api/v1/auth/login`
|
|
- `POST /api/v1/auth/refresh`
|
|
- `POST /api/v1/auth/logout`
|
|
- `GET /api/v1/me`
|
|
|
|
Authentication already has password hashing, access tokens, refresh-token
|
|
hashing/rotation, per-device sessions, and session validation for the current
|
|
user.
|
|
|
|
## Implemented Locally In This Checkpoint
|
|
|
|
The recovered backend now includes a reversible Alembic revision for:
|
|
|
|
- User roles with a default `user` role
|
|
- Email-verification and password-reset token persistence
|
|
- Audit-event persistence with actor/target, request metadata, and timestamps
|
|
|
|
The API now includes email verification request/consume flows, password reset
|
|
request/consume flows, session listing/revocation/logout-all, role dependencies,
|
|
and a support/admin audit-event read endpoint. It also includes role-protected
|
|
paginated admin CRUD for users and vehicles, plus ride CRUD with archive-on-delete
|
|
semantics. SMTP delivery is optional and configured only through environment
|
|
variables; tokens are never returned by the request endpoints.
|
|
|
|
User-scoped vehicle and ride list/read/create/update/delete-or-archive access is
|
|
also available under `/api/v1/vehicles` and `/api/v1/rides`, scoped from the
|
|
authenticated session rather than caller-supplied ownership.
|
|
|
|
Ride-linked telemetry persistence is available through bounded batch ingestion
|
|
at `/api/v1/rides/{ride_id}/telemetry`, owner-scoped reads, and support/admin
|
|
reads. Points are indexed by ride and timestamp.
|
|
|
|
Owner and support/admin telemetry summary endpoints expose point count, duration,
|
|
maximum speed, maximum lean angle, and maximum G-force without requiring raw
|
|
bundle transfer.
|
|
|
|
Subscription and entitlement baselines are available through authenticated
|
|
account reads and admin-controlled updates. Default subscription is `free`; no
|
|
payment provider or billing state is fabricated.
|
|
|
|
The account portal now exposes active sessions and supports revoking individual
|
|
non-current sessions or all sessions through secure server-side proxy routes.
|
|
|
|
Database-backed authentication rate limits now protect login, registration,
|
|
verification, and password-reset paths. Limit is 10 attempts per client IP per
|
|
15-minute window, with `Retry-After` responses.
|
|
|
|
## Still Missing Before Admin UI
|
|
|
|
These plan requirements are not present in the deployed API:
|
|
|
|
- Telemetry, subscriptions, and entitlement models
|
|
- Authentication rate limiting beyond the existing Nginx request limit
|
|
|
|
Production deployment remains pending review. Local runtime verification uses
|
|
the recovered lock and a Windows-compatible test lock.
|
|
|
|
## Local Verification Checkpoint
|
|
|
|
The exact production dependency set was recovered from the running production
|
|
virtualenv with `pip freeze` and saved as
|
|
`backend/motorsignal_api/requirements.lock`. Parity against a fresh production
|
|
freeze passed. Windows uses a separate test lock excluding only `uvloop`, which
|
|
does not support Windows.
|
|
|
|
Local PostgreSQL 16 runs in Docker on `127.0.0.1:55432`. Alembic upgrade from an
|
|
empty database passed at revision `d9e4f6012a35`. Repeatable API smoke tests pass
|
|
for registration, email verification, password reset, sessions, RBAC denial,
|
|
audit writes, and logout-all. No production migration or API deployment was
|
|
performed.
|
|
|
|
## Required Next Checkpoint
|
|
|
|
Obtain the FastAPI/Alembic source into a versioned local backend project before
|
|
editing authentication, authorization, schema, or production deployment. Do not
|
|
implement admin CRUD against the current API: it has no server-side admin
|
|
authorization or resource endpoints to secure the panel.
|