Skip to content
LIVE PRODUCT
cellmax.expostacker.com.br/
CellMax — arte do produto
live preview

CellMax — Mobile accessories distributor with full ERP

Tech stack: Next.js 15 React TypeScript Prisma SQLite Tailwind CSS
347
Products
370+
Pages
17
ERP Modules

Client

CellMax Distribuidora

Sector

B2B distribution — Mobile phone accessories

Timeline

Projeto consolidado · Set 2026

Live product

Use now

Results

Client-reported results during rollout

347 Produtos
370 Páginas
17 Módulos ERP

Client-reported data

The challenge

The challenge

CellMax is a complete demonstration of how a wholesale mobile-accessories distributor operates digitally: the storefront retailers buy from and the backoffice the owner manages — in the same product.

Distribuidoras de acessórios de celular operam com catálogo grande, margem apertada e estoque espalhado — mas vivem de planilha e WhatsApp. Precisam de uma vitrine B2B que venda e de um backoffice que controle compra, estoque, financeiro e expedição no mesmo lugar.

The approach

The approach

We modeled the entire domain in Prisma (18 models) before writing screens — product, variant, stock, sale, supplier, purchase order, transaction, warehouse, audit. Then we built two experiences: storefront (search, categories, cart, checkout, tracking) and ERP admin (17 modules). For the public showcase we converted to static export: the database becomes prerendered data and filters become client-side.

The solution

The solution

The product covers both sides of the operation:

  • Catalog with 3-level hierarchical categories and breadcrumb navigation
  • Client-side search filtering by name and description
  • Product page with image gallery, variants and SKU selection
  • Cart, favorites and checkout with payment simulation (Pix, card, boleto)
  • Order tracking with status timeline and carrier tracking code
  • Customer center, policies, payment methods and returns/exchanges
  • ERP: dashboard, products, categories, stock, purchasing, suppliers, sales, finance, tax, fulfillment, returns, pricing, multi-warehouse, carriers, notifications, audit log and export
  • Full visual identity: 3D logo, cinematic hero, og-image and custom favicon

Timeline

Como o projeto foi conduzido, do mapeamento ao deploy. How the project was conducted, from mapping to deploy.

Methodology

Como o projeto foi conduzido, do mapeamento ao deploy. How the project was conducted, from mapping to deploy.

1

Complete domain modeling (18 Prisma models) before any screen

2

Two experiences designed separately: storefront for the buyer, ERP for the manager

3

Careful static conversion: generateStaticParams on dynamic routes, client-side filters where searchParams existed

4

Custom visual identity: 3D logo, cinematic hero and og-image generated on purpose

5

Validation: clean tsc, 417-page build and spot-check of every critical route

Architecture

  • → Next.js 15 static export — 370+ pre-rendered pages on Cloudflare Pages
  • → 347-product catalog in typed data with client-side filters, categories and search
  • → Cart and state with local persistence for B2B buying sessions
  • → PDV/WhatsApp checkout integrated into the distributor flow
  • → Automatic CI deploy with per-product optimized images

Conceptual diagram — does not reflect real implementation

Tech stack

Technical choices and what was left out.

Decision log

What I chose, what I rejected, and why.

Static export instead of Workers + database

Why: The showcase needs to be fast, cheap and unbreakable. Prisma runs at build time and becomes static HTML — 417 ready pages, no server to crash, no database to secure. The API routes code was preserved in src/server/ for when a real backend is wired up.

Rejected alternatives: Workers + Supabase (rejected — unnecessary cost and complexity for a read-only demo); production database (rejected — without real auth it would be exposure).

searchParams became client-side filters

Why: Static export can't read query strings on the server. Search, tracking, products and sales now load a serialized dataset and filter in the browser — identical and instant UX.

Rejected alternatives: Keep SSR with Workers (rejected — breaks the static model); pages without filters (rejected — would degrade the demo).

ERP as part of the product, not hidden

Why: The project's differentiator is showing the entire backoffice — that's what separates a storefront from a platform. /admin stays open in the demo because it's the most impressive part for evaluators.

Rejected alternatives: Hide the admin (rejected — would lose the case's biggest asset); fake auth with visible password (considered for future evolution).

Security and access

Lessons learned

Not everything went as planned.

— A convincing demo shows the whole operation. An open ERP next to the storefront sells better than ten slides — because software buyers want to see the backstage, not just the shop window.

Want a product like this?

I can do the same for your business. Let's talk.