Este repositório representa o backend em Rails para uma aplicação de delivery, incluindo uma interface de gerenciamento de dados para usuários com as roles admin e developer.
🔗 Repositórios Relacionados
- 🛒 Consumy Application - Aplicação do consumidor
- 👨💼 Seller Application - Aplicação do vendedor
- 💲 Paymenty API - API de pagamento
🔍 Clique para expandir os detalhes das Gems e Conceitos
-
Processos em Background: Utilização do Sidekiq para o processamento assíncrono de tarefas. O Redis é utilizado como fila de armazenamento para essas tarefas.
-
Paginação: Implementação de paginação para listagem de recursos utilizando a gem Kaminari.
-
Testes com RSpec e Shoulda Matchers: Utilização de RSpec para escrever testes de unidade, integração e funcionalidade.
-
Cobertura de Testes com SimpleCov: Integração com a gem SimpleCov para realizar análises de cobertura de código.
-
Soft Delete com Discard: Implementação de exclusão suave (soft delete) com a gem Discard.
-
Bullet para Detecção de N+1 Queries: A gem Bullet é utilizada para detectar e prevenir problemas de desempenho como N+1 queries.
-
Anonimização de Dados: Aplicação de técnicas para anonimizar dados sensíveis, garantindo a conformidade com normas de privacidade e segurança, como a LGPD.
-
API RESTful: Desenvolvimento de uma API RESTful que segue os princípios de arquiteturas de software para permitir uma comunicação eficiente entre o backend e o frontend.
-
Swagger: Documentação automática da API utilizando a gem Rswag (baseada no Swagger).
-
Docker: Opção de containerização utilizando Docker para facilitar o desenvolvimento, teste e deployment.
-
Manipulação de Imagens: Utilização da gem ImageProcessing para manipulação de imagens, como redimensionamento e compressão.
-
WebSockets e SSE: Implementação de comunicação em tempo real usando WebSockets.
-
Cálculo de Distância: Utilização da gem Geocoder para implementar o cálculo de distância entre o cliente e o estabelecimento comercial.
-
Threads: Uso de threads para melhorar a concorrência e o desempenho da aplicação em operações paralelas.
-
Gerenciamento de Sessão e Autenticação: Implementação de autenticação de usuários com Devise e autenticação via JWT.
-
Controle de CORS: Utilização da gem rack-cors para gerenciar as permissões de CORS.
-
Máquinas de Estado com State Machines: Utilização da gem state_machines-activerecord para implementação de máquinas de estado nos modelos ActiveRecord.
-
Faraday para Consumo de APIs Externas: Integração com serviços externos utilizando a gem Faraday.
-
Automação de Tarefas e DevOps: A estrutura DevOps é suportada por ferramentas como Sidekiq e Docker.
🛠️ Com Docker
- Certifique-se de ter o Docker e o Docker Compose instalados em sua máquina.
- Docker
- Docker Compose
-
Clone os repositórios relacionados:
git clone https://github.com/SamuelRocha91/consumy.git git clone https://github.com/SamuelRocha91/seller_application.git git clone https://github.com/SamuelRocha91/paymenty.git git clone https://github.com/SamuelRocha91/delivery_back.git
-
Baixe o arquivo
docker-compose.yml
: -
Na raiz do projeto, execute o seguinte comando:
docker-compose up --build
-
Clique em "RUN PENDING MIGRATES" na aplicação back-end.
-
Entre no container do back-end e rode as seeds:
docker exec -it nomeDoContainerBackEnd /bin/sh rails db:seed
-
Configure as variáveis de ambiente:
JWT_SECRET_KEY=xxxxxxxxxxxxxxxxxxxxx
-
Reinicie os containers para as variáveis serem carregadas.
🛠️ Sem Docker
-
Certifique-se de ter o Redis e o Sidekiq configurados e rodando localmente.
-
Instale as dependências do R:
install.packages("FactoMineR") install.packages("ggplot2") install.packages("reshape2")
bundle install
Crie o banco de dados e execute as migrações:
rails db:create
rails db:migrate
rails server
bundle exec rspec
redis-server
bundle exec sidekiq
📝 Outros projetos
- 📏 React Precision Application - Interface de cadastro de medições de gás e de água
- 🤖 Node API - Api de medição e cadastro de consumo