Um sistema moderno de importação e processamento de vendas construído com Ruby on Rails, processamento assíncrono e interface responsiva.
🌐 Deploy em produção: https://rails-sales-import-web.onrender.com/
- 📁 Importação de arquivos (.tab, .tsv, .csv)
- ⚡ Processamento assíncrono com Sidekiq e Redis
- 📊 Dashboard com estatísticas de vendas
- 📈 Histórico de importações com status
- 🎯 Validação robusta de dados
- 📱 Interface responsiva com DaisyUI/Tailwind CSS
- 🔍 Arquivos de exemplo para testes
- 🚀 Deploy automatizado no Render
- 🧪 SimpleCov - Relatórios de cobertura de testes (98.37% de cobertura)
- Ruby on Rails 8.0.2 - Framework principal
- SQLite3 - Banco de dados
- Puma - Servidor web
- Active Storage - Upload e gerenciamento de arquivos
- Sidekiq - Processamento de jobs em background
- Redis - Cache e message broker para Sidekiq
- Dry-Monads - Programação funcional e tratamento de erros
- Tailwind CSS - Framework CSS utilitário
- DaisyUI - Componentes prontos para Tailwind
- Turbo Rails - SPA-like experience
- Stimulus - JavaScript framework
- SmarterCSV - Parser eficiente de arquivos CSV/TSV
- RSpec - Framework de testes
- Factory Bot - Factories para testes
- Faker - Dados fake para testes
- Shoulda Matchers - Matchers para RSpec
- SimpleCov - Cobertura de testes
- Docker - Containerização
- Render - Plataforma de deploy
Pré-requisitos:
- VS Code com extensão "Dev Containers"
- Docker Desktop instalado e rodando
Setup:
- Clone o repositório e abra no VS Code
- Aceite "Reopen in Container" ou pressione
Ctrl+Shift+P
→ "Dev Containers: Reopen in Container" - Aguarde a construção do container (primeira vez pode demorar)
- Execute o setup do banco de dados:
rails db:create && rails db:migrate && rails db:seed
Vantagens:
- ✅ Ambiente padronizado com Ruby 3.4.4, Node.js e Redis pré-configurados
- ✅ Ferramentas incluídas:
git
,gh
,docker
,tree
,find
,grep
- ✅ Isolamento completo do ambiente local
Pré-requisitos:
- Ruby 3.4.4+
- Node.js (para Tailwind CSS)
- Redis
- Docker (opcional)
Clonando o repositório:
git clone https://github.com/seu-usuario/rails-sales-import.git
cd rails-sales-import
Instalação das dependências:
# Instalar gems
bundle install
Configuração do banco de dados:
rails db:create
rails db:migrate
rails db:seed # Carrega dados de exemplo
Terminal 1 - Rails Server:
rails server -b 0.0.0.0 -p 3000
Terminal 2 - Sidekiq (Processamento Assíncrono):
REDIS_URL=redis://localhost:6379/0 bundle exec sidekiq -C config/sidekiq.yml
- Aplicação: http://localhost:3000
- Sidekiq Web UI: http://localhost:3000/sidekiq
O sistema utiliza processamento assíncrono para garantir performance e experiência do usuário
app/
├── controllers/
│ ├── dashboard_controller.rb # Dashboard principal
│ ├── sample_files_controller.rb # Download de exemplos
│ └── import_history_controller.rb # Histórico
├── models/
│ ├── sales_import.rb # Modelo principal
│ ├── sale.rb # Venda individual
│ ├── purchaser.rb # Comprador
│ ├── item.rb # Item/Produto
│ └── merchant.rb # Lojista
├── services/
│ └── sales_imports/
│ ├── processor.rb # Orquestrador principal
│ ├── file_parser.rb # Parser de arquivos
│ └── sales_creator.rb # Criação de vendas
├── jobs/
│ └── sales_import_processing_job.rb # Job assíncrono
└── views/
├── dashboard/ # Interface principal
└── import_history/ # Histórico
rspec
Acesse http://localhost:3000/sidekiq para monitorar:
- Jobs em execução
- Filas de processamento
- Histórico de jobs
- Estatísticas de performance
O projeto está configurado para deploy automático no Render:
https://rails-sales-import-web.onrender.com/
- Plataforma: Render
- Container: Docker
- Redis: Render Redis addon
- Storage: Persistent disk para arquivos
purchaser name item description item price purchase count merchant address merchant name
João Silva Awesome Product $34.18 2 123 Main St Cool Store
- Valid Sample: Arquivo com dados válidos
- Invalid Sample: Arquivo com erros para testar validação
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Desenvolvido com ❤️ usando Ruby on Rails e processamento assíncrono