Добавлен README с описанием проекта
This commit is contained in:
parent
2f67aae70c
commit
f09fa1ecc9
121
README.md
Normal file
121
README.md
Normal 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 рядом с запуском
|
||||
и перезапустите, база создастся заново (все данные пропадут).
|
||||
Loading…
Reference in New Issue
Block a user