Задача

RYVIA 3D задумывался не как демонстрационная страница, а как рабочий сервис для заказов 3D-печати. Пользователь должен зарегистрироваться, подтвердить email, загрузить фотографии и 3D-модели, получить расчёт, общаться с продавцом и отслеживать статус заказа.

Архитектура

Проект получил Node.js backend, PostgreSQL и приватное файловое хранилище. Интерфейс работает как единое приложение с личным кабинетом клиента и административной частью.

  • Render — запуск backend;
  • Neon PostgreSQL — база данных;
  • Cloudflare R2 — приватные файлы заказов;
  • ClamAV — проверка загружаемых файлов;
  • Resend — письма подтверждения и восстановления доступа.

Безопасность и работа с файлами

Файлы заказов нельзя было просто положить в публичную папку. Для них используется приватное хранилище, серверная проверка типа файла и антивирусное сканирование. Для административного доступа добавлена MFA.

Главная идея: production-проект должен корректно обрабатывать не только «счастливый путь», но и ошибки — недоступное хранилище, неверный файл, неотправленное письмо или незавершённую загрузку.

Финальный этап

После функциональных тестов проект получил адаптацию под телефоны, четыре ключевых инфраструктурных проверки, домен с HTTPS, email-доставку и SEO-настройки. Отдельно были протестированы регистрация, заказ с файлами, личный кабинет и административный сценарий.

Что этот кейс показывает

RYVIA 3D стал для KAMERTON примером проекта, где фронтенд — только одна часть работы. Настоящий веб-сервис требует базы данных, хранения файлов, безопасности, интеграций, деплоя и тестирования.

Нужен похожий веб-сервис?

Обсудим задачу, необходимую функциональность и подход к реализации.

Подробнее о веб-сервисах →