136 lines
4.2 KiB
Markdown
136 lines
4.2 KiB
Markdown
# Shop — Интернет-магазин
|
||
|
||
Полнофункциональный интернет-магазин на **Go**, **PostgreSQL 17**, **Docker Compose** и **Caddy**.
|
||
|
||
**Текущая версия:** `v1.0`
|
||
|
||
## Возможности
|
||
|
||
| Модуль | Описание |
|
||
|--------|----------|
|
||
| Каталог | Главная, категории, карточки товаров со скидками |
|
||
| Товар | Страница `/product/{id}` с описанием, фото и скриншотами |
|
||
| Категории | `/category/{slug}` — управление в админке |
|
||
| Корзина | Добавление, изменение количества, расчёт со скидкой |
|
||
| Заказы | Оформление гостем или зарегистрированным пользователем |
|
||
| Личный кабинет | Профиль, история заказов со статус-таймлайном |
|
||
| Админка | Товары, категории, заказы, скриншоты, редактор Quill, статистика |
|
||
|
||
## Стек
|
||
|
||
| Компонент | Технология |
|
||
|-----------|------------|
|
||
| Backend | Go 1.23, `net/http`, `pgx/v5` |
|
||
| База данных | PostgreSQL 17 |
|
||
| Прокси / SSL | Caddy 2 |
|
||
| ОС | Ubuntu 22.04 / 24.04 |
|
||
|
||
## Быстрый старт (Ubuntu)
|
||
|
||
```bash
|
||
git clone https://git.evilfox.cc/test2/shop-go.git /opt/shop
|
||
cd /opt/shop
|
||
sudo bash setup.sh
|
||
```
|
||
|
||
Или обновление существующего:
|
||
|
||
```bash
|
||
cd /opt/shop
|
||
bash scripts/redeploy.sh
|
||
```
|
||
|
||
Проверка версии:
|
||
|
||
```bash
|
||
curl http://localhost/health
|
||
# {"status":"ok","version":"v1.0"}
|
||
```
|
||
|
||
## Маршруты магазина
|
||
|
||
| Путь | Описание |
|
||
|------|----------|
|
||
| `/` | Главная |
|
||
| `/product/{id}` | Страница товара |
|
||
| `/category/{slug}` | Категория |
|
||
| `/cart` | Корзина |
|
||
| `/checkout` | Оформление заказа |
|
||
| `/register`, `/login` | Регистрация и вход |
|
||
| `/account` | Личный кабинет |
|
||
| `/admin/` | Админ-панель |
|
||
| `/admin/orders` | Управление заказами и статусами |
|
||
|
||
## Скидки
|
||
|
||
В админке при редактировании товара укажите **Цена** и **Цена со скидкой**.
|
||
На сайте отображается старая цена зачёркнутой и бейдж `-N%`.
|
||
|
||
## Категории
|
||
|
||
Админка → **Категории** → добавьте категорию → при создании товара выберите её в списке.
|
||
|
||
## Статусы заказов
|
||
|
||
| Код | Отображение |
|
||
|-----|-------------|
|
||
| `pending` | В ожидании |
|
||
| `unpaid` | Не оплачено |
|
||
| `paid` | Оплачено |
|
||
| `processing` | В обработке |
|
||
| `shipped` | Отправлен |
|
||
| `delivered` | Доставлен |
|
||
| `cancelled` | Отменён |
|
||
| `refunded` | Возврат |
|
||
|
||
В личном кабинете — цветной бейдж и таймлайн прогресса.
|
||
В админке → **Заказы** — смена статуса из выпадающего списка.
|
||
|
||
## Админ
|
||
|
||
```env
|
||
ADMIN_EMAIL=admin@shop.local
|
||
ADMIN_PASSWORD=change_me
|
||
SESSION_SECRET=your_random_secret_key_here
|
||
```
|
||
|
||
Вход: `/admin/login`
|
||
|
||
## SSL
|
||
|
||
```bash
|
||
./scripts/enable-ssl.sh shop.example.com admin@example.com
|
||
```
|
||
|
||
## Обновление
|
||
|
||
```bash
|
||
bash scripts/redeploy.sh
|
||
```
|
||
|
||
Скрипт делает `git reset --hard`, пересборку Docker без кэша и проверку `/health`.
|
||
|
||
## Структура
|
||
|
||
```
|
||
shop/
|
||
├── cmd/shop/ # Точка входа
|
||
├── internal/
|
||
│ ├── handlers/ # HTTP, шаблоны, статика
|
||
│ ├── repository/ # БД
|
||
│ ├── orderstatus/ # Статусы заказов
|
||
│ └── ...
|
||
├── migrations/
|
||
├── scripts/
|
||
│ ├── deploy.sh
|
||
│ ├── redeploy.sh # Полное обновление
|
||
│ └── update.sh
|
||
└── docker-compose.yml
|
||
```
|
||
|
||
## Требования
|
||
|
||
- Ubuntu 22.04 / 24.04
|
||
- 1 CPU, 1 GB RAM
|
||
- Порты 22, 80, 443
|