MILWEB®
MILWEB®
MW/022MILSACAESTÚDIO

Milsaca

Milsaca — tela inicial
ESTÚDIO
MILWEB
TIPO
PRODUTO DIGITAL
STATUS
EM DESENVOLVIMENTO

02 / A IDEIA

SaaS sob medida · plataforma multi-tenant

Um setor inteiro rodava no improviso entre planilhas e WhatsApp, sem um sistema único.

03 / EXPERIÊNCIA
  1. 01 / 01

    Isolamento por corretora_id garantido no banco, não na aplicação. RLS em toda tabela.

    Milsaca — 01
  2. 02 / 02

    Motor de classificação da IN 8/2003 (MAPA) em pacote puro, com PDF + QR de verificação pública.

    Milsaca — 02
  3. 03 / 03

    CEPEA, ICE NY Coffee C e PTAX (BCB) sincronizados via edge function agendada.

    Milsaca — 03
  4. 04 / 04

    Next.js 16 e Expo Router compartilhando o mesmo Supabase por um pacote de clients em camadas.

    Milsaca — 04
Página pública do Milsaca

04 / POR BAIXO DO CAPÔ

  • 01Monorepo Turborepo + pnpm com três frentes num só backend: Next.js 16 (App Router) pro web, que sozinho já cobre três painéis (produtor, cor…+

    Monorepo Turborepo + pnpm com três frentes num só backend: Next.js 16 (App Router) pro web, que sozinho já cobre três painéis (produtor, corretora e admin da plataforma), e Expo Router pro app mobile do produtor. Web e mobile falam com o mesmo Supabase através de um pacote compartilhado (@milsaca/db) com três camadas de client: uma com cookie de sessão pro server, uma sem cookie (só a chave pública) pra rotas com cache, e uma com secure-store pro mobile.

  • 02Multi-tenant de verdade, não só "filtro no WHERE": toda tabela do schema público tem Row Level Security habilitada, sem exceção, com isolame…+

    Multi-tenant de verdade, não só "filtro no WHERE": toda tabela do schema público tem Row Level Security habilitada, sem exceção, com isolamento por corretora_id garantido no banco, não na aplicação. Papéis (produtor/corretora/admin) vivem num array na tabela de perfil, permitindo o mesmo e-mail acumular mais de um papel; o admin da plataforma fica numa tabela própria, fora do enum de papéis, pra não vazar por engano num RLS mal escrito.

  • 03A decisão de autenticação é um bom exemplo de aprender com o próprio produto: começou com magic link e foi trocada por OTP de 6 dígitos por …+

    A decisão de autenticação é um bom exemplo de aprender com o próprio produto: começou com magic link e foi trocada por OTP de 6 dígitos por e-mail, porque o Gmail Safe Links faz prefetch automático do link (pra escanear por segurança) e acaba "queimando" o token de uso único antes do usuário clicar. É um bug sutil que só aparece em produção, com e-mails reais.

  • 04O diferencial de domínio é a classificação COB (Instrução Normativa MAPA nº 8/2003): a lógica de tipos, defeitos, peneira e bebida do café c…+

    O diferencial de domínio é a classificação COB (Instrução Normativa MAPA nº 8/2003): a lógica de tipos, defeitos, peneira e bebida do café cru foi extraída pra um pacote puro (@milsaca/cob), sem dependência de runtime, testável isoladamente. O laudo gerado tem PDF com QR code e uma página pública de verificação, dando ao produtor algo que hoje é feito no papel ou de cabeça.

CONSTRUÍDO COMNext.js · Expo · Supabase · PostgreSQL · TypeScript

06 / RESULTADO

Multi-tenant · web + mobile · RLS

EM DESENVOLVIMENTO

[ QUERO ALGO PARECIDO ]

07 / TELAS SELECIONADAS
Página pública do Milsaca
TELA 01Página pública do Milsaca
Painel da corretora (dados de demonstração)
TELA 02Painel da corretora (dados de demonstração)
Laudo COB digital do produtor (dados de demonstração)
TELA 03Laudo COB digital do produtor (dados de demonstração)
PRÓXIMA EXPERIÊNCIA16 / ECOA

ECOA

ECOA

TODOS OS PROJETOS

TODOS OS PROJETOS