Fibretrace Monet docs/Jira backlog/Phase 1 plan

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 associationprogramme_producer_facilities link, manual_logging_enabled flag
  • [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 schemafibre_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 registrypigment_ids table (admin-managed); FK from programmes
  • Manual logging toggle — per-facility manual_logging_enabled flag + 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 generatorCOMPCODE-COMPCODE-DDMMYYYY+increment uniqueness
  • 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 & restoredeleted_at filtering 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 integrationuseReservations hook -> block claims/evidence when none exist

2.10 Notifications System — Partial, High, 0.5wk

Directive: reuse what we can, add new notifications.

  • Notifications schemanotifications table; 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 accountverified.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

  1. 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.
  2. 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.
  3. Dashboards epic estimate (0.5wk) looks light vs scope (Producer UI = M, Program Owner = NEW). Re-estimate.
  4. “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)

  1. Now (Partial, canvas-backed): Auth + Account settings, Company & Team, Notifications, Scanners, Facilities — leverage existing canvas API; mostly porting + re-wiring through the dashboard adapter.
  2. i18n SAT toggle — self-contained FE task (Nghia-owned), can run in parallel.
  3. Decommission — mostly config/links + removals; low FE complexity, can interleave.
  4. 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.
  5. Dashboards persona UIs — depends on Programmes + Producer + Claims being at least scaffolded.
  6. Help center (static) — low priority, end of phase.