@@ -1,118 +1,69 @@
|
||||
# ShopNova — интернет-магазин (Go)
|
||||
# Shop
|
||||
|
||||
**Версия:** `0.20` · [Релизы](https://git.evilfox.cc/test/shop3/releases)
|
||||
Интернет-магазин на **Node.js** с локальной базой **SQLite**.
|
||||
|
||||
Главная страница интернет-магазина на Go с PostgreSQL 17 (SSL), reverse proxy **Traefik** и Docker Compose.
|
||||
## Возможности
|
||||
|
||||
Репозиторий: https://git.evilfox.cc/test/shop3.git
|
||||
- Каталог товаров с категориями и поиском
|
||||
- Корзина и оформление заказа
|
||||
- Регистрация и вход пользователей
|
||||
- История заказов в личном кабинете
|
||||
|
||||
Клонировать конкретную версию:
|
||||
## Требования
|
||||
|
||||
- [Node.js](https://nodejs.org/) 18 или новее (вместе с npm)
|
||||
|
||||
## Установка и запуск
|
||||
|
||||
```bash
|
||||
git clone --branch v0.20 https://git.evilfox.cc/test/shop3.git
|
||||
npm install
|
||||
cp .env.example .env # Windows: copy .env.example .env
|
||||
npm run dev
|
||||
```
|
||||
|
||||
## Быстрая установка на сервере
|
||||
Сайт: [http://localhost:3000](http://localhost:3000)
|
||||
|
||||
Требования: **Git**, **Docker**, **Docker Compose** (плагин `docker compose`).
|
||||
При первом запуске создаётся база `data/shop.db` и загружаются демо-товары.
|
||||
|
||||
## Переменные окружения
|
||||
|
||||
| Переменная | Описание | По умолчанию |
|
||||
|-------------------|-----------------------------------|--------------|
|
||||
| `PORT` | Порт HTTP-сервера | `3000` |
|
||||
| `SESSION_SECRET` | Секрет для подписи сессий | dev-значение |
|
||||
|
||||
## Скрипты
|
||||
|
||||
| Команда | Описание |
|
||||
|----------------|-----------------------------|
|
||||
| `npm start` | Запуск сервера |
|
||||
| `npm run dev` | Запуск с автоперезагрузкой |
|
||||
| `npm run seed` | Заполнение каталога (если пуст) |
|
||||
|
||||
## База данных
|
||||
|
||||
Данные хранятся локально в каталоге `data/`:
|
||||
|
||||
- `shop.db` — товары, пользователи, заказы
|
||||
- `sessions.db` — сессии
|
||||
|
||||
Каталог `data/` не попадает в git (см. `.gitignore`).
|
||||
|
||||
## Структура проекта
|
||||
|
||||
```
|
||||
src/
|
||||
server.js — точка входа
|
||||
db.js — схема SQLite
|
||||
seed.js — демо-данные
|
||||
routes/ — маршруты
|
||||
views/ — шаблоны EJS
|
||||
public/css/ — стили
|
||||
```
|
||||
|
||||
## Git remote
|
||||
|
||||
```bash
|
||||
# 1. Клонировать
|
||||
git clone https://git.evilfox.cc/test/shop3.git
|
||||
cd shop3
|
||||
|
||||
# 2. Установщик (домен + база данных → .env и traefik/dynamic/shop.yml)
|
||||
chmod +x install.sh check.sh
|
||||
./install.sh
|
||||
|
||||
# 3. Запуск
|
||||
docker compose up --build -d
|
||||
|
||||
# 4. Проверка (после старта контейнеров)
|
||||
./check.sh --after-start
|
||||
git remote add origin https://git.evilfox.cc/admin/shop.git
|
||||
git push -u origin main
|
||||
```
|
||||
|
||||
Одной цепочкой (после клона введите ответы установщика):
|
||||
|
||||
```bash
|
||||
git clone https://git.evilfox.cc/test/shop3.git && cd shop3 && chmod +x install.sh check.sh && ./install.sh && docker compose up --build -d && ./check.sh --after-start
|
||||
```
|
||||
|
||||
С Go на сервере вместо `install.sh`:
|
||||
|
||||
```bash
|
||||
go run ./cmd/install
|
||||
go run ./cmd/check
|
||||
```
|
||||
|
||||
Без Go — установщик сам запустится в контейнере `golang:1.22-alpine`.
|
||||
|
||||
### Обновление на сервере
|
||||
|
||||
```bash
|
||||
cd shop3
|
||||
git pull
|
||||
docker compose up --build -d
|
||||
```
|
||||
|
||||
### Полезные команды
|
||||
|
||||
```bash
|
||||
docker compose ps # статус контейнеров
|
||||
docker compose logs -f traefik app # логи прокси и приложения
|
||||
curl -s http://localhost/health | jq
|
||||
curl -s http://localhost/version | jq
|
||||
```
|
||||
|
||||
Сайт: `http://localhost` или `https://ваш-домен` (если указали в установщике).
|
||||
|
||||
---
|
||||
|
||||
## Установка на Windows (локально)
|
||||
|
||||
```powershell
|
||||
git clone https://git.evilfox.cc/test/shop3.git
|
||||
cd shop3
|
||||
.\install.ps1
|
||||
.\check.ps1
|
||||
docker compose up --build -d
|
||||
```
|
||||
|
||||
## Проверка версий
|
||||
|
||||
Проверяет Go, Docker, Docker Compose и PostgreSQL (**ожидается 17.x**):
|
||||
|
||||
```bash
|
||||
./check.sh
|
||||
# или: go run ./cmd/check
|
||||
```
|
||||
|
||||
После запуска сервера:
|
||||
|
||||
- `GET /health` — статус и проверки
|
||||
- `GET /version` — версии приложения, Go и PostgreSQL
|
||||
|
||||
## Регистрация и личный кабинет
|
||||
|
||||
| URL | Описание |
|
||||
|-----|----------|
|
||||
| `/register` | Регистрация |
|
||||
| `/login` | Вход |
|
||||
| `/account` | Личный кабинет (только для авторизованных) |
|
||||
| `POST /logout` | Выход |
|
||||
|
||||
Сессии в cookie `shop_session`, пароли — bcrypt.
|
||||
|
||||
Если БД уже была создана до обновления, примените миграцию:
|
||||
|
||||
```bash
|
||||
docker compose exec -T postgres psql -U shop -d shopdb < postgres/init/02_users.sql
|
||||
```
|
||||
|
||||
## Локальная разработка
|
||||
|
||||
```bash
|
||||
go run ./cmd/server
|
||||
```
|
||||
|
||||
`DATABASE_URL` задаётся в `.env` (см. `.env.example` или установщик).
|
||||
|
||||
Reference in New Issue
Block a user