Цель проекта — разработать систему для расширения аудитории для Брендов, Стилистов и удобного поиска готового образа внешнего вида (далее Система). Бренд одежды может загружать свою одежду, которая будет использоваться в Генераторе образов. Стилист может создать образ из одежды, которую загрузил Бренд. Пользователь может бесплатно воспользоваться генератором образов и оформить платную подписку на Стилистов.
Система состоит из следующих основных функциональных блоков:
- Регистрация, аутентификация и авторизация
- Генератор образов
- Функционал для Бренда
- Функционал для Стилиста
- Функционал для пользователя
- Функционал для админа
Система предусматривает три типа пользователей системы: админ, бренд, стилист и пользователь. Бренд загружает свою одежду, Стилист создаёт образы из этой одежды, пользователь может воспользоваться бесплатным генератором образа или оформить платную подписку на Стилиста.
Бренд:
- email — обязательное поле
- Пароль — обязательное поле
- Имя – обязательное поле
- Никнейм – обязательное поле
Стилист:
- email — обязательное поле
- Пароль — обязательное поле
- Имя – обязательное поле
- Никнейм – обязательное поле
Пользователь:
- email — обязательное поле
- Пароль — обязательное поле
- Имя – обязательное поле
- Никнейм – обязательное поле
После отправки формы регистрации на email приходит письмо с ссылкой для активации аккаунта. Аутентификация по Json Web Token. При входе вводится email и пароль.
К генератору есть доступ у всех типов пользователей.
Чтобы сгенерировать образ нужно:
- Выбрать из каких частей одежды будет состоять образ.
- Выбрать характеристик: стиль, сезон, размер, цвет, Бренд, Стилист.
- Нажать кнопку «Сгенерировать»
После нажатия кнопки «Сгенерировать» сервер ищет в БД все вещи, которые совпадают с пользовательскими характеристикам и с частями одежды образа, передаёт Генератору. Из полученного массива вещей создаются все возможные комбинации образов и показываются пользователю.
Например, пользователь выбрал:
- Части одежды: кофта, штаны, обувь
- Стиль: спортивный
- Сезон: лето
- Размер: L
- Цвет: темно-синий
- Бренд: Indiwd
- Стилист: Ярослав Стахира
В ответ от БД получаем двумерный массив array[n][m]
, где n
– часть одежды, а m
– вещь:
[[футболка1, футболка2], //верх
[шорты1, шорты2], //штаны
[кроссовки1]] //обувь
Генератор создаёт все возможные комбинации образов из этих вещей.
Получаем образы:
[[футболка1, шорты1, кроссовки1], //образ 1
[футболка1, шорты2, кроссовки1], //образ 2
[футболка2, шорты1, кроссовки1], //образ 3
[футболка2, шорты2, кроссовки1]] //образ 4
Пример объекта одежды:
{
piece: "Штаны",
name: "Шорты",
style: "Спортивный",
season: "Лето",
size: [XS, S, M, L],
color: "темно-синий",
brand: "Indiwd",
stylist: "Ярослав Стахира"
}
После аутентификации открывается функционал:
- Настройки аккаунта
- Добавление и редактирование карточек одежды
- Аналитика
В этом разделе у бренда есть возможность редактирования данных своего аккаунта:
- Профиль
- Мои соцсети
- Подписки
Можно изменить:
- Фотография 225x280, размером не более 10 Mb, PNG/JPG
- Имя
- Платежная информация. Можно привязать или отвязать банковскую карту
- Пароль
Есть возможность ввести ссылки на свои социальные сети:
- VK
- Telegram
- Youtube
- TikTok
Здесь показываются оформленные подписки. Есть возможность отменить ненужную подписку.
Бренд может загружать свою одежду в БД со своей страницы.
Каждой карточке задаётся:
- Фотография
- Часть одежды (верх, низ, обувь, кисти, голова)
- Название
- Стиль
- Сезон
- Размерная сетка
- Цвет
- Бренд
- Стилист
После аутентификации открывается функционал:
- Редактирование страницы
- Создание и редактирование образов одежды
- Создание уровней подписок
- Аналитика
В этом разделе у стилиста есть возможность редактирования данных своего аккаунта:
- Профиль
- Мои соцсети
- Подписки
Можно изменить:
- Фотография 225x280, размером не более 10 Mb, PNG/JPG
- Имя
- Платежная информация. Можно привязать или отвязать банковскую карту
- Пароль
Есть возможность ввести ссылки на свои социальные сети:
- VK
- Telegram
- Youtube
- TikTok
Здесь показываются оформленные подписки. Есть возможность отменить ненужную подписку.
Стилист может создавать образы у себя на странице.
Состав:
- Фото профиля
- Имя
- Соцсети
- Кнопка «Создать образ»: открывает страницу создания образа
- Уровни подписки: созданные уровни подписки. Отображается количество подписчиков с каждым уровнем подписки.
- Кнопка «Добавить подписку»: можно создать уровень (тир/tier) подписки с индивидуальной ценой руб/мес.
- Поля ввода: название подписки, описание, стоимость.
- Нужно ввести название образа и текст тизера
- Загрузить обложку тизера
- Выбрать, кто может смотреть образ
После нажатия кнопки «Опубликовать» образ появляется на странице Стилиста. Те, кто не имеет доступа, видят только тизер образа.
Здесь можно выбрать части образа, характеристики одежды. Для каждой части образа нужно выбрать вещь из общего набора, подходящего по характеристикам.
- Абсолютное и относительное количество подписчиков. Возможно, в виде диаграммы pie-chart.
- Сколько денег поступило на счёт
- Вывод средств на банковскую карту
После аутентификации открывается функционал:
- Редактирование профиля
- Оформление подписки на Стилиста
В этом разделе у бренда есть возможность редактирования данных своего аккаунта:
- Профиль
- Мои соцсети
- Подписки
Можно изменить:
- Фотография 225x280, размером не более 10 Mb, PNG/JPG
- Имя
- Платежная информация. Можно привязать или отвязать банковскую карту
- Пароль
Есть возможность ввести ссылки на свои социальные сети:
- VK
- Telegram
- Youtube
- TikTok
Здесь показываются оформленные подписки. Есть возможность отменить ненужную подписку.
Пользователь может оформить подписку на Стилиста. На странице Стилиста справа показаны виды подписок на него. При нажатии на одну из них появляется окно оплаты:
- Пользователь видит название и описание подписки
- Может выбрать подходящий срок подписки
- Стоимость: на меняется в зависимости от срока
- Кнопка «Купить подписку»
После аутентификации открывается функционал:
- Блокировка и удаление аккаунтов всех пользователей, образов Стилистов, одежды Брендов
Back-end:
- Node JS
- Express
- Mongo/PostgreSQL
Front-end:
- React
- Typesript
Интернет-эквайринг:
- Тинькофф
- CloudPayments
Apple Pay,Google Pay, Sber Pay- Рекуррентные платежи
Хранение изображений:
- S3 хранилище
Рекуррентные платежи должны списываться через 30 дней после предыдущей оплаты. Если снять платёж не удалось — в течение ближайших 5 дней должна осуществляться ежедневная попытка списать сумму. В течение этих 5 дней доступ сохраняется, а подписчик получает после каждой неуспешной попытки письмо на email. После успешного снятия суммы за подписку подписчик также получает письмо на email.
После 5 дней неуспешных попыток списать сумму подписка останавливается и подписчик теряет доступ к платным образам Стилиста.
Минимализм, лаконичность, акцент на контент Стилистов.
- Модерация образов
- Сохранить образ из генератора в библиотеку/корзину/любимые
- Верификация Бренда. Можно вместо регистрации для Брендов сделать форму на получение данных для входа в учетную запись. Бренд заполнит форму своими данными, нам придёт заявка, что Бренд1 прислал свои данные. Мы сверим их с настоящими. Если совпадает – шлём email с данными для входа. Если не совпадает – шлём email, что данные не прошли проверку.