# 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