Files
shop-go/README.md
T

136 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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