Добавлен README с описанием проекта

This commit is contained in:
Erman 2026-09-09 04:17:00 +05:00
parent 2f67aae70c
commit f09fa1ecc9

121
README.md Normal file
View File

@ -0,0 +1,121 @@
# DEMO Shop
Простой учебный проект: магазин с товарами, складами и заказами.
Сайт + серверная часть (API) в одном проекте.
Рабочий сайт: https://demo.triron.ru
## Что умеет
- Вход и регистрация. Новому человеку дается роль Client.
- 6 разделов: Товары, Категории, Склады, Остатки, Пользователи, Заказы.
- Везде можно добавлять, изменять и удалять записи.
- В заказе можно смотреть товары и добавлять новые.
- Внизу экрана всплывают короткие сообщения (что сохранилось, где ошибка).
## Что внутри
```
DEMO/
Controllers/ серверные адреса (API), по одному файлу на таблицу
AuthController.cs вход и регистрация
ProductsController.cs товары
CategoriesController.cs категории
WarehousesController.cs склады
StocksController.cs остатки
UsersController.cs пользователи
OrdersController.cs заказы
OrderItemsController.cs товары внутри заказов
RolesController.cs роли
Data/
AppDbContext.cs список всех таблиц базы
AppDbContextFactory.cs подключение для миграций
Models/ классы таблиц: Product, Category, Warehouse,
Stock, User, Role, Order, OrderItem
Migrations/ история создания базы (одна общая миграция)
wwwroot/ сайт, который видит человек
index.html разметка: вход, меню, таблицы, окно формы
style.css простые стили, светлый дизайн
script.js весь код сайта с понятными комментариями
Program.cs главный файл: запускает все и создает базу
appsettings.json настройки, там строка подключения к базе
```
База данных: SQLite, файл `DemoDB.db`. Создается сам при первом запуске,
ничего ставить не надо. При старте сами добавляются роли Admin и Client.
## Как запустить у себя
Нужен только .NET 10 SDK.
```
cd DEMO
dotnet restore
dotnet run
```
Открыть в браузере: `http://localhost:5000`
(точный адрес покажет само окно запуска).
База создастся сама. Дальше нажмите "Зарегистрироваться" на сайте.
## Адреса API
Все адреса начинаются одинаково, дальше свое для каждой таблицы.
| Что сделать | Как вызвать | Что отдать |
|---|---|---|
| Войти | POST /api/auth/login | логин и пароль |
| Зарегистрироваться | POST /api/auth/register | логин и пароль |
| Список товаров | GET /api/products | ничего |
| Добавить товар | POST /api/products | название, цена, categoryId |
| Изменить товар | PUT /api/products/5 | то же самое (5 это номер) |
| Удалить товар | DELETE /api/products/5 | ничего |
Точно так же работают остальные таблицы, только адрес другой:
- /api/categories (поле name)
- /api/warehouses (поля name, address)
- /api/stocks (поля productId, warehouseId, quantity)
- /api/users (поля login, password, roleId)
- /api/orders (поля userId, date, status)
- /api/orderitems (поля orderId, productId, quantity, price)
- /api/roles (поле name)
Статусы заказа: New, Processing, Completed, Cancelled.
## Как это стоит на сервере
- Сервер: Ubuntu 24.04, стоит .NET 10 SDK.
- Код лежит в /opt/demo (копия этого репозитория).
- Собранный проект лежит в /opt/demo/publish.
- Служба называется demo, смотрит на 127.0.0.1:5001.
- Снаружи сайт отдает nginx через https://demo.triron.ru.
- Сертификат от Let's Encrypt, продлевается сам.
Проверить что служба жива:
```
systemctl status demo.service
curl http://127.0.0.1:5001/api/roles
```
## Как обновить сайт на сервере
```
cd /opt/demo
git pull origin master
cd DEMO
dotnet publish -c Release -o /opt/demo/publish
systemctl restart demo.service
```
База при этом не теряется, миграции применяются сами.
## Если что-то не работает
1. Служба не запустилась: `journalctl -u demo.service -n 50` покажет ошибку.
2. Сайт не открывается снаружи: `nginx -t` проверит настройки,
`systemctl reload nginx` перезагрузит их.
3. Ошибка про базу: удалите файл DemoDB.db рядом с запуском
и перезапустите, база создастся заново (все данные пропадут).