FlowPOS Retail Apparel — Feature Roadmap
Last updated: 2026-02-27
Branch: retail-processes
This folder documents the 8 planned retail apparel features. Each file covers the full implementation scope: Database → Backend → PWA Frontend, with task checklists for agents to track progress.
Implementation Phases
Phase 1 — Foundation (no inter-dependencies)
| # | Feature | Doc | Status |
|---|---|---|---|
| 7 | Collections (seasonal groups) | 07-collections.md | ⏳ Pending |
| 1 | Variant Matrix Editor | 01-variant-matrix-editor.md | ⏳ Pending |
| 2 | Return / Exchange Workflow | 02-return-exchange-workflow.md | ⏳ Pending |
Phase 2 — Financial Features
| # | Feature | Doc | Status |
|---|---|---|---|
| 5 | Store Credit | 05-store-credit.md | ⏳ Pending |
| 4 | Loyalty Program | 04-loyalty-program.md | ⏳ Pending |
| 3 | Apparel Analytics Reports | 03-apparel-analytics-reports.md | ⏳ Pending |
Phase 3 — Revenue Acceleration
| # | Feature | Doc | Status |
|---|---|---|---|
| 6 | Promotions Engine | 06-promotions-engine.md | ⏳ Pending |
| 8 | Suggested Replenishment | 08-suggested-replenishment.md | ⏳ Pending |
Gap Analysis
Legend: ✅ Done · ⚠️ Partial · ❌ Missing
1. Sales & Checkout
| Feature | DB | Backend | PWA | Status |
|---|---|---|---|---|
| Basic sale creation | ✅ | ✅ | ✅ | ✅ Done |
| Cash / card payment | ✅ | ✅ | ✅ | ✅ Done |
| Split payment (multiple methods) | ✅ | ✅ | ⚠️ | ⚠️ Partial |
| Barcode scan to add product | ✅ | ✅ | ⚠️ | ⚠️ Partial |
| Variant selection (size × color) at POS | ❌ | ❌ | ❌ | ❌ Missing |
| Apply discount (line / total) | ✅ | ✅ | ⚠️ | ⚠️ Partial |
| Apply promotion / coupon code | ❌ | ❌ | ❌ | ❌ Missing |
| Store credit as payment method | ❌ | ❌ | ❌ | ❌ Missing |
| Loyalty points redemption at POS | ❌ | ❌ | ❌ | ❌ Missing |
| Return / refund at POS | ⚠️ | ⚠️ | ❌ | ❌ Missing |
| Exchange (return + new sale) | ❌ | ❌ | ❌ | ❌ Missing |
| Receipt print / email | ✅ | ✅ | ⚠️ | ⚠️ Partial |
| Cash register session (open/close) | ✅ | ✅ | ✅ | ✅ Done |
2. Inventory Management
| Feature | DB | Backend | PWA | Status |
|---|---|---|---|---|
| Multi-location stock levels | ✅ | ✅ | ⚠️ | ⚠️ Partial |
| Stock adjustment | ✅ | ✅ | ✅ | ✅ Done |
| Stock transfer between locations | ✅ | ✅ | ⚠️ | ⚠️ Partial |
| Physical inventory count | ✅ | ✅ | ⚠️ | ⚠️ Partial |
| Variant-level stock (size × color) | ❌ | ❌ | ❌ | ❌ Missing |
| Low-stock alerts | ❌ | ❌ | ❌ | ❌ Missing |
| Suggested replenishment | ❌ | ❌ | ❌ | ❌ Missing |
| Stock movement history | ✅ | ✅ | ❌ | ⚠️ Partial |
| Production run (manufacturing) | ✅ | ✅ | ⚠️ | ⚠️ Partial |
3. Purchasing
| Feature | DB | Backend | PWA | Status |
|---|---|---|---|---|
| Supplier management | ✅ | ✅ | ✅ | ✅ Done |
| Purchase order creation | ✅ | ✅ | ✅ | ✅ Done |
| Goods received note (GRN) | ✅ | ✅ | ✅ | ✅ Done |
| PO from replenishment suggestion | ❌ | ❌ | ❌ | ❌ Missing |
| Supplier price list | ⚠️ | ⚠️ | ❌ | ⚠️ Partial |
| Purchase order approval workflow | ❌ | ❌ | ❌ | ❌ Missing |
4. Pricing & Promotions
| Feature | DB | Backend | PWA | Status |
|---|---|---|---|---|
| Base price per product | ✅ | ✅ | ✅ | ✅ Done |
| Price lists (customer segments) | ✅ | ✅ | ⚠️ | ⚠️ Partial |
| Manual line discount at POS | ✅ | ✅ | ⚠️ | ⚠️ Partial |
| Promotion engine (rules-based) | ❌ | ❌ | ❌ | ❌ Missing |
| Coupon / promo code | ❌ | ❌ | ❌ | ❌ Missing |
| BOGO / bundle deals | ❌ | ❌ | ❌ | ❌ Missing |
| Seasonal markdown (% off category) | ❌ | ❌ | ❌ | ❌ Missing |
| Flash sale (time-bound discount) | ❌ | ❌ | ❌ | ❌ Missing |
5. Customer Management
| Feature | DB | Backend | PWA | Status |
|---|---|---|---|---|
| Customer profile (name, contact) | ✅ | ✅ | ✅ | ✅ Done |
| Purchase history per customer | ✅ | ✅ | ⚠️ | ⚠️ Partial |
| Loyalty program (points earn/burn) | ❌ | ❌ | ❌ | ❌ Missing |
| Store credit balance | ❌ | ❌ | ❌ | ❌ Missing |
| Customer segments / tags | ❌ | ❌ | ❌ | ❌ Missing |
| Return history per customer | ⚠️ | ⚠️ | ❌ | ⚠️ Partial |
6. Store Operations
| Feature | DB | Backend | PWA | Status |
|---|---|---|---|---|
| Cash register open / close | ✅ | ✅ | ✅ | ✅ Done |
| Z-report (end-of-day summary) | ✅ | ✅ | ⚠️ | ⚠️ Partial |
| Safe / drawer management | ✅ | ✅ | ✅ | ✅ Done |
| Role-based access (cashier, manager) | ✅ | ✅ | ⚠️ | ⚠️ Partial |
| Multi-location support | ✅ | ✅ | ⚠️ | ⚠️ Partial |
| Shift handover report | ❌ | ❌ | ❌ | ❌ Missing |
7. Product & Catalog
| Feature | DB | Backend | PWA | Status |
|---|---|---|---|---|
| Product CRUD | ✅ | ✅ | ✅ | ✅ Done |
| Category tree | ✅ | ✅ | ✅ | ✅ Done |
| Color & size attributes | ✅ | ✅ | ⚠️ | ⚠️ Partial |
| Variant matrix (size × color grid) | ❌ | ❌ | ❌ | ❌ Missing |
| Barcode / SKU generation | ✅ | ✅ | ❌ | ⚠️ Partial |
| Label printing | ❌ | ❌ | ❌ | ❌ Missing |
| Collections (seasonal grouping) | ❌ | ❌ | ❌ | ❌ Missing |
| Product images | ✅ | ✅ | ⚠️ | ⚠️ Partial |
| Unit of measure | ✅ | ✅ | ✅ | ✅ Done |
Priority Summary
❌ Completely Missing — Ranked by Apparel Importance
| Priority | Feature | Impact |
|---|---|---|
| 🔴 Critical | Variant Matrix Editor (size × color) | Every apparel product needs this |
| 🔴 Critical | Variant-level inventory stock | Stock accuracy by size/color |
| 🔴 Critical | Return / Exchange PWA UI | Customer-facing workflow |
| 🔴 Critical | Promotions Engine | Seasonal markdowns, BOGO |
| 🟠 High | Collections (seasonal grouping) | Catalog organization |
| 🟠 High | Loyalty Program | Customer retention |
| 🟠 High | Store Credit | Return refund alternative |
| 🟠 High | Suggested Replenishment | Prevent stockouts |
| 🟡 Medium | Apparel Analytics Reports | Size curve, sell-through % |
| 🟡 Medium | Coupon / promo code | Marketing campaigns |
| 🟡 Medium | Low-stock alerts | Operational efficiency |
| 🟢 Nice to have | Label printing | Barcode label generation |
⚠️ Partially Implemented — What's Missing
| Feature | What Exists | What's Missing |
|---|---|---|
| Split payment | DB + backend done | PWA UI to select multiple methods |
| Barcode scan | Product lookup by barcode | PWA camera/scanner integration |
| Manual discount | DB + backend done | PWA discount field on line items |
| Z-report | DB + backend done | PWA report viewer / print |
| Color & size attributes | DB + backend done | PWA variant matrix grid editor |
Shared Conventions
Database Migration Pattern
packages/backend/database/src/migrations/<timestamp>-<feature>.mjs
- Enums first → tables → indexes → rollback mirrors up in reverse
- All tables include:
id,business_id,is_active,created_at,created_by,updated_at,updated_by - After every migration:
pnpm run generate:types
Backend Module Pattern (Hexagonal)
apps/backend/src/<feature>/
├── <feature>.module.ts
├── application/<feature>.service.ts
├── domain/<feature>-repository.domain.ts
├── infrastructure/<feature>.repository.ts
└── interfaces/
├── <feature>.controller.ts
└── dtos/ + query/
- Error handling:
errorFirstWrapAsync()+Errors.from() - DTOs:
class-validator; Update =PartialType(Create) + updatedBy - Pagination:
OffsetPaginationMixin(SortMixin(SearchQuery))
PWA Frontend Pattern
apps/frontend-pwa/src/components/forms/<feature>/
├── <Feature>Page.tsx — page wrapper with context hooks
└── <Feature>Form.tsx — react-hook-form + zod form
apps/frontend-pwa/src/services/<feature>Service.ts
apps/frontend-pwa/src/types/<feature>.ts
- Register new pages in:
apps/frontend-pwa/src/pages/MainPage.tsx
Verification Steps (run after each feature)
pnpm run migration:local:push— migration applies cleanlypnpm run generate:types— new types visiblepnpm --filter backend run build— no TS errorspnpm --filter frontend-pwa run build— no TS errors- End-to-end: create record via PWA → verify in pgAdmin (
localhost:8080)