Changelog — FashionMax
All notable changes to this app are recorded here. Newest entries on top.
[2026-04-28]
- Initial scaffold. Two ways to sell in one app: custom orders (with saved measurements per client and fabric source tracking) or ready-made stock (with automatic stock count adjustment on each sale).
- Order stages simplified to four states: Received → In Progress → Ready → Delivered (plus Cancelled).
- Saved measurements per client — record once on the client profile, reuse on every new custom order. A snapshot of the measurements at the time of the order is also frozen on the order itself, so resizing later doesn't change history.
- Ready-made inventory: handbags, dresses, suits, accessories. Sells decrement the stock count automatically; restocks bump it back up. An append-only stock ledger records every change so the shop owner can audit how the count got to where it is.
- Client portal at
/p/{uuid}/fashionmax/track — clients log in by phone + PIN, see their orders, see their saved measurements, and pay any outstanding balance via card / Paystack / Stripe.
- Multi-shop support — branches each get their own service menu, which is cloned from the first branch when a new shop is created.
- Two starter service menus shipped with the app: a Nigerian catalogue (Ankara gowns, Agbada, Senator, Boubou, Asoebi, alterations, embroidery) and a US catalogue (suits, dresses, alterations, accessories). The right one is seeded automatically based on the shop owner's currency.
Internal
- Schema cloned from PropertyPro and stripped of property-specific tables:
projects, project_assignments, project_payments, tickets, ticket_messages, owner_entities, tenant_documents. Identity model unchanged (per-user, pancho+visitors).
- New tables:
customer_measurements, inventory_items, inventory_log. orders extended with order_type, fabric_source, measurement_snapshot_json, target_completion_date, style_notes. order_items extended with item_kind discriminator and inventory_item_id FK so a single line-item table covers both service charges and product sales.
lib/payments.php is a copy of apps/propertypro/lib/payments.php with pp_* renamed to fm_* to avoid namespace collision when both apps are installed on the same platform.
helpers.php keeps phone_variants(), resolve_phone(), on_entity_created() (clones the service menu when a new shop is added), and a fashion-flavored cron driver. Drops generate_ticket_number() (no tickets table).