Об этом проекте

Pagoda — это полнофункциональный стартовый набор для веб-разработки и админ-панель, написанные на Go. Это не фреймворк, а репозиторий-шаблон: вы клонируете его, а не используете `go get`, а затем адаптируете код под своё приложение. Заявленная цель — предоставить большую часть функциональности, ожидаемой от полноценного веб-фреймворка, сохраняя весь код под вашим контролем, без строгих интерфейсов и без привязки к конкретным решениям. Основа и стек - Бэкенд: Echo (HTTP-фреймворк), Ent (ORM с генерацией кода), Gomponents (HTML-компоненты, написанные на Go). - Фронтенд: серверный рендеринг HTML с HTMX для AJAX/частичных обновлений, Alpine.js для клиентского поведения и DaisyUI поверх Tailwind CSS для стилизации. Проект делает акцент на создании современных интерфейсов без написания JavaScript или CSS и даже без прямого написания HTML. - Хранение: SQLite — база данных по умолчанию, также используемая для постоянных очередей фоновых задач; кэширование выполняется в памяти. В README отмечено, что Postgres и Redis ранее были настройками по умолчанию, и указана неподдерживаемая ветка для такой конфигурации. Включённая функциональность - Контейнер сервисов с внедрением зависимостей для аутентификации, кэша, конфигурации, базы данных, файлов, почты, ORM, задач, валидатора и веб-сервисов; он может быть инициализирован и корректно остановлен одним вызовом и передаётся обработчикам маршрутов. - Конфигурация через YAML с переопределением переменными окружения с помощью viper, а также переключение окружений (в частности, тестового окружения). - Автоматические миграции базы данных через Ent и отдельная тестовая база данных (по умолчанию SQLite в памяти). - Типы сущностей ORM для User и PasswordToken с помощниками в Makefile для создания и генерации новых типов сущностей. Удаление Ent также удаляет динамическую админ-панель. - Сессии через Gorilla sessions, хранящиеся в зашифрованных cookie; в README предупреждают о необходимости сменить ключ шифрования по умолчанию для рабочих окружений. - Аутентификация: вход/выход, токены сброса пароля (хешированные с помощью bcrypt, с настраиваемым сроком действия), регистрация, флаг администратора у пользователей, middleware для требования аутентификации, отсутствия аутентификации или доступа администратора, а также подтверждение email. - Админ-панель с генерацией кода, контролем доступа и планом развития; скриншоты показывают представления списка/редактирования сущностей и мониторинг очереди задач. - Маршрутизация с пользовательским middleware, обработчиками, обработкой ошибок, перенаправлениями и помощниками для тестирования (HTTP-сервер, помощники запросов/ответов, Goquery). - Слой UI: компоненты на основе Gomponents, макеты, страницы, формы с обработкой отправки, встроенной валидацией и защитой от CSRF, модели, иконки, кэширование узлов и flash-сообщения. - Дополнительные сервисы: пагинатор, кэш (установка/получение/сброс данных и тегов), задачи с очередями, диспетчер и мониторинг, cron, загрузка файлов и статические/публичные файлы с обходом кэша и заголовками управления кэшем, электронная почта, HTTPS и логирование. Начало работы Установите Go, клонируйте репозиторий, выполните `make install` для опциональных инструментов (генератор Ent, Air для live reloading, Tailwind CLI), создайте учётную запись администратора с помощью `make admin email=...` (консоль выведет сгенерированный пароль), затем выполните `make run`; приложение доступно по адресу localhost:8000 по умолчанию, данные находятся в каталоге `dbs`. `make watch` включает live reloading с автоматической перекомпиляцией CSS. Лицензия и статус Проект распространяется под лицензией MIT, упомянут в Awesome Go и имеет бейджи CI-тестов и Go Report Card. README подробный и в значительной степени представляет собой экскурсию по кодовой базе, что делает его подходящим для разработчиков, которым нужна готовая отправная точка со всем необходимым, но с сохранением возможности заменить любой компонент.