Switch to English?
Yes
Переключитись на українську?
Так
Переключиться на русскую?
Да
Przełączyć się na polską?
Tak
Платформа управления цифровым архивом и флотом яхт-клуба
О проекте: Разработка высокопроизводительной системы «Цифровой музей» для Киевского городского крейсерского яхт-клуба. Проект направлен на систематизацию исторического наследия, учет флота и экипажей, а также автоматизацию медиа-архива. Основной упор сделан на надежность хранения данных и скорость работы на мобильных устройствах.
Стек технологий:
Backend: Go (Golang) — разработка отказоустойчивого API и системы обработки медиа-контента.
Frontend: Angular 21 (Standalone Components, Signals, новый Control Flow) — создание быстрого и отзывчивого интерфейса.
Database: PostgreSQL (использование UUID v7 для обеспечения безопасности и естественной сортировки данных).
Storage: S3-совместимое хранилище (Cloudflare R2 в продакшене, SeaweedFS для локальной разработки).
DevOps: Автоматизированный CI/CD цикл, работа с Feature-ветками, Docker.
Технические задачи и реализованные решения:
Архитектура хранения «Zero Path»:
Проблема: Зависимость от локальной файловой системы и сложности с миграцией данных.
Решение: Полный отказ от хранения путей к файлам в БД. Реализована система, где в базе хранятся только UUID и расширения, а пути формируются динамически на стороне фронтенда через абстракцию S3-провайдера. Это позволило бесшовно переключаться между локальным SeaweedFS и облачным Cloudflare R2.
Оптимизация производительности мобильной версии (Performance):
Проблема: Низкие показатели LCP (3.8 сек) из-за загрузки оригинальных изображений.
Решение: Разработан медиа-пайплайн на Go, который при загрузке автоматически генерирует WebP-миниатюры (thumbs). Настроена ленивая загрузка (lazy loading) и принудительное отображение превью по умолчанию, что позволило вернуть показатели скорости в «зеленую зону» (90+ баллов Lighthouse).
Логическая изоляция данных (Gallery Isolation):
Проблема: Сложность управления тысячами медиа-файлов, относящихся к разным сущностям (яхтам, событиям, людям).
Решение: Внедрена структура папок на уровне S3 на основе UUID галерей. Это исключило хранение всех файлов в одном месте, упростило бэкапирование и удаление связанных данных.
Стабильность макета (CLS Optimization):
Проблема: «Прыгающий» интерфейс при подгрузке изображений на мобильных устройствах.
Решение: Использование строгого Atomic Design и резервирование пространства под медиа-контент через aspect-ratio в Angular-компонентах.
Уникальные фишки и возможности:
Автоматизированный Медиа-Процессинг: Система самостоятельно определяет тип контента (фото/видео), создает нужные превью и размещает их в соответствующих директориях S3 (originals/thumbs).
Связанный исторический архив: Глубокая интеграция данных между профилем яхты и её экипажем, позволяющая проследить историю судна через десятилетия.
Профессиональный Workflow: Разработка ведется по принципу Git Flow с автоматической доставкой кода на прод после слияния в основную ветку, что гарантирует стабильность работающего сервиса.
Результат:
Создана масштабируемая и независимая от инфраструктуры платформа. Благодаря переходу на S3-совместимую архитектуру и оптимизации фронтенда, проект демонстрирует высокую скорость отклика и готов к хранению больших массивов данных без потери производительности.
Детали работы
Бюджет 134 738 UAH
Добавлена 12 апреля
62 просмотра
Фрилансер
Игорь Белоусов
Украина Киев
Нет отзывов

Немного занят Немного занят
На сервисе 11 лет