OficinaPro - Gestão premium para oficinas mecânicas

Projeto

OficinaPro - Gestão premium para oficinas mecânicas

Visão geral

OficinaPro é uma plataforma SaaS para gestão operacional de oficinas mecânicas. O projeto centraliza em um único ambiente os principais processos da rotina de uma oficina: clientes, veículos, agenda, ordens de serviço, estoque, equipe, indicadores e assinatura.

A proposta do produto é substituir controles manuais, informações espalhadas e fluxos pouco padronizados por uma experiência digital organizada, segura e preparada para crescimento.

Next.jsReactTypeScriptTailwind CSSPrismaPostgreSQLStripe

Informações sobre o projeto

Problema resolvido

Oficinas mecânicas geralmente lidam com muitas informações operacionais ao mesmo tempo: histórico de clientes e veículos, agenda de atendimentos, status de serviços, disponibilidade de peças, desempenho da equipe e controle administrativo. Quando esses dados ficam em planilhas, mensagens ou anotações soltas, a operação perde previsibilidade, aumenta o risco de retrabalho e dificulta a tomada de decisão.

O OficinaPro foi desenvolvido para resolver esse problema com uma plataforma centralizada, visualmente profissional e orientada ao uso diário da oficina.

Solução desenvolvida

Desenvolvi uma aplicação web SaaS com landing page pública, autenticação, áreas protegidas, dashboard operacional e módulos de negócio integrados ao banco de dados. A arquitetura foi criada com foco em segurança, isolamento por oficina, manutenção modular e validação das regras no servidor.

O sistema utiliza uma estrutura multi-tenant, em que a organização e a oficina ativa são derivadas da sessão do usuário. Isso permite que cada oficina acesse somente seus próprios dados e prepara a base para cenários com múltiplas unidades.

Principais funcionalidades
  • Landing page pública com apresentação do produto, planos, recursos e depoimentos aprovados.
  • Autenticação com e-mail e senha usando Auth.js.
  • Separação entre administração da plataforma e dashboard da oficina.
  • Dashboard operacional com indicadores, gráficos, alertas, agenda do dia, ordens recentes e desempenho da equipe.
  • Cadastro e gestão de clientes e veículos.
  • Agenda com controle de horários já reservados por data.
  • Ordens de serviço com status, serviços, responsáveis e histórico operacional.
  • Controle de estoque com imagens dos itens e alertas de baixo estoque.
  • Gestão de colaboradores e equipe com fotos, filtros, busca, paginação e visualizações em grade e lista.
  • Perfil do usuário e dados da oficina.
  • Upload de imagens com Cloudinary para avatar, logo da oficina, estoque e equipe.
  • Planos Básico e Profissional integrados ao Stripe Checkout.
  • Webhook Stripe para sincronizar assinatura, plano e status no banco.
  • Permissões por plano aplicadas no menu e também validadas no servidor.
  • Página de planos com status da assinatura e ação de cancelamento.
  • Feedback da plataforma salvo no banco com status pendente para aprovação manual antes de aparecer na página inicial.
Tecnologias utilizadas
  • Next.js App Router
  • React
  • TypeScript
  • Tailwind CSS v4
  • shadcn/ui
  • Lucide React
  • Motion
  • Prisma ORM
  • PostgreSQL/Neon
  • Auth.js v5
  • React Hook Form
  • Zod
  • Stripe
  • Cloudinary
Arquitetura e boas práticas aplicadas

O projeto segue uma arquitetura server-first, com separação clara entre interface, validação, regras de negócio, acesso a dados e persistência.

Fluxo principal adotado:

Interface -> Server Action -> Data Access -> Prisma -> PostgreSQL

As funcionalidades foram organizadas por módulo e rota, mantendo código específico em pastas como _components, _actions, _data-access, _schemas, _types, _utils e _services. Componentes compartilhados ficam isolados em src/components/ui, enquanto regras reutilizáveis, como permissões por plano, ficam centralizadas em src/features.

As páginas protegidas validam sessão, perfil, assinatura e contexto de oficina no servidor antes de acessar dados sensíveis. Essa abordagem reduz o risco de vazamento entre tenants e evita depender apenas da interface para controle de acesso.

Desafios técnicos
  • Modelar uma base multi-tenant com Organization, Workshop, usuários e memberships.
  • Garantir isolamento de dados por organização e oficina em consultas, actions e rotas protegidas.
  • Integrar Stripe Checkout com webhooks assinados, tratando eventos assíncronos e estados de assinatura.
  • Aplicar permissões por plano tanto na sidebar quanto no acesso direto por URL.
  • Implementar uploads de imagem reutilizando serviços existentes e preservando validações.
  • Criar dashboards e módulos operacionais com dados reais, sem depender de métricas fictícias.
  • Manter uma interface dark, premium e responsiva sem alterar o layout global em correções pontuais.
  • Preparar o projeto para deploy com validações de lint, TypeScript, build, Prisma, segurança e variáveis de ambiente.
Resultados alcançados
  • MVP funcional com área pública, autenticação, dashboard e módulos operacionais conectados ao banco.
  • Regras de acesso por plano centralizadas e validadas também no servidor.
  • Integração com Stripe preparada para assinatura, status, cancelamento e webhook.
  • Uploads integrados ao Cloudinary nos principais fluxos com imagem.
  • Roadmap técnico documentado por fases, com validações e pendências registradas.
  • Projeto preparado para publicação controlada, aguardando apenas configurações finais de ambiente e validações de produção e homologação.
Minhas contribuições
  • Planejamento e condução do roadmap técnico do produto.
  • Desenvolvimento full-stack da landing page, autenticação, dashboard e módulos operacionais.
  • Modelagem do banco de dados com Prisma e aplicação de migrations.
  • Implementação de regras de segurança, autorização e isolamento por tenant.
  • Integração com Stripe para planos e assinaturas.
  • Integração com Cloudinary para upload de imagens.
  • Criação de interfaces responsivas com foco em uma experiência premium para o segmento automotivo.
  • Documentação técnica de execução local, deploy, rollback e validações.
Acesso ao painel:

Login: oficina@oficinapro.com.br
Senha: admin123