|
| 1 | +# PaintCRM — Prioritized Improvement Backlog |
| 2 | + |
| 3 | +Last reviewed: **2026-07-16** (post P0/P1 completion cycle). |
| 4 | + |
| 5 | +**Status: no open P0 or P1 items.** Remaining work is P2/P3 only. |
| 6 | + |
| 7 | +Scoring: Impact / Difficulty / Risk = Low · Med · High |
| 8 | + |
| 9 | +--- |
| 10 | + |
| 11 | +## Completed this cycle (closed P0 / P1) |
| 12 | + |
| 13 | +| ID | Item | Outcome | |
| 14 | +|----|------|---------| |
| 15 | +| P0-1 | Production CORS harden | Done | |
| 16 | +| P0-2 | Docs honesty | Done | |
| 17 | +| P0-3 | OSS scaffolding (LICENSE, SECURITY, CONTRIBUTING, templates) | Done | |
| 18 | +| P0-4 | Finish/hide WIP (AI palette, reminders, cron honesty) | Done | |
| 19 | +| P0-5 | Tenant filter defense-in-depth | Done | |
| 20 | +| P1-1 | Frontend view extraction (customers, quotes, inventory, ledger) | Done | |
| 21 | +| P1-2 | Playwright E2E in CI | Done | |
| 22 | +| P1-3 | Password reset | Done | |
| 23 | +| P1-4 | Tenancy audit + docs + RLS path | Done (docs; RLS deferred P2) | |
| 24 | +| P1-5 | Pure Jest without Postgres | Done | |
| 25 | +| P1-7 | Render branch policy | Done | |
| 26 | + |
| 27 | +See [`docs/PRODUCTION_READINESS.md`](docs/PRODUCTION_READINESS.md) for the full audit. |
| 28 | + |
| 29 | +--- |
| 30 | + |
| 31 | +## P2 — Nice improvements |
| 32 | + |
| 33 | +| ID | Improvement | Why | Impact | Diff | Risk | |
| 34 | +|----|-------------|-----|--------|------|------| |
| 35 | +| P2-1 | Multi-user per tenant (owner / staff) with basic RBAC | Real shops have more than one counter person | High | High | Med | |
| 36 | +| P2-2 | WhatsApp Business Cloud API (true outbound) | Beyond click-to-chat | High | High | Med | |
| 37 | +| P2-3 | HttpOnly cookie session / BFF | Reduce XSS token theft | Med | High | Med | |
| 38 | +| P2-4 | CHANGELOG + semver release tags | OSS / portfolio hygiene | Med | Low | Low | |
| 39 | +| P2-5 | Postgres RLS rollout (per `docs/TENANCY.md`) | DB-enforced isolation | High | High | Med | |
| 40 | +| P2-6 | Frontend ESLint in CI | Catch XSS/`innerHTML` early | Med | Low | Low | |
| 41 | +| P2-7 | Further extract canvas engine from `script.js` | Maintainability | Med | Med | Med | |
| 42 | +| P2-8 | Deduplicate client `palette.js` ↔ server `heuristic.js` | One ranking model | Low | Med | Low | |
| 43 | +| P2-9 | Neon/Fly backup restore drill documented + scheduled | Operator confidence | Med | Low | Low | |
| 44 | +| P2-10 | In-app first-run checklist (photo → lead → quote) | Reduce support | Med | Med | Low | **Done** | |
| 45 | +| P2-11 | OpenAPI `/api/docs` | Integrator DX | Med | Med | Low | |
| 46 | +| P2-12 | Remove or archive legacy Python `test-scripts/` | Less confusion vs `e2e/` | Low | Low | Low | |
| 47 | +| P2-13 | India DLT / MSG91 template compliance for SMS | Legal SMS in production | High | Med | Med | |
| 48 | + |
| 49 | +--- |
| 50 | + |
| 51 | +## P3 — Future (after retention / payment proof) |
| 52 | + |
| 53 | +| ID | Idea | Gate | |
| 54 | +|----|------|------| |
| 55 | +| P3-1 | Contractor assignment / job tracking | Dealers use quotes+ledger weekly | |
| 56 | +| P3-2 | Customer-facing share link (view-only preview) | Share-rate metric justifies it | |
| 57 | +| P3-3 | Marketplace / multi-dealer ranking | Post-monetization | |
| 58 | +| P3-4 | True 3D / VR preview | Masking accuracy “good enough” in-store | |
| 59 | +| P3-5 | MFA / passkeys | Enterprise pilot demand | |
| 60 | +| P3-6 | Dealer AI assistant for quoting copy | After palette recommend proves usage | |
| 61 | + |
| 62 | +--- |
| 63 | + |
| 64 | +## Explicitly out of scope until evidence |
| 65 | + |
| 66 | +- Full CRM suite rewrite |
| 67 | +- Speculative microservices |
| 68 | +- Kubernetes manifests (Compose / Render / Fly are the supported paths) |
| 69 | +- Fake “enterprise” features that over-promise |
0 commit comments