test(api): finalize route coverage and document REST contracts
This commit is contained in:
29
README.md
29
README.md
@@ -1,7 +1,10 @@
|
||||
# Minabot
|
||||
|
||||
Minimal Bun + Hono backend with Drizzle ORM and local SQLite, and a React Router
|
||||
client initialized with Bun's shadcn + Tailwind CSS v4 template.
|
||||
Bun + Hono habit-tracking REST API with Drizzle ORM and local SQLite. The existing
|
||||
React Router client remains a minimal authentication shell; habit frontend UI is deferred.
|
||||
|
||||
See [the REST API reference](docs/API.md) for habits, task recurrence, dated progress,
|
||||
combined calendars, historical corrections, daily resets, and optional count carryover.
|
||||
|
||||
```sh
|
||||
bun install
|
||||
@@ -124,8 +127,9 @@ production habit data separate from development data.
|
||||
- React detects the browser timezone during initial registration. The server
|
||||
validates it using `Intl.DateTimeFormat`, falling back to UTC. Later sign-ins
|
||||
update the Discord profile without changing the saved timezone. A timezone
|
||||
settings editor and habit reset logic are future work. Habit timestamps should
|
||||
remain UTC; daily boundaries should be calculated using the user's timezone.
|
||||
settings UI is deferred; `PATCH /api/me` updates the timezone. Habit timestamps
|
||||
remain UTC and daily boundaries follow the saved timezone with preserved historical
|
||||
deadlines. See the API reference for travel and DST behavior.
|
||||
|
||||
### API
|
||||
|
||||
@@ -178,3 +182,20 @@ stubbed Discord HTTP client. They cover registration, profile refresh, timezone
|
||||
preservation, cookie security, invalid/expired state, provider failures, session
|
||||
expiry/rotation, logout CSRF checks, and the exact `/api/me` response. A real Discord
|
||||
consent flow additionally requires your application credentials and browser login.
|
||||
|
||||
|
||||
## Habit API verification
|
||||
|
||||
```sh
|
||||
bun run test:coverage
|
||||
bun run typecheck
|
||||
bun run test:smoke
|
||||
```
|
||||
|
||||
The smoke command builds and starts the production server against a disposable
|
||||
SQLite database, exercises authenticated HTTP requests, then restarts it to verify
|
||||
persistence. It does not use a live Discord provider or modify application data.
|
||||
Habit tests cover every route, all PRD acceptance behaviors, ownership and Origin
|
||||
checks, historical corrections, expiry, timezone boundaries, daily resets, optional
|
||||
count carryover, Nivo data adaptation, and migration upgrades. Semantic commits
|
||||
separate the database foundation, REST implementation, carryover, and verification.
|
||||
|
||||
Reference in New Issue
Block a user