first commit

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
shop
2026-05-16 20:52:15 +03:00
parent 3419d90e61
commit 323e0a2926
67 changed files with 1723 additions and 3077 deletions
+57 -106
View File
@@ -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` или установщик).