4.2 KiB
4.2 KiB
Сведения для разработчиков (AGENTS.md)
Проект HypnoSVG — микросайт на Django для генерации анимированных SVG-халфтонов.
Стек технологий
- Backend: Django 6.0.8+, Python 3.14+
- Frontend: HTMX (интерактивность), Alpine.js (клиентская логика), Tailwind CSS 4 (CDN в dev, v3 в prod — в процессе перехода).
- Графика: Pillow (обработка), в планах scikit-learn (k-means) и numpy.
- Инфраструктура: Poetry (зависимости), Whitenoise (статика в prod), Gunicorn.
Архитектура и структура
- Корневые папки:
hypn0/: Исходный код Django (проект и основное приложениеhypn0_site).public/: Публичная статика и медиа-файлы (разделено для dev/prod).database/: Файлы БД SQLite (вынесены из корня приложения).frontend-assembly/: Исходники для сборки фронтенд-библиотек.scripts/: Скрипты автоматизации сборки фронтенда.
- Django настройки:
ADMIN_URL: Настраивается через.env, по умолчанию скрыт.context_processors.py: ПредоставляетIS_DEBUGиALLOW_TRACKING(GDPR-friendly cookie consent).urls.py: В режимеDEBUGавтоматически пробрасывает файлы из корняpublic(favicon, robots.txt и др.).
- Кастомные стили:
hypn0/templates/css/tailwind-custom.css— основной файл стилей (директивы Tailwind 4). Подключается инлайново черезincludeв_base.html(dev) и импортируется вinput.css(prod).
Сборка фронтенда
Фронтенд-зависимости не лежат в репозитории как готовые бандлы. Для их обновления используйте скрипты из корня:
bash scripts/build-tailwind.sh(Внимание: скрипт требует обновления до v4 для полной совместимости сtailwind-custom.css).bash scripts/build-htmx.shbash scripts/build-alpine.shСкрипты используютnpm ciво временных папках внутриfrontend-assembly/и копируют результат вpublic/static/.
Ядро генерации (Plan)
Основная логика переносится из CLI-прототипа в hypn0_site/services/halftone.py.
- Вход:
PIL.Image. - Выход: Строка SVG с инлайновыми CSS-анимациями.
- Основные параметры:
cols(плотность сетки),max_radius, цветовые схемы.
Важные нюансы
- Static & Media: В
settings.pyпути настроены так, чтобыpublicбыла общей точкой входа для Nginx. - Database: Используется WAL-режим для SQLite (настраивается в
settings.pyчерез сигналconnection_created). - Templates: Базовый шаблон
_base.htmlсодержит логику подключения HTMX/Alpine и модалку согласия на трекинг.
Стиль кода
- Python: PEP8, Black, isort. Отступы 4 пробела, max line length 180-200.
- HTML: Django templates, Tailwind CSS классы в BEM. Отступы 2 пробела, max line length 250.
- Комментарии в коде на русском, переменные и функции на английском.
- Избегать emojis в коде, комментариях и инструкциях. Сленг и токсичные выражения допускаются.
- В интерфейсе и для пользователей текст в стиле "Гипножаба контролирует ваши действия" (игра слов, юмор, мемы).