The client's entire web presence was a Linklist page and a one-screen Canva site, and her resellers — independent optical shops across Brazil — had nothing of their own to show a customer. The brand already existed: a name, a mark, a specific gold sampled from her own material, '24 years' as the one asset nobody else in the category has. The job was building the platform to carry that identity without letting every reseller flatten into an identical sub-brand.
— Case study 07
Trísion
One catalogue, a showcase for every reseller — no cart, ever

project overview
A brand site and multi-tenant reseller platform for a Brazilian eyewear label, where every independent optical shop that resells the brand gets its own storefront sharing one catalogue — never a themed copy of the brand's own site.
shipped outcome
A working Fase 0: the homepage, collections, catalogue, product pages, and a path-routed storefront stand-in all render end-to-end against typed mock data, dark-only, with the brand's own gold as the single accent — and every product photo gallery without a real shot renders an honest 'no photo' state rather than an invented one.
- Role
- Full-stack product engineering
- Timeline
- Ongoing — Fase 0 of a phased build
- Year
- 2026
- Team
- Solo delivery
A reseller is an endorsement, not a sub-brand, enforced in the data model itself — no colour field, no logo field, no font field, ever. Every path, brand site or reseller storefront, resolves through one WhatsApp deep-link builder. The catalogue and tenancy layers are built as typed seams over local mock data now, so the CMS arriving in the next phase is a new implementation behind an existing interface, not a rewrite. And where a rule says a number must be a real measurement or a photo must be real, the honest failure state ships instead of a placeholder that would quietly lie to an optician.
A working Fase 0: the homepage, collections, catalogue, product pages, and a path-routed storefront stand-in all render end-to-end against typed mock data, dark-only, with the brand's own gold as the single accent — and every product photo gallery without a real shot renders an honest 'no photo' state rather than an invented one.
— Interface evidence
The product, not a placeholder
These are the verified interface captures from the project build. Scroll inside taller frames to inspect each complete page.





![A reseller's own storefront at /loja/[rev] — the Fase 0 stand-in for a subdomain](/_next/image?url=%2Fprojects%2Ftrision%2Floja.png&w=3840&q=75)
— Delivery process
From operating constraint to shipped system
The work is sequenced around risk. Domain rules and failure states come before interface polish; automation arrives before handoff.
Scaffold and the pitch deck
Design tokens sampled from the client's own material, including the specific gold rather than a generic stock tone. The first deliverable was a slide presentation built to extract the open questions — domain ownership, pricing model, WhatsApp routing — that block later phases, shown to the client on her phone.
The brand components
Hand-written corner brackets that frame something real, the millimetre numeração component with an inline-SVG square glyph, a wordmark drawn from one shared path source across header/favicon/share image, and a starfield canvas that degrades to a complete static page under reduced motion or no WebGL.
Catalogue and tenancy, against typed mock data
The full frontend — home, collections, a filterable catalogue, product pages, and a storefront stand-in — built behind one catalogue seam and one tenancy seam, so Payload can implement both later without the pages above them changing.
Fase 1 — not started
Payload CMS and Postgres, mounted once the client's apex domain is confirmed — the wildcard-subdomain storefront routing the whole multi-tenant model depends on can't ship without it.
— System architecture
Clear boundaries, explicit responsibilities
Each layer has one job and a narrow contract. That keeps external services replaceable and product behavior testable.
armação / tri-ex-14
52 □ 18-145
aviador · titânio · bronze
foto
sem foto — honesto
revendedores / 8
Next.js App Router
Brand routes and the Fase 0 storefront stand-in sharing one app, dark theme hardcoded, no light-mode toggle.
One typed source function
Local mock data today; a CMS implementation later sits behind the same interface, not a rewrite.
One scope function
Every tenant-scoped read — reseller, showcase — goes through this one place.
One wa.me builder
Every CTA on every route resolves through the same WhatsApp deep-link function.
— What shipped
Product capabilities
Endorsement-only reseller storefronts
A reseller gets a name, city, contact, and one photo — never a colour, logo, or font — enforced by the data model, not editorial discipline.
Honest 'no photo' empty states
Every product gallery without a real photograph says so plainly instead of substituting a stock image that isn't actually this brand's product.
Real numeração or none at all
The millimetre frame measurement renders only from real data, with its square glyph as inline SVG — never a placeholder value.
— Engineering pressure
Challenges resolved
Building the CMS seam before the CMS
Fase 0 has no database by design, but every future collection already has a typed consumer waiting for it — getting that boundary right without the real implementation to test against is the highest-risk part of the phasing.
Never inventing a fact about the client's business
No price, measurement, city, or reseller name gets invented — an unresolved fact is written down explicitly as a question to verify instead of a plausible-looking placeholder.
A brand asset that's still an approximation
The wordmark is currently an approximate redraw pending the original vector — every surface that renders it reads from one shared source so the real file, once it arrives, updates everywhere at once.
verified project destinations
next transmission
Need a system this deliberate?
Bring the operating problem. We will shape it into a clear product brief and a buildable next step.
Start a project