FCOPTS — Francisco Pontes
InícioSobreProjetosContatoBlog
Para recrutadores
Peça um orçamentoNovo
  • 01Sobre
  • 02Projetos
  • 03Contato
  • 04Blog
Peça um orçamentoNovo
Estudo de Caso

iMidooh — Gerenciamento de Mídia DOOH

Plataforma de Gerenciamento de Mídia DOOH

Construção de uma base SaaS escalável voltada para operações de mídia Digital Out Of Home, com foco em arquitetura sólida, organização modular e preparação para expansão multi-tenant.

TypeScriptTypeScript
DockerDocker
React NativeReact Native
Next.jsNext.js
Node.jsNode.js
Express.jsExpress.js
NestJSNestJS
PostgreSQLPostgreSQL
PrismaPrisma

Descoberta de mídia por mapa, com filtros de oferta e fluxo

Ficha do painel: preço, disponibilidade e especificações técnicas

Tipo de projetoPlataforma SaaS B2B2C
Papel exercidoFull-Stack / Arquitetura
ModeloB2B2C · White-label ready
StatusDescontinuado
Ano2025–2026
EmpresaClick Software House

O iMidooh representa a construção de uma base SaaS escalável voltada para operações de mídia DOOH, com foco em arquitetura sólida, organização modular e preparação para expansão multi-tenant.

Visão Estratégica

O iMidooh nasceu com o objetivo de estruturar e escalar operações de mídia DOOH (Digital Out Of Home), oferecendo uma plataforma centralizada para gerenciamento de campanhas em painéis de LED distribuídos em múltiplas localidades — com base sólida para evolução SaaS.

O que precisava funcionar desde o dia 1

  • Atualizar conteúdos remotamente com previsibilidade
  • Monitorar exibições e estado operacional em tempo real
  • Consolidar relatórios de performance com confiança
iMidooh — Gerenciamento de Mídia DOOH

Contexto e Construção do Produto

O desenvolvimento começou com um discovery profundo: fluxos operacionais, perfis de usuários, regras de exibição e limitações do ecossistema físico dos painéis. A estratégia foi evitar improviso e construir uma base modular pronta para escalar.

API

Regras de campanhas, painéis, exibição e integridade de dados.

Admin (Next.js)

Gestão operacional, configuração e visão consolidada.

Mobile (React Native)

Operação em campo e acompanhamento prático.

Arquitetura e Decisões Técnicas

A arquitetura foi desenhada para ser desacoplada, modular e fácil de manter — com módulos de domínio bem definidos (painéis/mídia, campanhas/reservas, métricas) por trás de um único gateway, e um modelo de dados preparado para múltiplos clientes desde a primeira migração.

Dados consistentes

PostgreSQL com modelagem relacional para painéis, campanhas, reservas e métricas de performance.

Produtividade com segurança

Prisma para acelerar acesso a dados com camada tipada e estável entre API e módulos.

Ambientes padronizados

Docker isolando dev, staging e produção, com paridade de configuração entre eles.

Módulos por domínio

NestJS organiza painéis, campanhas/reservas e métricas como módulos independentes, testáveis isoladamente.

Isolamento lógico por tenant

Cada registro carrega tenant_id desde o desenho inicial, evitando retrabalho para separar clientes no futuro.

Camadas independentes

Gateway, módulos de API e banco de dados versionados e implantáveis em separado.

React NativeDescoberta de mídia no mapaNext.jsAdmin: painéis, campanhas, métricasAPI GatewayAutenticação + tenant_idDOCKER — DEV · STAGING · PRODPainéis / MídiaLocalização,disponibilidade, preçoCampanhas / ReservasAgenda,contratação, conflitosMétricas / AnalyticsViews,audiência, conversãoMódulos NestJS com fronteiras claras de domínioIsolamento lógico por tenant_idPreparado para evoluir para schema dedicado por clientePostgreSQLModelagem relacional via PrismaCada camada (gateway, módulos, dados) versionada e implantável de forma independente

O sistema foi estruturado para permitir futura implementação completa de multi-tenancy e expansão white-label, sem exigir uma reescrita do modelo de dados ou dos módulos de domínio já implementados.

Modelo de Dados e Métricas de Performance

