Uma aplicação web moderna para divisão de contas entre amigos, desenvolvida com React e Node.js.
🚀 Acesse a aplicação: https://bsmvictor.github.io/divide-ai/
A aplicação está hospedada no GitHub Pages e funciona completamente no frontend com simulação da API para demonstração.
- Divisão Simples: Divide o valor total igualmente entre todos os participantes
- Divisão Personalizada: Permite que diferentes pessoas paguem por itens específicos
- Cálculo de Gorjetas: Adiciona gorjetas em porcentagem
- Descontos: Aplica descontos ao valor total
- Compartilhamento: Compartilha o resultado via área de transferência ou Web Share API
- Interface Moderna: Design limpo e responsivo com Material-UI
- Dark/Light Mode: Tema escuro em preto puro e tema claro
- Cards Transparentes: Design minimalista sem emojis
Este projeto utiliza uma arquitetura de monorepo com as seguintes tecnologias:
- Node.js com Express
- Arquitetura em camadas (Controllers, Services, Utils)
- Validação de dados robusta
- Rate limiting e segurança
- CORS configurado para frontend
- React 18 com Vite
- Material-UI (MUI) para componentes
- React Router para navegação
- Axios para comunicação com API
- React Hot Toast para notificações
- Design responsivo e minimalista
Em breve - adicione screenshots da aplicação aqui
- Node.js 18+
- npm ou yarn
- Git
git clone https://github.com/bsmvictor/divide-ai.git
cd divide-ai# Instala dependências do monorepo e de todos os pacotes
npm run install:allAPI - Crie um arquivo .env na pasta packages/api:
PORT=3001
NODE_ENV=developmentWeb - Crie um arquivo .env na pasta packages/web:
VITE_API_URL=http://localhost:3001/apinpm run devTerminal 1 - API:
npm run dev:apiTerminal 2 - Web:
npm run dev:web- Web: http://localhost:3000
- API: http://localhost:3001
- Health Check: http://localhost:3001/health
O frontend é automaticamente deployado no GitHub Pages a cada push na branch main:
- URL: https://bsmvictor.github.io/divide-ai/
- Workflow:
.github/workflows/deploy.yml - Build automático: Sim
- Funciona offline: Sim (com simulação da API)
Para hospedar a API, você pode usar:
# 1. Instale o Railway CLI
npm install -g @railway/cli
# 2. Faça login
railway login
# 3. Deploy da API
cd packages/api
railway deploy# 1. Instale o Heroku CLI
# 2. Faça login
heroku login
# 3. Crie um app
heroku create divide-ai-api
# 4. Deploy
git subtree push --prefix packages/api heroku main# 1. Instale o Vercel CLI
npm install -g vercel
# 2. Deploy da API
cd packages/api
vercelA documentação completa da API está disponível em: packages/api/API_DOCUMENTATION.md
GET /health- Health checkPOST /api/bills/calculate- Divisão simplesPOST /api/bills/calculate-custom- Divisão personalizada
npm run test:apinpm run build# API
npm run build:api
# Web
npm run build:webnpm run previewnpm run dev- Executa API e Web simultaneamentenpm run dev:api- Executa apenas a APInpm run dev:web- Executa apenas o Webnpm run build- Build completo (API + Web)npm run install:all- Instala todas as dependênciasnpm run clean- Limpa node_modules e builds
npm run dev- Executa em modo desenvolvimentonpm start- Executa em modo produçãonpm run build- Build do projeto
npm run dev- Executa em modo desenvolvimentonpm run build- Build para produçãonpm run preview- Preview da build
divide-ai/
├── packages/
│ ├── api/ # Backend Node.js
│ │ ├── src/
│ │ │ ├── controllers/ # Controladores da API
│ │ │ ├── services/ # Lógica de negócio
│ │ │ ├── utils/ # Utilitários
│ │ │ └── server.js # Servidor principal
│ │ └── package.json
│ │
│ ├── web/ # Frontend React
│ │ ├── src/
│ │ │ ├── components/ # Componentes reutilizáveis
│ │ │ ├── pages/ # Páginas da aplicação
│ │ │ ├── services/ # Serviços (API calls)
│ │ │ └── utils/ # Utilitários
│ │ ├── index.html # HTML principal
│ │ └── package.json
│ │
├── .github/ # GitHub Actions e templates
├── package.json # Configuração do monorepo
└── README.md
- Acesse https://bsmvictor.github.io/divide-ai/
- Clique em "Divisão Simples"
- Escolha entre inserir o valor total ou adicionar itens individuais
- Informe o número de pessoas
- Adicione gorjeta e desconto (opcional)
- Clique em "Calcular Divisão"
- Compartilhe o resultado
- Clique em "Divisão Personalizada"
- Adicione as pessoas que participarão
- Adicione os itens e selecione quem vai dividir cada um
- Configure gorjeta e desconto (opcional)
- Calcule e compartilhe o resultado
- Minimalista: Interface limpa sem elementos desnecessários
- Dark/Light Mode: Tema escuro em preto puro (#0a0a0a)
- Cards Transparentes: Apenas bordas visíveis
- Sem Emojis: Design profissional e atemporal
- Responsivo: Funciona em todos os dispositivos
- Acessível: WCAG AA compliant
- Fonte: Inter (Google Fonts)
- Cores: Escala de cinzas neutros
- Componentes: Material-UI customizado
- Animações: Transições suaves de 0.3s
- 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
Veja o CONTRIBUTING.md para mais detalhes.
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Victor Boaventura
- GitHub: @bsmvictor
- LinkedIn: Victor Boaventura
- Material-UI pelos componentes UI
- Vite pela ferramenta de build
- Express.js pelo framework web
- GitHub Pages pela hospedagem gratuita
- PWA (Progressive Web App)
- Histórico de divisões
- Múltiplas moedas
- Exportar para PDF
- Integração com apps de pagamento
- Modo offline completo
⭐ Se este projeto te ajudou, considere dar uma estrela no repositório!
🚀 Acesse agora: https://bsmvictor.github.io/divide-ai/