Skip to content

victor-lis/Self-Checkout

Repository files navigation

🛍️ Self-Checkout

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.

✨ Features Principais

🍽️ Gestão de Restaurantes

  • ✅ 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

📱 Experiência do Cliente

  • ✅ 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)

💳 Sistema de Pagamentos

  • ✅ 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

📊 Gestão de Pedidos

  • ✅ Sistema completo de pedidos
  • ✅ Rastreamento de status de pagamento
  • ✅ Histórico de pedidos por cliente
  • ✅ Validação de CPF para identificação

🔧 Recursos Técnicos

  • ✅ 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

🚀 Tecnologias Utilizadas

Frontend

  • 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

Backend

  • Prisma ORM - ORM moderno para TypeScript
  • PostgreSQL - Banco de dados relacional
  • Server Actions - Ações do servidor Next.js
  • Zod - Validação de schemas

Pagamentos

  • Stripe - Processamento de pagamentos
  • Webhooks - Confirmação automática de pagamentos

DevOps

  • Docker - Containerização
  • Docker Compose - Orquestração de containers
  • PgAdmin - Interface de administração do PostgreSQL

📋 Pré-requisitos

  • Node.js 18+
  • pnpm (gerenciador de pacotes)
  • Docker e Docker Compose
  • Conta no Stripe (para pagamentos)

🛠️ Instalação e Configuração

1. Clone o repositório

git clone https://github.com/Victor-Lis/self-checkout.git
cd self-checkout

2. Instale as dependências

pnpm install

3. Configure as variáveis de ambiente

cp .env.example .env

Preencha 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"

4. Inicie o banco de dados

pnpm docker-compose

5. Execute as migrações e seed

pnpm generate
pnpm migrate deploy
pnpm seed

6. Inicie o servidor de desenvolvimento

pnpm dev

📁 Estrutura do Projeto

src/
├── _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

🎯 Scripts Disponíveis

# 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

🌐 Acessos

🎨 Design System

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

🔐 Segurança

  • ✅ 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

🚀 Deploy

Vercel (Recomendado)

# Configure as variáveis de ambiente na Vercel
# Faça o push para o repositório conectado
git push origin main

Railway/Render

# Configure DATABASE_URL com PostgreSQL hospedado
# Configure variáveis do Stripe
# Deploy via Git

🤝 Contribuição

  1. Faça um fork do projeto
  2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

📄 Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

👨‍💻 Autor

Victor Lis - Linkedin


⭐ Se este projeto foi útil para você, considere dar uma estrela!

🚀 Desenvolvido com Next.js, Prisma e Stripe

About

Sistema de self-checkout de compras de lanches em um restaurante!

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published