WIMS - веб-система для управления складом: учёт товаров, контроль остатков и продаж.
- Учёт товаров (добавление, редактирование, удаление)
- Продажи с проверкой остатка
- Пользователи и роли (admin / user)
- Админ-панель (управление пользователями)
- Логи действий (admin log)
- Пересрт и инвентаризация
- Статистика и контроль остатков
- Go (net/http)
- SQLite (modernc.org/sqlite)
- HTML templates (
html/template) - Bootstrap (frontend)
WIMS/
├── main.go
├── database/ # инициализация БД, миграции
├── models/ # бизнес-логика и SQL
├── handlers/ # HTTP-обработчики
├── templates/ # HTML-шаблоны
└── static/ # статика
git clone https://github.com/CYANID3/DIPLOM-NEW.git
cd wims
go mod tidy
go run main.goОткрыть: http://localhost:8080
При первом запуске создаётся пользователь:
login: admin password: admin
- Нельзя продать больше, чем есть
- Автоматический пересчёт остатков
- Простая админ-панель
Проект построен по MVC-подобному принципу:
- main.go - инициализация приложения, роутинг
- database/ - подключение к БД, миграции
- models/ - работа с данными и SQL-запросы
- handlers/ - обработка HTTP-запросов (бизнес-логика)
- templates/ - HTML-шаблоны (view)
- static/ - CSS/JS
- HTTP-запрос приходит в
handler - Handler вызывает
models - Models работают с БД
- Handler передаёт данные в
template - Возвращается HTML-ответ
GET /login- страница входаPOST /login- авторизацияGET /logout- выход
GET /products- список товаровGET /product/add- форма добавленияPOST /product/add- создать товарGET /product/edit?id={id}- форма редактированияPOST /product/edit- обновить товарPOST /product/delete- удалить товар
GET /sales- список продажPOST /sales/create- оформить продажу
GET /admin/users- список пользователейGET /admin/users/add- форма созданияPOST /admin/users/add- создать пользователя
GET /- дашбордGET /profile- профиль пользователя
Используется middleware:
RequireAuth- доступ только для авторизованныхRequireRole("admin")- доступ только для администратора
Применяется на уровне роутов.
- id
- name
- barcode
- price
- quantity
- id
- username
- password
- role
- id
- product_id
- quantity
- total
- created_at
- Продажа невозможна, если
quantity < requested - При продаже:
- уменьшается остаток
- создаётся запись в
sales
- Удаление/изменение проверяется на корректность
- HTTP-запросы логируются
- Действия администратора фиксируются (admin log)
Текущая архитектура позволяет:
- легко добавить REST API
- заменить SQLite на PostgreSQL
- вынести frontend (например, React)
- добавить кэш или очередь