1e056f0b019d964922037617336f79edbc6aa3f3
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 1m19s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 44s
Deploy to Staging / Verify Staging (pull_request) Successful in 4s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 4s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
new Date("YYYY-MM-DD") parses as UTC midnight per ES2015. toLocaleDateString()
then displays in local time, shifting the date back one day for users west of
UTC. This caused the list view and edit dialog to show different dates.
Fixed in: MaintenanceRecordsList (display + sort + delete confirm),
VehicleDetailPage (display + sort), VehicleDetailMobile (display + sort),
MaintenanceRecordForm (receipt title), OwnershipCostsList (formatDate).
Sorting now uses string comparison (YYYY-MM-DD is lexicographically sortable).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
MotoVaultPro — Simplified Architecture
9-container architecture (6 application + 3 logging) with integrated platform feature.
Requirements
- Mobile + Desktop: Implement and test every feature on both.
- Docker-first, production-only: All testing and validation in containers.
- See
CLAUDE.mdfor development partnership guidelines.
Staging and Production Commands. NOT FOR DEVELOPMENT (containers)
make setup # build + start + migrate (uses mvp-* containers)
make start # start 5 services
make rebuild #
make logs # tail all logs
make migrate # run DB migrations
Documentation
- AI context:
.ai/context.json(architecture, quick start, metadata) - Sprint workflow:
.ai/workflow-contract.json(issue tracking) - Docs hub:
docs/README.md - Features:
backend/src/features/{name}/README.md - Frontend:
frontend/README.md - Backend core:
backend/src/core/README.md
URLs and Hosts
- Frontend:
https://motovaultpro.com - Backend health:
https://motovaultpro.com/api/health
Operational Commands
- View active environment on production:
sudo cat /opt/motovaultpro/config/deployment/state.json - Switch traffic between environments on production:
sudo ./scripts/ci/switch-traffic.sh blue instant - View which container images are running:
docker ps --format 'table {{.Names}}\t{{.Image}}' - Flush all redis cache:
docker compose exec -T mvp-redis sh -lc "redis-cli FLUSHALL" - Flush all backup data on staging before restoring:
docker compose exec mvp-postgres psql -U postgres -d motovaultpro -c "TRUNCATE TABLE backup_history, backup_schedules, backup_settings RESTART IDENTITY CASCADE;" - Create new admin users on brand new deployment
docker exec -it motovaultpro-backend-1 node dist/_system/cli/create-admin.js
Development Workflow
MotoVaultPro Development Workflow
============================================================================
SPRINT ISSUE SELECTION
----------------------
+--------------------+ +---------------------+
| Gitea Issue Board | | status/backlog |
| (Source of Truth) |------->| |
+--------------------+ +----------+----------+
|
v
+---------------------+
| status/ready |
| (Current Sprint) |
+----------+----------+
|
Select smallest + highest priority
|
v
+---------------------+
| status/in-progress |
+----------+----------+
|
============================================================================
PRE-PLANNING SKILLS (Optional)
------------------------------
|
+-----------------------------------+-----------------------------------+
| | |
v v v
+------------------+ +------------------+ +------------------+
| CODEBASE | | PROBLEM | | DECISION |
| ANALYSIS SKILL | | ANALYSIS SKILL | | CRITIC SKILL |
+------------------+ +------------------+ +------------------+
| When: Unfamiliar | | When: Complex | | When: Uncertain |
| area | | problem | | approach |
+------------------+ +------------------+ +------------------+
============================================================================
PLANNER SKILL: PLANNING WORKFLOW
---------------------------------
+---------------------+
| PLANNING |
| (Context, Scope, |
| Decision, Refine) |
+----------+----------+
|
v
+---------------------------------------+
| PLAN REVIEW CYCLE |
| (All results posted to Issue) |
+---------------------------------------+
|
v
+---------------------+
+------>| QR: plan-complete- |
| | ness |
| +----------+----------+
| |
[FAIL] | [PASS] |
| v
| +---------------------+
| | QR: plan-code |
| | (RULE 0/1/2) |
| +----------+----------+
| |
[FAIL]-----+ [PASS] |
v
+---------------------+
+------>| TW: plan-scrub |
| +----------+----------+
| |
| v
| +---------------------+
| | QR: plan-docs |
| +----------+----------+
| |
[FAIL]-----+ [PASS] |
v
+---------------------+
| PLAN APPROVED |
+----------+----------+
|
============================================================================
EXECUTION
---------
|
v
+---------------------+
| Create Branch |
| issue-{N}-{slug} |
+----------+----------+
|
v
+---------------------------------------+
| MILESTONE EXECUTION |
| (Parallel Developer Agents) |
+---------------------------------------+
|
+---------------------------------------------------------+
| +---------------+ +---------------+ +---------------+
| | FEATURE AGENT | | FRONTEND | | PLATFORM |
| | (Backend) | | AGENT (React) | | AGENT |
| +-------+-------+ +-------+-------+ +-------+-------+
| | | |
| +------------------+------------------+
| |
| Delegate to DEVELOPER role-agent
| |
+---------------------------------------------------------+
|
v
+---------------------+
+------>| QR: post- |
| | implementation |
| +----------+----------+
| |
| [FAIL] | [PASS]
| | |
+------+ v
+---------------------+
| TW: Documentation |
+----------+----------+
|
============================================================================
PR AND REVIEW
-------------
|
v
+---------------------+
| Open PR |
| Fixes #{N} |
+----------+----------+
|
v
+---------------------+
| status/review |
+----------+----------+
|
v
+---------------------------------------+
| QUALITY AGENT |
| (Final Gatekeeper - ALL GREEN) |
+---------------------------------------+
|
+-----------------------+-----------------------+
v v v
+------------------+ +------------------+ +------------------+
| npm run lint | | npm run type- | | npm test |
| | | check | | |
+------------------+ +------------------+ +------------------+
| | |
v v v
+------------------+ +------------------+ +------------------+
| Mobile Viewport | | Desktop Viewport | | RULE 0/1/2 |
| (320px, 768px) | | (1920px) | | Review |
+------------------+ +------------------+ +------------------+
| | |
+-----------------------+-----------------------+
|
[FAIL] | [PASS]
| | |
v | v
+---------------+ | +---------------------+
| Fix & Iterate |<--------+ | PR APPROVED |
+---------------+ +----------+----------+
|
============================================================================
COMPLETION
----------
+---------------------+
| Merge PR to main |
+----------+----------+
|
v
+---------------------+
| status/done |
+----------+----------+
|
v
+---------------------+
| DOC-SYNC SKILL |
+---------------------+
============================================================================
LEGEND
------
Skills: codebase-analysis, problem-analysis, decision-critic, planner, doc-sync
Role-Agents: Developer, Technical Writer (TW), Quality Reviewer (QR), Debugger
Domain Agents: Feature Agent, Frontend Agent, Platform Agent, Quality Agent
Labels: status/backlog -> status/ready -> status/in-progress -> status/review -> status/done
Commits: {type}: {summary} (refs #{N}) | Types: feat, fix, chore, docs, refactor, test
Branches: issue-{N}-{slug} | Example: issue-42-add-fuel-report
SUB-ISSUE PATTERN (multi-file features)
----------------------------------------
Parent: #105 "feat: Add Grafana dashboards"
Sub: #106 "feat: Dashboard provisioning (#105)" <-- parent index in title
Branch: issue-105-add-grafana-dashboards <-- ONE branch, parent index
Commit: feat: add provisioning (refs #106) <-- refs specific sub-issue
PR: feat: Add Grafana dashboards (#105) <-- ONE PR, parent index
Body: Fixes #105, Fixes #106, Fixes #107... <-- closes all
QUALITY RULES
-------------
RULE 0 (CRITICAL): Production reliability - unhandled errors, security, resource exhaustion
RULE 1 (HIGH): Project conformance - mobile+desktop, naming conventions, CI/CD pass
RULE 2 (SHOULD_FIX): Structural quality - god objects, duplicate logic, dead code
```
See `.ai/workflow-contract.json` for the complete workflow specification.
Description
Languages
TypeScript
80.5%
Python
15%
Shell
2.3%
PLpgSQL
1.3%
JavaScript
0.4%
Other
0.4%