Este repositorio representa el backend en Rails para una aplicación de entrega, incluyendo una interfaz de gestión de datos para usuarios con roles de administrador y desarrollador.
🔗 Repositorios Relacionados
- 🛒 Aplicación Consumy - Aplicación para consumidores
- 👨💼 Aplicación Vendedor - Aplicación para vendedores
- 💲 API Paymenty - API de pagos
🔍 Haz clic para expandir los detalles de las Gems y Conceptos
-
Procesamiento en segundo plano: Utilización de Sidekiq para el procesamiento de tareas asíncronas. Redis se utiliza como cola de almacenamiento para estas tareas.
-
Paginación: Implementación de paginación para el listado de recursos utilizando la gem Kaminari.
-
Pruebas con RSpec y Shoulda Matchers: Utilización de RSpec para escribir pruebas unitarias, de integración y funcionales.
-
Cobertura de Pruebas con SimpleCov: Integración con la gem SimpleCov para el análisis de cobertura de código.
-
Eliminación Suave con Discard: Implementación de eliminación suave utilizando la gem Discard.
-
Bullet para Detección de Consultas N+1: La gem Bullet se utiliza para detectar y prevenir problemas de rendimiento, como consultas N+1.
-
Anonymización de Datos: Aplicación de técnicas para anonimizar datos sensibles, asegurando el cumplimiento de regulaciones de privacidad y seguridad, como la LGPD.
-
API RESTful: Desarrollo de una API RESTful que sigue principios de arquitectura de software para permitir una comunicación eficiente entre el backend y el frontend.
-
Swagger: Documentación automática de la API utilizando la gem Rswag (basada en Swagger).
-
Docker: Opción de contenedorización utilizando Docker para facilitar el desarrollo, las pruebas y el despliegue.
-
Manipulación de Imágenes: Utilización de la gem ImageProcessing para la manipulación de imágenes, como el redimensionamiento y la compresión.
-
WebSockets y SSE: Implementación de comunicación en tiempo real utilizando WebSockets.
-
Cálculo de Distancias: Utilización de la gem Geocoder para implementar el cálculo de distancias entre el cliente y el establecimiento comercial.
-
Hilos: Uso de hilos para mejorar la concurrencia y el rendimiento de la aplicación en operaciones paralelas.
-
Gestión de Sesiones y Autenticación: Implementación de autenticación de usuarios con Devise y autenticación mediante JWT.
-
Control de CORS: Utilización de la gem rack-cors para gestionar permisos de CORS.
-
Máquinas de Estados con State Machines: Utilización de la gem state_machines-activerecord para implementar máquinas de estados en los modelos de ActiveRecord.
-
Faraday para Consumir APIs Externas: Integración con servicios externos utilizando la gem Faraday.
-
Automatización de Tareas y DevOps: La estructura de DevOps está soportada por herramientas como Sidekiq y Docker.
🛠️ Con Docker
- Asegúrate de tener Docker y Docker Compose instalados en tu máquina.
- Docker
- Docker Compose
-
Clona los repositorios 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
-
Descarga el archivo
docker-compose.yml
: -
En la raíz del proyecto, ejecuta el siguiente comando:
docker-compose up --build
-
Haz clic en "RUN PENDING MIGRATES" en la aplicación de backend.
-
Entra en el contenedor del backend y ejecuta las semillas:
docker exec -it backendContainerName /bin/sh rails db:seed
-
Configura las variables de entorno:
JWT_SECRET_KEY=xxxxxxxxxxxxxxxxxxxxx
-
Reinicia los contenedores para que las variables se carguen.
🛠️ Sin Docker
-
Asegúrate de tener Redis y Sidekiq configurados y funcionando localmente.
-
Instala las dependencias de R:
install.packages("FactoMineR") install.packages("ggplot2") install.packages("reshape2")
bundle install
Crea la base de datos y ejecuta migraciones:
rails db:create
rails db:migrate
rails server
bundle exec rspec
redis-server
bundle exec sidekiq
📝 Otros Proyectos
- 📏 Aplicación de Precisión en React - Interfaz de registro para mediciones de gas y agua
- 🤖 API Node - API para medir y registrar consumo