NEOMAIND

Сервис для приема и обработки заявок от клиентов на ремонт и дизайн квартир , а также планирование и заказ изделий для них. Сервис состоит из 2х компонентов - API и суперадминка.

Start app

docker-compose up

Roadmap

  • Разработать архитектуру БД (20)
    • Создать таблицы (4)
    • Определить связи между сущностями (4)
    • Создать столбцы (12)
  • Суперадминка (8)
    • Подготовить демонстрацию для суперадминки
      • Развернуть ActiveAdmin (2)
      • Развернуть FlaskAdmin (5)
    • Создать модели (4-8)
      • Настроить бехейверы на операции CRUD (8)
      • Настроить связи между моделями (4)
      • Создать стандартные страницы с CRUD на каждую модель (8)
    • Создать меню (2)
  • API
    • Выбрать технологии для реализации API (2)
    • Создать swagger файл (8-16)
      • Сгенерировать на основе файла CRUD операции для моделей (2)
    • Сделать регистрацию по емейлу паролю (3)
    • Сделать авторизацию по емейлу паролю (2)
    • Сделать восстановление по емейлу (8)
    • Добавить к методам API роли пользователей (8)

Описание

База данных

База данных структурирована таким образом, что бы задействовать как можно меньше таблиц. Для этого используются полиморфные связи, на некоторых таблицах, которые могут быстро расти. Причиной такого решения является то, что можно партиционировать большие таблицы или перемещать их на другие ноды БД, что бы снизить нагрузку. Так же можно на отдельные ноды таблиц использовать репликацию, для анализа данных и выполнения сложных запросов, которые сильно потребляют ресурсы сервера. Таким образом можно не беспокоиться о масштабировании БД и отдельных таблиц.

Что такое полиморфная связь?

Например у нас есть сущности:

  • Изображения
  • Документы
  • 3D бандлы

Все сущности являются файлами с разным разрешением, но принадлежат разным моделям. Таким образом, вместо создания таблиц для связки сущностей, для которых могут быть применимы:

  • Товары
    • good_images
  • Портфолио
    • portfolio_images
  • Услуги
    • service_documents
  • Проекты
    • project_images
    • project_documents
  • Согласования
    • harmonization_images
    • harmonization_documents
    • harmonization_bundles

используются не 8 таблиц, а 1, по признаку поля на указание нужной сущности. Например:

  • files(parent_type="Portfolio", parent_id="111", type="image")
  • files(parent_type="Good", parent_id="222", type="image")
  • files(parent_type="Service", parent_id="333", type="document")

Полиморфные связи используются для таблиц:

  • goods - Товары
  • files - Файлы

Суперадминка

Технологии

API

Технологии

Demo