Onlys: личный кабинет инвестора, фронтенд и бэкенд

Клиент:

Onlys, токены проектов с AI-инфлюенсерами

Сегмент:

Web3, AI-инфлюенсеры

Результат:

Кабинет и API запущены

Направление:

Разработка веб-сервисов

Стек:

React, Node.js, Fastify, Docker

Задача

Onlys выпускает токены проектов с AI-инфлюенсерами: держатели получают долю выручки проекта. Лендинг onlys.fun уже работал, а личного кабинета у инвесторов не было.

Нужен был кабинет, где инвестор входит без пароля, выбирает проект, покупает токены и видит портфель и выплаты. Дизайн должен был продолжать лендинг, а данные идти из собственного бэкенда.

Что сделали

  • Спроектировали фронтенд по Feature-Sliced Design: страницы, виджеты, действия пользователя и сущности лежат отдельными слоями, новый раздел добавляется без правки старых.
  • Сверстали кабинет на React 18 и Vite: каталог проектов с фильтром, раздел пресейла, карточка проекта с галереей и прогрессом сбора, раздел выплат с графиком по месяцам и выгрузкой в CSV.
  • Перенесли в кабинет стиль лендинга: шрифты, салатовый акцент, анимации на Framer Motion. Графики нарисовали на SVG, без тяжёлых библиотек.
  • Перевели фотографии в WebP: вес картинок кабинета снизился с 9,3 до 0,3 МБ.
  • Написали бэкенд на Node.js и Fastify: API каталога, портфеля и истории выплат на api.onlys.fun.
  • Сделали вход через Google: кабинет не спрашивает пароль и хранит только email и публичное имя, сессия живёт в защищённой cookie.
  • Подключили покупку токенов: кабинет выставляет счёт и переводит инвестора на страницу оплаты.
  • Настроили выкладку: Docker и Traefik на сервере, GitHub Actions выкатывает обновления после каждого пуша в основную ветку.

Итог

Кабинет работает на app.onlys.fun, API на api.onlys.fun. Инвестор входит через Google, выбирает проект, оплачивает токены и видит портфель и выплаты в одном месте.

Фронтенд и бэкенд разделены: новые проекты и данные появляются через API без пересборки интерфейса, а обновления выходят сами после пуша в репозиторий.

Neurounit

Запустить рост с AI

Телефон
+7 995 119-79-99