Fibretrace Monet — Phase 1 Plan (grouped)
Source:
.local/jira-backlog/fibretrace-jira-backlog-master-list.csv(moved from repo root 2026-06-08). Scope of this document: Phase 1 ONLY. Phase 0 / 2 / 3 items are listed under “Out of scope” for reference but are not planned here. Personas/owners in the CSV: Nghia = Frontend (all FE tasks), Nguyen / Vu / Hung = Backend. This repo (fibretrace-monet) is the FE deliverable —apps/dashboard(Lovable fork) +apps/sat(PWA).
1. Scope at a glance
Phase 1 spans 13 epics + 3 loose “Other” items. Most are Partial (leverage existing canvas UX/UI/API as much as possible) or New (build fresh). Total CSV estimate ≈ ~10 engineering-weeks (all personas combined; FE is a subset).
| Epic | Status | Owner (lead) | Est. (wk) | Priority | FE surface in this repo |
|---|---|---|---|---|---|
| Authentication & Account Management | Partial | Nguyen | 0.5 | High | Dashboard + SAT |
| Dashboards (persona UIs) | New-ish | — | 0.5 | High | Dashboard |
| Company & Team Management | Partial | Nguyen | 1.0 | High | Dashboard |
| Facilities Management | Partial | Vu | 1.0 | High | Dashboard |
| Scanners Management | Partial | Nguyen | 0.5 | High | Dashboard |
| Fibre Programmes | New | Vu | 1.5 | High | Dashboard (+ FT Admin) |
| Producer / Fibre Production Logging | New | Vu | 1.0 | High | Dashboard |
| Verifications, Sessions & Audits | New | Vu | 1.0 | High | Dashboard + SAT |
| Claims & Evidence Requests | New | Hung | 1.0 | High | Dashboard |
| Notifications System | Partial | Nguyen | 0.5 | High | Dashboard |
| Onboarding & Help | Partial | Nguyen | 0.5 | Medium | Dashboard |
| Internationalization | Partial | Nghia | 0.5 | Medium | SAT (+ Dashboard) |
| Decommission (MAPPED/VERIFIED) | New | Hung | 0.5 | Medium | Dashboard / config |
Plus loose Other / Phase 1 items: Evidence-pack/Share constraints, Remove app-store links, general mop-up.
2. Phase 1 epics — grouped detail
Legend: [FE] = frontend (Nghia / this repo), [BE] = backend, [FT-Admin] = FibreTrace admin-side UI.
2.1 Authentication & Account Management — Partial, High, 0.5wk
Directive: leverage as much current UX/UI/API as possible.
- Registration flow (web registration page, NOT self-service)
- [FE] Registration page · [BE] API to receive info + send email
- [FE] Activation page + Set password · [BE] Activation link + Set password
- Login / logout (email+password, session persistence, secure logout, redirect)
- [BE] return user role in login response
- [FE] role-based domain routing: Auditor -> SAT; Admin -> popup (choose Dashboard or SAT)
- Forgot / reset password ([BE] Nguyen) — email reset link,
/reset-password - Account settings page (
/settings/account— name, email, phone, password)- [BE] update field-by-field · [FE] account settings page
- Role-based access control (auditor vs admin)
- [BE] user-info API returns role · [FE] render components by role
2.2 Dashboards (persona-specific UIs) — High, 0.5wk
Context-specific UI per persona/group type.
- [FE] Fibre Producer UI — log production (SDU / EWR / Manual) — size M
- [FE] Fibre Program Participant — evidence pack, request evidence, reservations
- [FE] Manufacturer — all other personas
- Program Owner (NEW) — a company can own a programme:
- set one+ companies as programme owner; upload documents for evidence-pack supporting data; create certificate references; create programme attributes; disable verification/scanners by company
Note: 0.5wk looks light vs the scope (Producer UI is M, Program Owner is NEW). Flag for re-estimate.
2.3 Company & Team Management — Partial, High, 1.0wk
Directive: leverage current UX/UI/API.
- Companies CRUD (Vu) —
company_code, type, country; editable company code (manual input suggested) - Company settings page (
/settings/company) — [BE] update by field (Vu) · [FE] settings page - Team members listing (
/team) — [BE] team-list API (Vu) · [FE] listing page - Invite team member (
/team/invite) — [BE] invite API (Vu) · [FE] invite page - Accept invite & onboarding — token validation, profile completion, company assignment
- Partners management (
/settings/partners) — size M — [BE] invite/search/disconnect (Vu) · [FE] partners page - Billing & Ecommerce — REMOVE links to billing/ecommerce flow
2.4 Facilities Management — Partial, High, 1.0wk
Directive: combine Site + Process into “Facility”. Licence tied to facility. Scanner tied to facility.
- Facilities table + RLS — name, type, country, lat/lng, address, OSH id
- Facilities Licence (size M) — request-license modal, check sufficient license count before adding · [BE] get-license API
- Facilities listing (
/facilities) — [BE] list-all API · [FE] table page - Add facility flow (multi-step: OSH search, manual, geocode) — [BE] submit form + email · [FE] add page
- Facility detail / edit — soft-delete
deleted_at· [BE] get-detail + edit-info · [FE] detail/edit page - OpenSupplyHub directory search — [BE] re-check existing functions (use current)
- EWR site ID adding — use current
- Facility-programme association —
programme_producer_facilitieslink,manual_logging_enabledflag - [FT-Admin] Facilities management UI — CRUD + License management
- Data Migration model view — migrate sites/processes into facilities; empty facilities table (TBC)
2.5 Scanners Management — Partial, High, 0.5wk
Directive: scanner UI same as canvas but assigned to facilities. No ecommerce; ordering a scanner is via email.
- Scanner-Facility logic — assign scanner to facility (or person, as in current canvas UI)
- Scanners table + RLS — serial, model, company, assigned facility, status
- Scanners listing (
/scanners) — filter by status/facility - Remove Register/assign scanner — REMOVE (no add-by-serial/activate flow)
- Scanner health & last-seen — track last ping/scan, surface usage
2.6 Fibre Programmes — New, High, 1.5wk
- [FT-Admin] Program Management UI (size M) — listing + CRUD programme, add/edit participants/producers/attributes
- Programmes schema —
fibre_programmes(pigment_id FK),programme_producers(quotas),programme_producer_facilities - Programmes listing (
/programs) — status, producer count, pigment - [FT-Admin] Create programme flow — name, pigment, fibre type, dates, initial producers
- Programme detail page (
/programs/:id) — overview, producers tab, facilities tab, heatmap - Producer quota management — per-producer quota rows; edit/audit
- Pigment IDs registry —
pigment_idstable (admin-managed); FK from programmes - Manual logging toggle — per-facility
manual_logging_enabledflag + admin approval flow Programme heatmap-> Phase 2 (excluded)
2.7 Producer / Fibre Production Logging — New, High, 1.0wk
- Fibre production table — rows linked to programme/producer/facility/quantity/date
- Manual Log Fibre Production page (
/fibre-creation) — programme, facility, qty, date, batch (+ FT admin approval flow) - SDU listing & creation (
/sdu) — size M — Sliver Delivery Unit records linked to production runs - EWR listing & creation — size M
- Production validation rules — quota enforcement, date constraints, duplicate detection
2.8 Verifications, Sessions & Audits — New, High, 1.0wk
- Schema — Audits/Sessions/Verifications hierarchy with FT-ID,
blockchain_guid,session_code, soft delete - Scan capture (DemoScanModal -> real) — size M — real scanner ingest endpoint; create audit + assign FT-ID
- Session code generator —
COMPCODE-COMPCODE-DDMMYYYY+incrementuniqueness - Fibre detection result — store
sessions.fibre_detected; detection-service callback - Verifications listing (
/verifications) — filter by date/facility/programme; pagination - Session detail page — scan list, reference edit (BaleID/Batch/Lot), confidence chip
- Verification PDF export — generate PDF (existing util); scans, references, signatures
- Soft-delete & restore —
deleted_atfiltering app-wide; admin restore in/admin/verifications Cotton Gin defaults-> Phase 2 ·Public verification page-> Phase 2 (excluded)
2.9 Claims & Evidence Requests — New, High, 1.0wk (owner: Hung)
- Claims schema — linked to company/programme/status/periods
- Claims listing & gating (
/claims) — gate access when no reservations exist - Evidence requests schema + RLS — requester, target, status, due date
- Evidence requests listing (
/evidence-requests) — filters; gate when no reservations - New evidence request flow (
/evidence-requests/new) — wizard: recipient, claim scope - Evidence request detail (
/evidence-requests/:id) — timeline, attachments, response - Evidence pack generator (
/claims/:claimId/evidence) — aggregated proof + confidence - Trade compliance PDF export — reuse
generateTradeCompliancePdf - Reservations integration —
useReservationshook -> block claims/evidence when none exist
2.10 Notifications System — Partial, High, 0.5wk
Directive: reuse what we can, add new notifications.
- Notifications schema —
notificationstable; per-user read state - Notifications dropdown + page — topbar dropdown,
/notifications - Notification preferences (
/settings/notifications) — channel toggles per event type - Email transactional sends — edge fn + provider (Resend): invites, evidence requests, claims
- Realtime notification push — Supabase realtime subscription on
notifications
2.11 Onboarding & Help — Partial, Medium, 0.5wk
- Help migration (size M) — migrate Zendesk content to alternative location
- Help center page (
/help) — searchable articles + Zendesk/website link — static pages only in Phase 1 Onboarding state·Guided tour·Help Center CMS-> Phase 2 (excluded)
2.12 Internationalization — Partial, Medium, 0.5wk (owner: Nghia / FE)
- Multi-language for SAT (High) — language toggle in the auditing app
i18next setup hardening·Language switcher persistence·Add additional languages-> Phase 2 (excluded)
2.13 Decommission (MAPPED / VERIFIED) — New, Medium, 0.5wk (owner: Hung)
Remove old access to MAPPED and VERIFIED services.
- Remove renewal tools — block ecommerce ordering of scanner + package (switch off built feature)
- Limit email renewal — disable automatic renewal notifications (mailchimp/mandrill/FT SaaS)
- Verified read-only setting — block new order/process/product creation
- Retain Transaction Report (TR) links — TRs on S3 w/ QR remain (read-only)
- Add link to Verified legacy account —
verified.fibretrace.io - Link to Verified site per company — enable per-company link
- Notice to VERIFIED customers — notify before change (expired Verified -> MAPPED auto)
- Notice to MAPPED users — 30-day export window, then accounts set INACTIVE
Reporting / Ecommerce / Stripe switch-off+shutdown+delete-> Phase 2 (excluded)
2.14 Other / Phase 1 mop-up
- Evidence-pack & Share constraints — once a verification (scan session) is shared + used on an evidence pack, it cannot be reused or unshared
- Remove app-store links — close Google Play Store service references
- Items not in a specific epic — general mop-up bucket
3. Frontend-focused view (Nghia / this repo)
The FE tasks explicitly assigned to Nghia in Phase 1 (the work that lands in apps/dashboard / apps/sat):
| Epic | FE task | App |
|---|---|---|
| Auth | Registration page; Activation + set-password page | Dashboard/SAT |
| Auth | Role-based domain routing (Auditor->SAT, Admin->popup) | both |
| Auth | Account settings page; render components by role | Dashboard |
| Company & Team | Company settings page; Team listing; Invite page; Partners page | Dashboard |
| i18n | Multi-language toggle for SAT | SAT |
| Dashboards | Producer / Participant / Manufacturer / Program-Owner persona UIs | Dashboard |
Cross-reference with the existing API audit (.local/backend-specs/integration-audit/): several Phase-1 Partial epics (Auth, Company, Facilities, Scanners, Notifications) already have canvas-backed endpoints wired or mappable in apps/dashboard; the New epics (Programmes, Producer Logging, Verifications, Claims) are largely BE-blocked and will need new Laravel endpoints before FE wiring. Use the audit’s EXISTS/GAP/PARTIAL classification to sequence FE work behind BE delivery.
4. Out of scope (NOT Phase 1) — listed for reference
- Phase 0 (already done — verify UI only): Public API & Integrations; Blockchain Anchoring.
- Phase 2: Scan Groups / Collections; Onboarding tasks (admin); Confidence Scoring System; Blockchain TraceCredits; Content Management (Labels / CMS); plus Phase-2 tasks pulled out of Phase-1 epics (Programme heatmap, Cotton Gin defaults, Public verification page, Onboarding state, Guided tour, Help Center CMS, i18next hardening, language persistence, additional languages, Decommission Reporting/Ecommerce/Stripe shutdown).
- Phase 3: Refactoring — remove ~50% unused legacy canvas code.
5. Open questions / flags
- Verification Sharing epic has NO Phase value in the CSV (High priority,
session_shares, share modal, recipient access, revoke). It is tightly coupled to the Phase-1 Claims/Evidence epic and the Phase-1 “Evidence-pack & Share constraints” mop-up item. Likely Phase 1 — needs confirmation. If yes, add ~0.5–1wk. - Settings epic (line 196) is empty (no tasks, no phase) — assume covered by the per-page settings tasks under Auth/Company/Notifications. Confirm it is not a separate deliverable.
- Dashboards epic estimate (0.5wk) looks light vs scope (Producer UI = M, Program Owner = NEW). Re-estimate.
- “New” epics are BE-blocked (Programmes, Producer Logging, Verifications, Claims) — FE cannot fully wire until Laravel ships endpoints. Sequencing must respect BE delivery order.
6. Suggested sequencing (FE perspective)
- Now (Partial, canvas-backed): Auth + Account settings, Company & Team, Notifications, Scanners, Facilities — leverage existing canvas API; mostly porting + re-wiring through the dashboard adapter.
- i18n SAT toggle — self-contained FE task (Nghia-owned), can run in parallel.
- Decommission — mostly config/links + removals; low FE complexity, can interleave.
- Behind BE delivery (New): Verifications/Sessions, Producer Logging, Fibre Programmes, Claims & Evidence — build UI shells (Lovable-sourced) with adapter empty-states first, wire when BE endpoints land.
- Dashboards persona UIs — depends on Programmes + Producer + Claims being at least scaffolded.
- Help center (static) — low priority, end of phase.