Бекенд для мобильного приложения
Цена договорная
Необходимо реализовать бекенд для мобильного приложения. Желательно на Django Rest Framework + Elasticsearch но рассматриваем и другой стек. Вся разработка в докере. GraphQL либо джсон, обязательно swagger , redoc либо аналоги.
USER
- id
- full name (firstname, lastnamr)
- email (varchar)
- phone (varchar)
CATEGORY:
- id
- title (varchar)
- parent_id (nullable, int)
PRODUCT
- id
- title (varchar)
- description (text)
- price (float)
- old_price (nullable) (float)
- size_id (nullable, int)
- color_id (nullable, int)
- original_url (varchar)
- brand_id (nullable, int)
- shopify_id (nullable, varchar)
CATEGORY_PRODUCT:
- id
- product_id
- category_id (продукт может быть нескольких категория одновременно)
FAVORITES:
- id
- user_id (int)
- product_id (int)
BRAND:
- id
- title (varchar)
COLOR:
- id
- title (varchar)
SIZE:
- id
- title (varchar)
IMAGE:
- id (int)
- product_id (varchar)
- position (nullable)
- url (varchar)
EDITOR_PICKS:
- id
- product_id
CAROUSEL:
- id
- product_id
- title (varchar)
=== Открытые эндпойинты: ===
/user/create - обязательное поле только full name, может быть пустым, возвращает токен для миддлвары
middleware auth - по токену из апи выше
=== Закрытые эндпоинты: ===
- /user/update (обновляем свои данные через POST)
- /products?page=%d&price_min=1&price_max=20000&category_ids=1,2,3,4,5&size_ids=1,2,3,4,5&color_ids=6,7,8,9&search_string=%s&sort=%s
**** Все поля в этом эндпойинте опциональны. Сортировка по цене, и по дате добавления. Поиск выполняется по title, description, brand. перформанс важен, поиск должен делаться среди 10-20к продуктов.
=> output (X products of page, поля: id, title, price, oldprice, size id, title, color id, title, images urls)
- /favorites - клон products только выбираются продукты из избранного данного пользователя (автентификация через миддлвару)
- /favorite/add?product_id=%d добавляет в избранное для текущего юзера
- /favorite/delete?product_id=%d удаляет из избранного для текущего юзера
=== АДМИНКА ===
В админке, стандартно, надо мочь CRUD для всех сущностей, сортировка, поиск.
Админ должен мочь добавить/убрать товар в Editor-Picks, разные карусели, и в разные категории (товар может быть более чем в одной категории).
У товара может быть несколько цветов, размеров и брендов.
О проекте - проект собирает товары через scrapy и добавляет, обновляет их в базу. База разрастается до 10к и более, поэтому в идеале надо сделать минимальный фаззинг на псевдосущностях что оно не ляжет на большом кол-ве товаров.
USER
- id
- full name (firstname, lastnamr)
- email (varchar)
- phone (varchar)
CATEGORY:
- id
- title (varchar)
- parent_id (nullable, int)
PRODUCT
- id
- title (varchar)
- description (text)
- price (float)
- old_price (nullable) (float)
- size_id (nullable, int)
- color_id (nullable, int)
- original_url (varchar)
- brand_id (nullable, int)
- shopify_id (nullable, varchar)
CATEGORY_PRODUCT:
- id
- product_id
- category_id (продукт может быть нескольких категория одновременно)
FAVORITES:
- id
- user_id (int)
- product_id (int)
BRAND:
- id
- title (varchar)
COLOR:
- id
- title (varchar)
SIZE:
- id
- title (varchar)
IMAGE:
- id (int)
- product_id (varchar)
- position (nullable)
- url (varchar)
EDITOR_PICKS:
- id
- product_id
CAROUSEL:
- id
- product_id
- title (varchar)
=== Открытые эндпойинты: ===
/user/create - обязательное поле только full name, может быть пустым, возвращает токен для миддлвары
middleware auth - по токену из апи выше
=== Закрытые эндпоинты: ===
- /user/update (обновляем свои данные через POST)
- /products?page=%d&price_min=1&price_max=20000&category_ids=1,2,3,4,5&size_ids=1,2,3,4,5&color_ids=6,7,8,9&search_string=%s&sort=%s
**** Все поля в этом эндпойинте опциональны. Сортировка по цене, и по дате добавления. Поиск выполняется по title, description, brand. перформанс важен, поиск должен делаться среди 10-20к продуктов.
=> output (X products of page, поля: id, title, price, oldprice, size id, title, color id, title, images urls)
- /favorites - клон products только выбираются продукты из избранного данного пользователя (автентификация через миддлвару)
- /favorite/add?product_id=%d добавляет в избранное для текущего юзера
- /favorite/delete?product_id=%d удаляет из избранного для текущего юзера
=== АДМИНКА ===
В админке, стандартно, надо мочь CRUD для всех сущностей, сортировка, поиск.
Админ должен мочь добавить/убрать товар в Editor-Picks, разные карусели, и в разные категории (товар может быть более чем в одной категории).
У товара может быть несколько цветов, размеров и брендов.
О проекте - проект собирает товары через scrapy и добавляет, обновляет их в базу. База разрастается до 10к и более, поэтому в идеале надо сделать минимальный фаззинг на псевдосущностях что оно не ляжет на большом кол-ве товаров.
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.