Uma plataforma moderna de self-checkout para restaurantes, desenvolvida com Next.js 15, Prisma ORM e Stripe para pagamentos seguros. Permite que os clientes façam pedidos de forma autônoma, escolhendo entre consumo no local ou para viagem.
- ✅ Múltiplos restaurantes na mesma plataforma
- ✅ Páginas personalizadas por restaurante (slug único)
- ✅ Upload de imagens (avatar e capa)
- ✅ Gestão de categorias de menu
- ✅ Interface intuitiva e responsiva
- ✅ Navegação por categorias de produtos
- ✅ Detalhes completos dos produtos (ingredientes, descrição)
- ✅ Carrinho de compras interativo
- ✅ Seleção de método de consumo (Local ou Para Viagem)
- ✅ Integração completa com Stripe
- ✅ Pagamento por cartão de crédito/débito
- ✅ Pagamento via Boleto bancário
- ✅ Webhooks para confirmação automática de pagamentos
- ✅ Geração de link de pagamento seguro
- ✅ Sistema completo de pedidos
- ✅ Rastreamento de status de pagamento
- ✅ Histórico de pedidos por cliente
- ✅ Validação de CPF para identificação
- ✅ Banco de dados PostgreSQL com Prisma ORM
- ✅ Migrações automáticas do banco de dados
- ✅ Seed automático de dados de exemplo
- ✅ Docker Compose para ambiente de desenvolvimento
- ✅ TypeScript para type safety
- ✅ TailwindCSS para estilização
- ✅ Componentes UI customizados com Shadcn/ui
- Next.js 15 - Framework React com App Router
- TypeScript - Tipagem estática
- TailwindCSS - Framework CSS utilitário
- Shadcn/ui - Componentes UI elegantes
- React Hook Form - Gerenciamento de formulários
- Lucide React - Ícones modernos
- Prisma ORM - ORM moderno para TypeScript
- PostgreSQL - Banco de dados relacional
- Server Actions - Ações do servidor Next.js
- Zod - Validação de schemas
- Stripe - Processamento de pagamentos
- Webhooks - Confirmação automática de pagamentos
- Docker - Containerização
- Docker Compose - Orquestração de containers
- PgAdmin - Interface de administração do PostgreSQL
- Node.js 18+
- pnpm (gerenciador de pacotes)
- Docker e Docker Compose
- Conta no Stripe (para pagamentos)
git clone https://github.com/Victor-Lis/self-checkout.git
cd self-checkoutpnpm installcp .env.example .envPreencha as variáveis no arquivo .env:
# Database
DATABASE_URL="postgresql://docker:docker@localhost:5433/self-checkout"
DATABASE_USER="docker"
DATABASE_PASSWORD="docker"
# Stripe
NEXT_PUBLIC_STRIPE_PUBLIC_KEY="pk_test_..."
STRIPE_SECRET_KEY="sk_test_..."
STRIPE_WEBHOOK_SECRET_KEY="whsec_..."
# PgAdmin
PGADMIN_DEFAULT_EMAIL="user@localhost.com"
PGADMIN_DEFAULT_PASSWORD="admin"pnpm docker-composepnpm generate
pnpm migrate deploy
pnpm seedpnpm devsrc/
├── _actions/ # Server Actions (Next.js)
├── _helpers/ # Funções utilitárias
├── _hooks/ # Custom hooks React
├── app/ # App Router (Next.js 15)
│ ├── [slug]/ # Páginas dinâmicas por restaurante
│ │ ├── menu/ # Menu e produtos
│ │ └── orders/ # Gestão de pedidos
│ └── api/ # API Routes
├── components/ # Componentes reutilizáveis
├── data/ # Camada de dados
└── lib/ # Configurações e utilitários
prisma/
├── schema.prisma # Schema do banco de dados
├── seed.ts # Dados de exemplo
└── migrations/ # Migrações do banco
# Desenvolvimento
pnpm dev # Inicia servidor de desenvolvimento
pnpm build # Build de produção
pnpm start # Inicia servidor de produção
# Banco de Dados
pnpm migrate # Executa migrações
pnpm generate # Gera cliente Prisma
pnpm seed # Popula banco com dados de exemplo
pnpm studio # Abre Prisma Studio
# Docker
pnpm docker-compose # Sobe containers
pnpm docker-compose:down # Para containers- Aplicação: http://localhost:3000
- PgAdmin: http://localhost:8081
- Prisma Studio:
pnpm studio
O projeto utiliza um design system consistente baseado em:
- Cores: Sistema de cores personalizável via CSS variables
- Componentes: Shadcn/ui como base com customizações
- Responsividade: Mobile-first approach
- Acessibilidade: Componentes acessíveis por padrão
- ✅ Validação de dados com Zod
- ✅ Sanitização de inputs
- ✅ Webhooks verificados do Stripe
- ✅ Variáveis de ambiente para chaves sensíveis
- ✅ TypeScript para type safety
# Configure as variáveis de ambiente na Vercel
# Faça o push para o repositório conectado
git push origin main# Configure DATABASE_URL com PostgreSQL hospedado
# Configure variáveis do Stripe
# Deploy via Git- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Victor Lis - Linkedin
⭐ Se este projeto foi útil para você, considere dar uma estrela!
🚀 Desenvolvido com Next.js, Prisma e Stripe