Cada painel de mídia carrega dados operacionais (localização, resolução, disponibilidade por dia da semana, preço) e dados de performance (visualizações por dia, audiência única, taxa de conversão e avaliação), com a demografia da audiência quebrada por faixa etária. Esse modelo permitia que o cliente decidisse contratar com base em dado real, não em estimativa comercial.

Entidades centrais do modelo de dados

  • Painel/Mídia: localização, resolução, preço e janelas de disponibilidade
  • Campanha/Reserva: período contratado, status e conflito de agenda
  • Métrica de performance: views/dia, audiência única, conversão, avaliação
  • Demografia da audiência: distribuição por faixa etária

Métricas por painel: visualizações, audiência, conversão e demografia

Execução e Integração

A execução cobriu regras de campanhas, controle de exibição e gestão de painéis — com integração clara entre backend, painel administrativo e operação mobile.

Princípios de implementação

  • Código organizado e previsível
  • Separação de camadas e responsabilidades
  • Comunicação evolutiva entre aplicações
  • Base pronta para integrações futuras
  • Verificação de conflito de agenda antes de confirmar reserva
  • Descoberta de mídia por geolocalização, com filtros de oferta e fluxo

Deploy e Operação

A aplicação foi preparada para ambientes distintos (desenvolvimento, staging e produção) com containerização e versionamento estruturado.

A infraestrutura foi pensada para garantir:

  • Previsibilidade de deploy
  • Isolamento de ambientes
  • Escalabilidade futura
  • Facilidade de manutenção

O projeto foi estruturado desde o início considerando observabilidade e crescimento operacional.

Impacto do Projeto

O iMidooh consolidou uma base robusta para centralização da operação de mídia DOOH, reduzindo dependência de processos manuais e preparando o caminho para expansão comercial.

Além da solução técnica, o projeto consolidou um modelo arquitetural replicável para produtos SaaS — com foco em organização, escalabilidade e manutenção.

O projeto foi descontinuado antes da fase comercial, mas chegou até um ponto de maturidade técnica claro: modelo de dados pronto para múltiplos clientes, módulos de domínio isolados, métricas reais de performance por painel e uma infraestrutura containerizada em três ambientes. É esse ponto de parada — não uma versão incompleta — que este estudo de caso documenta.

Trade-offs e o que eu faria diferente

O que optei por não fazer

  • Isolamento por schema por tenant: fiquei num schema único com chaves de tenant, mais simples de operar sozinho, sabendo que teria que revisitar isso antes de qualquer cliente real em produção.
  • Billing e assinaturas: o projeto foi descontinuado antes da fase comercial, então não construí cobrança — priorizei deixar o modelo de dados pronto para isso depois.

O que eu faria diferente hoje

Investiria em testes automatizados de provisionamento de tenant desde o início, em vez de validar isso manualmente a cada módulo novo. Com o projeto parado num ponto de maturidade técnica, essa é a lacuna mais clara entre o que existe hoje e o que precisaria pra receber o primeiro cliente com segurança.

Direitos e Propriedade

O iMidooh é um produto idealizado e de propriedade da Click Software House. Todos os direitos sobre o projeto, incluindo marca, código-fonte, design e demais materiais, são reservados à Click Software House. Este estudo de caso tem finalidade exclusivamente demonstrativa do trabalho técnico realizado, sendo vedada a reprodução, cópia ou reutilização do projeto sem autorização prévia da empresa idealizadora.

Principais Desafios Enfrentados

A complexidade do iMidooh não estava apenas no código, mas na modelagem de um produto que precisava nascer preparado para crescer.

1Desafio

Estruturar modelo de dados preparado para múltiplos clientes desde o início

2Desafio

Garantir consistência e integridade de dados em campanhas simultâneas distribuídas

3Desafio

Organizar backend modular para futura expansão white-label sem reescrita

Indicadores Técnicos Estruturais

  • Arquitetura modular
  • Banco relacional normalizado
  • Containerização com Docker
  • Ambientes isolados (dev / staging / prod)
  • Base preparada para multi-tenancy

Stack Utilizada

DockerTypeScriptReact NativeNext.jsNode.jsExpress.jsNestJSPostgreSQLPrisma

Gostou? Fale comigo!

Me envie uma mensagemVer outros projetos
© 2026 Francisco Pontes
Privacidade·Para recrutadores·Monte seu orçamento aqui·Conheça meu blog·Currículo