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 606 UAH
Додано 12 квітня
65 переглядів
Фрилансер
Игорь Белоусов
Україна Київ
Немає відгуків

Трохи зайнятий Трохи зайнятий
На сервісі 11 років