Этот репозиторий представляет собой бэкенд на Rails для приложения доставки, включая интерфейс управления данными для пользователей с ролями администратора и разработчика.
🔗 Связанные репозитории
- 🛒 Приложение Consumy - Приложение для потребителей
- 👨💼 Приложение Продавца - Приложение для продавцов
- 💲 API Paymenty - API для платежей
🔍 Нажмите, чтобы развернуть детали библиотек и концепций
-
Фоновая обработка: Использование Sidekiq для обработки асинхронных задач. Redis используется как очередь для хранения этих задач.
-
Пагинация: Реализация пагинации для списков ресурсов с использованием библиотеки Kaminari.
-
Тестирование с RSpec и Shoulda Matchers: Использование RSpec для написания юнит-тестов, интеграционных и функциональных тестов.
-
Покрытие тестами с помощью SimpleCov: Интеграция с библиотекой SimpleCov для анализа покрытия кода.
-
Мягкое удаление с Discard: Реализация мягкого удаления с использованием библиотеки Discard.
-
Bullet для обнаружения запросов N+1: Библиотека Bullet используется для обнаружения и предотвращения проблем с производительностью, таких как запросы N+1.
-
Анонимизация данных: Применение методов анонимизации для защиты конфиденциальных данных, соответствие требованиям законодательства о защите персональных данных, таким как LGPD.
-
RESTful API: Разработка RESTful API, следуя принципам архитектуры программного обеспечения для обеспечения эффективной связи между бэкендом и фронтендом.
-
Swagger: Автоматическая документация API с использованием библиотеки Rswag (на основе Swagger).
-
Docker: Возможность контейнеризации с использованием Docker для упрощения разработки, тестирования и развертывания.
-
Обработка изображений: Использование библиотеки ImageProcessing для обработки изображений, такой как изменение размера и сжатие.
-
WebSockets и SSE: Реализация связи в реальном времени с использованием WebSockets.
-
Расчет расстояний: Использование библиотеки Geocoder для реализации расчета расстояний между клиентом и коммерческим предприятием.
-
Потоки: Использование потоков для повышения параллелизма и производительности приложения при выполнении параллельных операций.
-
Управление сессиями и аутентификация: Реализация аутентификации пользователей с использованием Devise и аутентификации через JWT.
-
Управление CORS: Использование библиотеки rack-cors для управления разрешениями CORS.
-
Автоматы состояний с помощью State Machines: Использование библиотеки state_machines-activerecord для реализации автоматов состояний в моделях ActiveRecord.
-
Faraday для работы с внешними API: Интеграция с внешними сервисами с использованием библиотеки Faraday.
-
Автоматизация задач и DevOps: Структура DevOps поддерживается такими инструментами, как Sidekiq и Docker.
🛠️ С Docker
- Убедитесь, что на вашем компьютере установлены Docker и Docker Compose.
- Docker
- Docker Compose
-
Клонируйте связанные репозитории:
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
-
Скачайте файл
docker-compose.yml
: -
В корне проекта выполните следующую команду:
docker-compose up --build
-
Нажмите "RUN PENDING MIGRATES" в приложении бэкенда.
-
Войдите в контейнер бэкенда и выполните сиды:
docker exec -it backendContainerName /bin/sh rails db:seed
-
Настройте переменные окружения: Теперь все разделы переведены на русский язык, и ссылки настроены в соответствии с вашим запросом. Если вам нужно что-то еще, дайте знать!
JWT_SECRET_KEY=xxxxxxxxxxxxxxxxxxxxx
-
Перезапустите контейнеры, чтобы переменные загрузились.
🛠️ Без Docker
-
Убедитесь, что Redis и Sidekiq настроены и работают на вашем локальном компьютере.
-
Установите зависимости для R:
install.packages("FactoMineR") install.packages("ggplot2") install.packages("reshape2")
bundle install
Создайте базу данных и выполните миграции:
rails db:create
rails db:migrate
rails server
bundle exec rspec
redis-server
bundle exec sidekiq
📝 Другие проекты
- 📏 Приложение Precision на React - Интерфейс для регистрации измерений газа и воды
- 🤖 API Node - API для измерения и регистрации потребления