Skip to content

gustavonunesx/E-commerce_Full_Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

35 Commits
Β 
Β 
Β 
Β 

Repository files navigation

πŸ₯Ÿ Pastel do ZΓ© β€” Sistema de GestΓ£o para Pastelaria

Sistema completo full-stack para gerenciamento de uma pastelaria, com cardΓ‘pio digital, pedidos pelo WhatsApp, painel administrativo e controle financeiro em tempo real.

Next.js TypeScript Supabase TailwindCSS Vercel


πŸ“‹ SumΓ‘rio


πŸ“– Sobre o Projeto

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

πŸŽ₯ DemonstraΓ§Γ£o

Á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

βœ… Funcionalidades

Site PΓΊblico (Cliente)

  • πŸ—‚οΈ 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

Painel Administrativo (Dono)

  • πŸ” 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

πŸ› οΈ Stack TecnolΓ³gica

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

πŸ—οΈ Arquitetura

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    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)     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ—„οΈ Banco de Dados

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)

πŸ” SeguranΓ§a

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 β€” usa service_role key no servidor para operaΓ§Γ΅es que precisam bypassar o RLS com seguranΓ§a

πŸ’» Como Rodar Localmente

PrΓ©-requisitos

InstalaΓ§Γ£o

# 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 dev

Acesse http://localhost:3000


πŸ”‘ VariΓ‘veis de Ambiente

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.local no GitHub. Ele jÑ estÑ no .gitignore.


πŸš€ Deploy

O projeto estΓ‘ configurado para deploy automΓ‘tico na Vercel.

  1. FaΓ§a fork ou clone do repositΓ³rio
  2. Importe o projeto na Vercel
  3. Configure as variΓ‘veis de ambiente no painel da Vercel
  4. Configure a URL do site no Supabase em Authentication β†’ URL Configuration
  5. Deploy automΓ‘tico a cada git push na branch main

πŸ“ Estrutura de Pastas

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

πŸ‘€ Autor

Feito por Gustavo Nunes

LinkedIn GitHub

Releases

No releases published

Packages

 
 
 

Contributors