Plataforma de combate ao desperdício de alimentos em Iguaba Grande, RJ. Conecta estabelecimentos comerciais a clientes que podem comprar "bags surpresa" com alimentos próximos do vencimento por preços reduzidos.
- 🗺️ Mapa interativo com estabelecimentos participantes
- 🛍️ Reserva de bags surpresa com até 70% de desconto
- 💳 Pagamento via PIX (Mercado Pago)
- 📱 Código de retirada digital
- 📊 Acompanhamento de pedidos em tempo real
- 🏪 Painel de gerenciamento de estabelecimento
- 📦 Criação e gestão de bags surpresa
- 📸 Upload de fotos dos produtos
- 📈 Estatísticas de vendas e impacto ambiental
- ✅ Confirmação de pedidos e retiradas
- 👥 Aprovação de novos estabelecimentos
- 💰 Gestão de pagamentos e taxas
- 📊 Dashboard com métricas do sistema
- ⚙️ Configurações globais da plataforma
- React 19 com TypeScript
- Vite 7 para build ultra-rápido
- Tailwind CSS para estilização
- Leaflet para mapas interativos
- React Router para navegação
- Lucide React para ícones
- Cloudflare Workers (serverless edge computing)
- Hono framework ultra-rápido
- Cloudflare D1 (SQLite distribuído)
- Cloudflare R2 (object storage)
- Zod para validação de dados
- Mercado Pago para PIX (Brasil)
- Stripe para cartões (em breve)
- Mocha Users Service (Google OAuth)
npm install -g wrangler
wrangler login# Copie o exemplo
cp .dev.vars.example .dev.vars
# Configure as chaves:
# - MOCHA_USERS_SERVICE_API_URL
# - MOCHA_USERS_SERVICE_API_KEY
# - GOOGLE_MAPS_API_KEY
# - MERCADOPAGO_ACCESS_TOKEN
# - MERCADOPAGO_PUBLIC_KEY
# - STRIPE_SECRET_KEY (opcional)npm run deploy:productionwrangler d1 migrations apply salva-iguaba-db --remote# 1. Faça login na aplicação
# 2. Pegue seu user_id de /api/users/me
# 3. Execute:
wrangler d1 execute salva-iguaba-db --remote --command="INSERT INTO admins (user_id) VALUES ('SEU_USER_ID')"# Instalar dependências
npm install --legacy-peer-deps
# Iniciar servidor de desenvolvimento
npm run dev
# Em outro terminal, aplicar migrações locais
wrangler d1 migrations apply salva-iguaba-db --local
# Acessar
http://localhost:5173salva-iguaba/
├── src/
│ ├── react-app/ # Frontend React
│ │ ├── components/ # Componentes reutilizáveis
│ │ │ ├── payments/ # Componentes de pagamento
│ │ │ └── ...
│ │ └── pages/ # Páginas da aplicação
│ │ ├── Home.tsx
│ │ ├── MyOrders.tsx
│ │ ├── PaymentPage.tsx
│ │ ├── MerchantDashboard.tsx
│ │ └── AdminDashboard.tsx
│ ├── worker/ # Backend Cloudflare Worker
│ │ └── index.ts # API endpoints
│ └── shared/ # Tipos compartilhados
│ └── types.ts
├── migrations/ # Migrações SQL D1
│ ├── 1.sql
│ ├── 2.sql
│ ├── 3.sql
│ ├── 4.sql
│ └── 5.sql
├── wrangler.json # Configuração Cloudflare
└── package.json
- ✅ Autenticação via Google OAuth
- ✅ Middleware de proteção de rotas admin
- ✅ Validação de dados com Zod
- ✅ Webhook signature verification (Mercado Pago)
- ✅ HTTPS obrigatório em produção
- ✅ CORS configurado
- 🍞 2.5 toneladas de alimentos salvos
- 💰 R$ 45.000 economizados pelos clientes
- 🌱 3.8 toneladas de CO₂ evitadas
MIT License - veja LICENSE para detalhes
Contribuições são bem-vindas! Por favor:
- Fork o 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
Salva Iguaba - Combatendo o desperdício, um bag de cada vez! 🌱
Desenvolvido com ❤️ para Iguaba Grande, RJ