ПрацюєУ розробціОстанній коміт вер. 2026
Campus Navigate 3D
Інтерактивна 3D-мапа університетського кампусу з екскурсіями.
Кейс · Завдання
Кампус складно уявити за пласкою мапою. Завдання — вебзастосунок, де будь-хто може облетіти справжній кампус у 3D: пройти екскурсію ключовими місцями з описом поруч або літати вільно, — а кожна екскурсія і сама модель редагуються з адмін-панелі.
Що я зробив
- Фронтенд на React і Three.js: анімовані маршрути камери, вільна камера в межах моделі та панелі локацій.
- Оптимізовано під велику 3D-модель: glTF зі стисненням Draco та екран завантаження зі справжнім прогресом.
- Django REST API з адмін-панеллю для локацій, маршрутів польоту та 3D-моделей.
- Моя роль
- Fullstack-розробник: фронтенд і бекенд
- Команда
- 3D-модель кампусу — Максим Сидоренко, 3D-моделер.
- Стек
- React
- Three.js
- Vite
- Django
- DRF
- PostgreSQL
- Docker
Як усе поєднано
Намальовано за публічними репозиторіями. Контур показує, хто створив кожну частину: авторство — теж частина факту.
- 3D-мапаReact · Three.js — Зробив я
- Модель кампусу.glb · Draco — Зробив учасник команди
- REST APIDjango · DRF — Зробив я
- Адмін-панельDjango admin — Зробив я
- База данихPostgreSQL — Зробив я
Те саме, крок за кроком
- 3D-мапа (React · Three.js) передає REST API (Django · DRF), в обидва бокилокації · активна модель
- Модель кампусу (.glb · Draco) до Адмін-панель (Django admin)завантаження версії
- REST API (Django · DRF) до База даних (PostgreSQL)маршрути польоту
- Адмін-панель (Django admin) до База даних (PostgreSQL)точки та моделі
Ключові рішення
Рішення, що сформували систему, і чому їх ухвалено саме так.
- D1
Екскурсії — це дані, а не код
Кожна локація зберігає, як поводиться камера: статичний кадр, політ через упорядковані точки або панорама навколо — зі швидкістю, напрямком погляду й нахилом. Нова зупинка екскурсії — це форма в Django admin, а не реліз.
- D2
Кожен політ починається там, де ви зараз
Перед початком екскурсії камера за дві секунди плавно переходить із поточного положення й напрямку до першої точки. Перемикання локацій посеред польоту ніколи не стрибає, тож людина не втрачає орієнтацію.
- D3
Модель — це контент із версіями
Модель кампусу — завантажений .glb із версією; коли одну позначають активною, решта вимикаються. Фронтенд запитує активну модель в API, тож краща модель виходить без змін у фронтенді.
- D4
Важка модель, чесний прогрес
Модель передається як glTF зі стисненням Draco і розпаковується в браузері; екран завантаження показує справжній відсоток замість спінера. Вільний політ обмежено межами моделі, тож ніхто не загубиться в порожнечі.
Результат
- Працює на campus.zebaro.dev: екскурсії згруповано в розділи «Головна», «Важливі місця» та «Кабінети», плюс вільний політ.
- Локації, точки польоту й версії моделі редагуються в Django admin; мапа підхоплює їх під час наступного завантаження.
- Фронтенд і бекенд працюють у Docker, кожен у власному публічному репозиторії.