Everything left to build, in the order it has to happen. 109 numbered jobs across eight phases. 60 are ticked. The multi-storefront engine is deployed to production, this domain is live on a Cloudflare origin cert, and the brand system is built off the real logo file. Phase 1 is done: Cups for Trade now has its own ERP tenant, with cupsbyaa and cupsfactory registered as its two storefronts.
Phase 1 blocks everything else. You told me BHD and CupsByAA are separate legal entities and CupsFactory sits under CupsByAA financially. So CupsFactory's orders, money and production have to land in CupsByAA's books, and CupsByAA does not have an ERP tenant yet. Building the website first would leave it with nowhere to post.
One thing I cannot decide for you, flagged at job 24: whether CupsFactory takes card payments through CupsByAA's existing Paymob merchant or needs its own. That is a merchant-account and settlement question, not a code one.
The multi-storefront engine is built and reviewed, 22 commits after a final adversarial pass found three Criticals that were fixed. It is what lets cupsbyaa and cupsfactory share one set of books while staying separately trackable, which is exactly what “cupsfactory sits under cupsbyaa financially” requires. Not re-listed as tasks.
| Commit | What it does |
|---|---|
da4f2d6…977735f | Storefront registry, tenant-keyed cache, partial unique index so a retired brand's code is reusable |
0c6f3d7…c6a3188 | Brand resolver on every public request, path-scoped after it was caught 400-ing the whole admin API |
85e2e6e…22dcf2f | Storefront label on all six chain documents, with real propagation tests |
7b4e6da | Per-suite test databases, fixing a 40% flake rate caused by a shared-DB wipe |
c58808d | Optional portal auth and price-list resolution |
8747e24 | Per-brand invoiced-value endpoint |
38b43f6…d6f03ba | Brand seed, per-tenant sets, refuses to guess a database or a set |
505bfcf | Trade pricing wired into product page and checkout, retail path proven unchanged (91 tests) |
d2928f5 | Admin page for the per-brand report, tenant-neutral |
Done. A Paper & Pen tenant with its own database and its own general ledger, serving two storefronts. BHD's ERP is not touched. The monthly BHD↔CupsByAA intercompany settlement continues unchanged, because the two stay separate entities.
✓Provision the cupsbyaa P&P tenant
✓Decide and register the ERP host
✓Seed the storefront registry for this tenant
✓Chart of accounts for CupsByAA
!Opening balances and cutover date
✓Company identity: CR, VATIN, address, bank
✓Tenant branding: logo, colours, PDF letterhead
✓Module entitlements
Migrate the cup product catalogue
Migrate the pricing ladders
Create the CupsFactory wholesale price list
Migrate customers and open balances from the Laravel app
Migrate order history
Staff accounts and OTP login
The Cloudflare zone is active with zero DNS records. Everything here is greenfield.
✓DNS: A and www, proxied
✓Cloudflare Origin CA certificate
✓nginx vhost on the VPS
Laravel app skeleton at the web root
✓Mail: DKIM, SPF, DMARC for cupsfactory.om
✓Mailboxes: info@ and sales@
✓Deploy script with a fail-closed preflight
✓Staging host before production
✓ERP bridge credentials
✓Paymob merchant decision
Two inks and a bilingual lowercase wordmark is a tight brief, which is a gift. The whole identity has to come from type, spacing and paper, not from a colour palette. Arabic is set at parity with English in the logo, so it must be at parity on the site too.
✓Extract logo masters from Final Logo.ai
✓Identify the wordmark typeface
✓Host the type on fonts.bhd.om
✓Arabic face paired to the Latin
✓Build the token layer on design.bhd.om
✓Tailwind config bound to the tokens
✓Wire FontAwesome Pro 7.2 from design.bhd.om/fa
✓OMR rendering via BHDCurrency
✓Accessible contrast pass on the two inks
✓Favicon, app icons, maskable icon
✓Open Graph share card, 1200×630
✓Brand sheet for the team
The base is custom-v2.blade.php plus the OrderFormV2 Livewire component: pick a quantity, then compare what every cup costs at that quantity, then check out. The audit (job 37) established that v2 is a VIEW on a shared engine, so this phase rebuilds the view against that engine. Refactoring the engine is real work but it is shared with the live cupsbyaa.com surface, so it is deliberately NOT bundled in here.
✓Audit v2 honestly before copying it
✓Three creative directions, not one
✓Run the jury and pick a direction
✓Page architecture and routes
✓RTL as a first-class layout
✓Hero: the factory thesis
✓Quantity ladder, rebuilt
✓Trade-scale tiers
✓Price board, rebuilt
✓Unavailable tiers stay readable
✓Best-value marker that is actually true
✓Live unit price and line total
✓To-scale size guide
Product photography set
✓Artwork upload with real validation
✓Live cup preview from uploaded artwork
✓Dieline download per size
✓Digital proof and approval step
✓Phone field with country selector
✓Trade account application
✓Logged-in trade pricing on the storefront
✓Reorder from a past order
✓Order tracking page
✓Customer portal: quotes, invoices, statements
✓Capability page: machines, capacity, lead times
✓Quality and food-safety page
✓Sample request flow
Motion pass
✓Empty, loading and error states
✓WhatsApp contact and share links
✓Short links for anything sent to a customer
✓Cookie and consent handling
Every job here can lose a real order or misstate a real number, so each one gets a test that fails when it is wrong.
Paymob integration
Apple Pay, including non-Safari desktop
Inline Pixel card form
Webhook with HMAC verification
Bank transfer and credit-terms checkout
Order pushes into the CupsByAA ERP
Two-way production status sync
Stale-order notification guard
✓VAT handling and the tax invoice
Abandoned-cart definition
Order confirmation email and WhatsApp
End-to-end money test on staging
✓Bilingual copy pass, written not translated
✓Keyword and intent map
Landing pages per product and city
✓Structured data
✓hreflang for the EN and AR mirror
✓Sitemap and robots
✓Canonicals
✓llms.txt, llms-full.txt, ai.txt
Entity and sameAs graph
✓IndexNow wired to deploy
Google Search Console verification
Bing verification, by API
✓Analytics and conversion events
✓Truth pass on every public claim
Deterministic checks, not opinions. Each produces evidence that can be re-run.
✓Responsive and overflow audit
✓Accessibility audit
✓Contrast audit against the two inks
Lighthouse to 100 on mobile
Core Web Vitals on real hardware
✓Link and asset audit
Playwright end-to-end suite
Cross-browser and real-device pass
Security review
Independent design jury before launch
Staging sign-off
!Seed the registry on production
Cut over DNS and watch
Post-launch monitoring
Log the launch and hand over