Files
shop-pip/README.md
T

87 lines
2.6 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.
# Pitopn — магазин цифровых товаров
#
# Стек: FastAPI (Python) + PostgreSQL 17 + Docker Compose
# Деплой: Dokploy (Compose)
## Быстрый старт локально
```bash
cp .env.example .env
docker compose up --build -d
```
Откройте http://localhost:8000
Проверка здоровья: http://localhost:8000/health
## Переменные окружения
Скопируйте `.env.example` в `.env` и задайте сильные пароли:
| Переменная | Описание |
|---|---|
| `APP_NAME` | Название магазина |
| `SECRET_KEY` | Секрет приложения |
| `POSTGRES_USER` | Пользователь БД |
| `POSTGRES_PASSWORD` | Пароль БД |
| `POSTGRES_DB` | Имя БД |
| `APP_PORT` | Внешний порт (по умолчанию 8000) |
## Деплой в Dokploy
1. Создайте проект **Compose** / **Docker Compose**.
2. Подключите этот репозиторий (или загрузите файлы).
3. Укажите `docker-compose.yml` как compose-файл.
4. В Environment добавьте переменные из `.env.example` (особенно `POSTGRES_PASSWORD` и `SECRET_KEY`).
5. В Domains привяжите домен к сервису `web` на порт **8000**.
6. Deploy.
База `db` не публикуется наружу — только внутри сети Compose. Данные PostgreSQL хранятся в volume `postgres_data`.
## Админка
URL: `/admin`
Логин и пароль задаются в `.env`:
```env
ADMIN_USERNAME=admin
ADMIN_PASSWORD=change-me-strong-admin-password
```
В админке: дашборд, товары, загрузка ключей, заказы.
## Магазин
- Каталог и карточка товара
- Корзина (сессия)
- Оформление с демо-оплатой и мгновенной выдачей кодов
- Поиск заказа: `/lookup`
## Структура
```
app/
main.py # FastAPI + сессии
models.py # Product, ProductKey, Order
routers/shop.py # витрина, корзина, заказы
routers/admin.py # админка
templates/ # Jinja2
static/ # CSS/JS
Dockerfile
docker-compose.yml
```
## Локальная разработка без Docker (опционально)
Нужен PostgreSQL 17 и Python 3.12+:
```bash
python -m venv .venv
# Windows:
.venv\Scripts\activate
pip install -r requirements.txt
# в .env укажите POSTGRES_HOST=localhost
uvicorn app.main:app --reload --port 8000
```