Pular para o conteúdo
Voltar para projetos

CIPTEA Fácil

Entregue
Laravel 13PHP 8.5Inertia 3Vue 3Nuxt 4 PWATypeScriptPostgreSQL 17Tailwind CSS 4DockerPest
Código fechado — MVP em validação com o município piloto
CIPTEA Fácil

Visão geral

SaaS multi-tenant e white-label para prefeituras emitirem a CIPTEA — Carteira de Identificação da Pessoa com Transtorno do Espectro Autista — de ponta a ponta: do pedido do cidadão pelo celular até o PDF oficial com QR Code de verificação pública.

01

Problema

A maioria das prefeituras ainda emite a CIPTEA num processo presencial e manual: protocolo em papel, conferência de laudo no balcão, carteira impressa em gráfica. O resultado é fila, retrabalho, risco de perda de documentos sensíveis de saúde e nenhuma estatística confiável — enquanto a Lei Federal 13.977/2020 garante a carteira como direito.

02

Solução

Três módulos sobre um único código-base. O cidadão usa um PWA Nuxt: cadastro por CPF e senha, wizard de solicitação em cinco etapas com rascunho salvo, acompanhamento por protocolo e carteira digital disponível offline. O gestor municipal usa um painel Laravel + Inertia: fila de triagem, aprovação em um clique, devolução com justificativa, emissão do PDF, renovação e segunda via, relatórios e configuração do white-label. E qualquer pessoa verifica a carteira por uma página pública, sem login, que lê o QR Code e mostra só o mínimo necessário: foto, nome, número, município, situação e validade.

03

Arquitetura

Monorepo com npm workspaces: uma aplicação Laravel 13 (API JSON + painel Inertia) e um PWA Nuxt 4, compartilhando um pacote de design tokens consumido pelos dois apps e pelo PDF — trocar o tema de um município é runtime, sem rebuild. Convenção do Laravel, sem camadas extras: a regra de negócio vive em Actions de propósito único em app/Actions/<Área>/, os estados são enums PHP com transições guardadas, e Cpf, Cep e NumeroCiptea são value objects castados pelo Eloquent. O multi-tenancy é banco único com discriminador tenant_id, resolvido por subdomínio através de uma única abstração — todo índice único é composto com o tenant, nenhuma query de domínio filtra tenant manualmente e os arquivos ficam em tenants/{tenant}/, de modo que migrar para banco ou bucket por município continua sendo mudança localizada.

04

Desafios

A carteira carrega dado sensível de saúde — CID, laudo, médico emissor — então o desenho parte daí: campos e arquivos criptografados em repouso, storage privado atrás de URLs assinadas de curta duração, trilha de auditoria imutável de quem viu ou alterou o quê e de qual IP, e verificação pública por token opaco não sequencial que nunca expõe o CPF nem o id interno. O CPF é gravado criptografado, com uma coluna irmã de hash determinístico (HMAC) sustentando busca e unicidade. E, porque prefeitura troca de marca, o tema é versionado junto da carteira: reimprimir uma carteira antiga reproduz o layout de quando ela foi emitida.

05

Resultados

MVP concluído e em validação com o município piloto — as vinte fases planejadas estão fechadas, o piloto provisionado e o fluxo provado ponta a ponta pela suíte de testes. Quarenta e uma tabelas, quarenta e cinco user stories e cinquenta e quatro referências de design guiam o build; a qualidade passa por Pint, Larastan nível 6, ESLint, Prettier, vue-tsc e Pest a cada rodada do GitHub Actions. Na fase seguinte: login gov.br, assinatura ICP-Brasil no PDF e editor visual livre do layout da carteira.

Galeria

Clique na imagem para ver em tela cheia

1 / 6

Portal do cidadão, com a marca do município