Anomaly Detected
Веб-платформа для визуализации, публикации отчётов и анализа паранормальных явлений (наблюдения НЛО и места с привидениями) в США, с реальными данными из NUFORC, Haunted Places и переписи населения США. Сочетает аналитические дашборды с модулем совместной работы, где пользователи могут добавлять и проверять собственные отчёты.
Моя роль в команде
Я присоединилась к проекту с назначенной ролью — база данных и деплой, но в итоге взяла на себя гораздо больше: проектирование и интеграцию модели данных, логику бэкенда, полный визуальный редизайн разделов «Отчёты» и «Сообщество», генерацию PDF-отчётов и техническую документацию проекта. В команде из 4 человек нагрузка распределялась не всегда поровну — не раз кто-то из участников не проявлял должной вовлечённости и не соблюдал сроки, что усложняло координацию — и этот проект научил меня не меньше именно этому (координироваться, брать инициативу, когда что-то стопорится), чем технической части.
Чему я научилась
- Работа с реальными датасетами: очистка, нормализация форматов (кодировка, координаты, даты) и анализ в Tableau
- Django на глубоком уровне: ORM, миграции, кастомные management-команды и админ-панель
- Supabase как продакшен-база данных на PostgreSQL и подключение к ней через переменные окружения
- Настоящий деплой на Render: build-команды, переменные окружения и типичные сложности вывода проекта в продакшен
Технические решения
- Миграция с локального MySQL на PostgreSQL в Supabase для продакшена
- dj-database-url для чтения подключения из переменной окружения без хардкода учётных данных
- Генерация PDF с помощью ReportLab + matplotlib для отдельных отчётов по каждому графику
- Разделение датасетов на идемпотентные команды импорта (можно запускать несколько раз без дублирования данных)
Мой личный комментарийПомимо технической стороны (Django, Supabase, деплои, которые засыпали каждые пятнадцать минут, и графики, которые приходилось собирать почти вручную), я поняла, что значит поддерживать командный софтверный проект: распределять роли, координировать сдачи, документировать код так, чтобы его понял кто-то другой, и доводить рабочий результат до конца, даже когда путь был не самым аккуратным.