Перейти к содержанию

Go и htmx: приложение «Инвентарь»

Построим «Инвентарь» — один развивающийся учебный проект. Каждый урок добавляет конкретный результат к предыдущему, сохраняя предметные данные и имена объектов. Серия входит в подборку «Новые возможности веб-приложений: 100 уроков».

Последовательность уроков

№ Урок Что добавляем
1 Первый HTTP-сервер на Go Локальный сервер, маршруты и граница HTTP
2 Предметная модель инвентаря Артикул, остаток, место хранения и неизменяемый идентификатор
3 Серверные HTML-шаблоны Экранированная таблица и отдельная модель представления
4 Хранение инвентаря в SQLite Таблица items, ограничения и параметризованное чтение
5 Создание карточки через форму POST, разбор формы и перенаправление после записи
6 Ошибки формы и повторный ввод Проверка полей, сохранение введённых значений и статус 422
7 Фильтрация и страницы списка Поиск в URL, стабильный порядок и ограниченный размер страницы
8 Обновление списка через htmx Полная HTML-страница и фрагмент с одинаковыми данными
9 История URL и доступная навигация Push URL, восстановление полной страницы и состояния ошибок
10 Редактирование и версия карточки Условный UPDATE и конфликт двух открытых форм
11 Движения остатка и транзакция Атомарная корректировка количества вместе с журналом
12 Локальная сессия и защита формы Случайная серверная сессия, CSRF и завершение входа
13 Права на чтение и изменение Viewer и editor, решение на сервере и закрытые действия
14 Завершение сервера и сопровождение Таймауты, штатная остановка и рабочие границы стенда

Исходники и окружение

Скачать исходники «Инвентарь». Архив содержит 14 полных самостоятельных состояний lesson-01 … lesson-14. Каждую папку используйте отдельно; накладывать соседние состояния друг на друга не требуется. README каждого состояния объясняет файлы, команды самостоятельного прохождения и ограничения.

Версии курса: Go 1.27.2, htmx 2.0.11, modernc.org/sqlite 1.60.1. Сервер слушает только 127.0.0.1:4493. В архиве нет установленных зависимостей, пользовательских баз, сессий или секретов.

Требуется базовое знание Go и HTML. Первые три урока используют стандартную библиотеку, затем подключается SQLite, а с восьмого — htmx. Учебные роли выбираются локально без проверки личности; такой вход не предназначен для публичного корпоративного сервиса. Поиск SQLite не обещает полноценное Unicode-приведение регистра. Журнал движения не является полным аудитом всех изменений, потому что форма корректировки остатка остаётся отдельной операцией.

При подготовке программы, зависимости, базы, браузерные клиенты и проверки не запускались. Все результаты в уроках обозначены как ожидаемые по исходникам. Материалы опубликованы.