Sistema completo full-stack para gerenciamento de uma pastelaria, com cardΓ‘pio digital, pedidos pelo WhatsApp, painel administrativo e controle financeiro em tempo real.
- Sobre o Projeto
- DemonstraΓ§Γ£o
- Funcionalidades
- Stack TecnolΓ³gica
- Arquitetura
- Banco de Dados
- SeguranΓ§a
- Como Rodar Localmente
- VariΓ‘veis de Ambiente
- Deploy
- Estrutura de Pastas
- Autor
O Pastel do zΓ© Γ© uma pastelaria tradicional fundada em 1986. O projeto nasceu da necessidade de modernizar o atendimento β substituindo anotaΓ§Γ΅es manuais por um sistema digital completo que cobre desde o pedido do cliente atΓ© a gestΓ£o financeira do negΓ³cio.
O sistema Γ© dividido em duas partes:
- Site pΓΊblico β onde os clientes navegam pelo cardΓ‘pio, montam o pedido e finalizam pelo WhatsApp
- Painel administrativo β onde o dono gerencia pedidos, produtos, estoque e finanΓ§as em tempo real
| Γrea | URL |
|---|---|
| Site pΓΊblico | https://e-commerce-full-project-pmqj-dkcbdrumf-gustavonunesxs-projects.vercel.app/ |
| Painel admin | https://e-commerce-full-project-pmqj-dkcbdrumf-gustavonunesxs-projects.vercel.app//admin/login |
- ποΈ CardΓ‘pio digital com filtro por categorias
- πΌοΈ Popup de produto com foto, descriΓ§Γ£o, quantidade e campo de observaΓ§Γ΅es
- π Carrinho de compras com controle de quantidade
- π¬ FinalizaΓ§Γ£o de pedido pelo WhatsApp com mensagem automΓ‘tica formatada
- π± Interface 100% responsiva para mobile e desktop
- β‘ Carregamento rΓ‘pido com Server Side Rendering
- π Login seguro com email e senha via Supabase Auth
- π Dashboard com mΓ©tricas do dia β pedidos, receita e estoque baixo
- π NotificaΓ§Γ΅es em tempo real quando chega pedido novo (com som de alerta)
- π¦ GestΓ£o de pedidos com filtros por status, origem e perΓodo
- π AtualizaΓ§Γ£o de status de pedidos (pendente β confirmado β pronto β entregue)
- π° Controle financeiro com receitas e despesas separadas por categoria
- π Receita por canal β site, iFood e balcΓ£o
- π§Ύ LanΓ§amento de despesas (ingredientes, aluguel, energia, funcionΓ‘rios)
- π½οΈ CRUD completo de produtos β adicionar, editar, ativar/desativar e deletar
- πΌοΈ Imagens hospedadas no Supabase Storage
| Camada | Tecnologia |
|---|---|
| Framework | Next.js 15 (App Router) |
| Linguagem | TypeScript |
| EstilizaΓ§Γ£o | TailwindCSS + shadcn/ui |
| Banco de Dados | Supabase (PostgreSQL) |
| AutenticaΓ§Γ£o | Supabase Auth |
| Storage | Supabase Storage |
| Tempo Real | Supabase Realtime |
| Backend | API Routes (serverless) |
| Deploy | Vercel |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β NEXT.JS (Vercel) β
β β
β [Site PΓΊblico] [Dashboard Admin] β
β β’ CardΓ‘pio β’ Pedidos β
β β’ Carrinho β’ Financeiro β
β β’ Popup produto β’ Produtos β
β β’ Finaliza WhatsApp β’ Dashboard β
ββββββββββββββββ¬βββββββββββββββββββββββββ¬βββββββββββββββ
β β
βΌ βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SUPABASE β
β β
β PostgreSQL β Auth β Storage β Realtime β
β (banco) β (login) β (imagens) β (notificaΓ§Γ΅es) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββ
β API ROUTES β
β /api/pedidos β
β (service role) β
ββββββββββββββββββββββββ
O banco Γ© composto por 6 tabelas principais:
produtos
βββ id, nome, descricao, preco
βββ categoria, imagem_url
βββ estoque, estoque_minimo
βββ ativo, criado_em
pedidos
βββ id, origem (site/ifood/balcao)
βββ status (pendente/confirmado/pronto/entregue/cancelado)
βββ total, nome_cliente, telefone
βββ observacao, ifood_id
βββ criado_em
itens_pedido
βββ id, pedido_id (FK), produto_id (FK)
βββ quantidade, preco_unitario
βββ subtotal
movimentacoes_estoque
βββ id, produto_id (FK)
βββ tipo (entrada/saida), quantidade
βββ motivo, pedido_id (FK)
βββ observacao, criado_em
transacoes_financeiras
βββ id, tipo (receita/despesa)
βββ categoria, descricao, valor
βββ pedido_id (FK)
βββ criado_em
usuarios_admin
βββ id (FK β auth.users)
βββ nome, email
βββ papel (admin/funcionario)
O projeto utiliza Row Level Security (RLS) do Supabase para controlar o acesso aos dados:
- Produtos β leitura pΓΊblica (cardΓ‘pio visΓvel para todos), escrita restrita a admins
- Pedidos β inserΓ§Γ£o pΓΊblica (qualquer cliente pode criar), leitura restrita a admins
- Financeiro e estoque β acesso restrito a admins logados
- API Route
/api/pedidosβ usaservice_role keyno servidor para operaΓ§Γ΅es que precisam bypassar o RLS com seguranΓ§a
- Node.js 18+
- Conta no Supabase
# Clone o repositΓ³rio
git clone https://github.com/gustavonunesx/E-commerce_Full_Project.git
cd E-commerce_Full_Project
# Instale as dependΓͺncias
npm install
# Configure as variΓ‘veis de ambiente
cp .env.example .env.local
# edite o .env.local com suas credenciais do Supabase
# Rode o projeto
npm run devAcesse http://localhost:3000
Crie um arquivo .env.local na raiz do projeto com as seguintes variΓ‘veis:
# Supabase
NEXT_PUBLIC_SUPABASE_URL=https://xxxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGci...
SUPABASE_SERVICE_ROLE_KEY=eyJhbGci...
β οΈ Nunca commite o.env.localno GitHub. Ele jΓ‘ estΓ‘ no.gitignore.
O projeto estΓ‘ configurado para deploy automΓ‘tico na Vercel.
- FaΓ§a fork ou clone do repositΓ³rio
- Importe o projeto na Vercel
- Configure as variΓ‘veis de ambiente no painel da Vercel
- Configure a URL do site no Supabase em
Authentication β URL Configuration - Deploy automΓ‘tico a cada
git pushna branchmain
Pastel-do-Ze/
βββ app/
β βββ admin/
β β βββ (protected)/ # Rotas protegidas por auth
β β β βββ dashboard/ # PΓ‘gina principal do admin
β β β βββ pedidos/ # GestΓ£o de pedidos
β β β βββ products/ # GestΓ£o de produtos
β β β βββ sales/ # Controle financeiro
β β βββ login/ # Tela de login
β β βββ logout/ # Rota de logout
β βββ api/
β β βββ pedidos/ # API Route para salvar pedidos
β βββ page.tsx # PΓ‘gina principal (site pΓΊblico)
βββ components/
β βββ cart.tsx # Carrinho de compras
β βββ hero.tsx # SeΓ§Γ£o hero
β βββ services.tsx # CardΓ‘pio e popup de produto
β βββ about.tsx # SeΓ§Γ£o sobre
β βββ contact.tsx # SeΓ§Γ£o contato
β βββ footer.tsx # RodapΓ©
β βββ header.tsx # CabeΓ§alho
βββ contexts/
β βββ cart-context.tsx # Estado global do carrinho
β βββ products-context.tsx # Estado global dos produtos
βββ hooks/
β βββ use-in-view.ts # Hook de visibilidade
β βββ use-mobile.ts # Hook de responsividade
βββ lib/
β βββ supabase/
β β βββ client.ts # Cliente browser
β β βββ server.ts # Cliente servidor
β β βββ middleware.ts # Cliente middleware
β βββ products.ts # Tipos de produtos
β βββ utils.ts # UtilitΓ‘rios
βββ public/
β βββ images/ # Imagens estΓ‘ticas
βββ middleware.ts # Middleware de autenticaΓ§Γ£o
βββ next.config.mjs # ConfiguraΓ§Γ£o do Next.js
Feito por Gustavo Nunes