влад 12c983c0fc Шхуна не тонет: security, infra и доки на русском.
Безопасность довёл до ума — Cursor-генерацию переписал руками.
IDOR закрыл, CSRF задушил, refresh rotation теперь как надо.
HSTS на staging, ENABLE_DOCS=false, install.env recovery протестил.

Backend:
- jwt_denylist + auth_epoch: мгновенный revoke access JWT (logout/block/reset)
- auth/admin/users: bump epoch, logout с Bearer, forgot_password skip для blocked
- install_secrets: путь всегда apps/api/data/secrets/ (bootstrap из корня не ломает Docker)
- seed: SEED_DEMO_USERS=false на prod/staging
- тесты: jwt revoke, integration, coverage gate 90%

Frontend:
- logout шлёт Bearer, обработка TOKEN_REVOKED
- guards TypeScript fix
- E2E: blocked user → 401 сразу после block

Infra:
- staging/prod compose, TLS nginx, deploy-скрипты
- k6 §17.2, backup/health/smoke scripts

Docs:
- docs/ на русском: project, security, deploy, release (старые md слили)
- README короткий + план ТЗ + стандартные логины dev

Код готов к плаванию. Капитан может идти писать фронт.
2026-07-15 00:06:13 +03:00

Compton Platform

Если вы открыли этот файл — поздравляем: перед вами monorepo с React, FastAPI и амбициями выйти в production. Амбиции живут в docs/release.md, код — в apps/, секреты — не в git.

Платформа Compton Organic Tech: лендинг, auth, профиль, CMS, админка в стиле WESP/zootech. ТЗ: docs/TZ.md.

Быстрый старт

python apps/api/scripts/bootstrap_install.py          # один раз, до первого up
docker compose --profile docker-web up -d --build
curl http://localhost:8000/api/v1/health              # Windows: curl.exe
URL Что там
http://localhost:5173 Лендинг / + SPA (/login, /admin, …)
http://localhost:8000/api/v1/health API жив?
http://localhost:8000/api/v1/docs OpenAPI (только dev)

Логин для пробы: admin@compton.example / Admin1234/admin.

Bootstrap до первого docker compose up. Иначе Postgres скажет «password authentication failed» — см. docs/deploy.md § восстановление.

Не делайте: Docker web и pnpm --filter web dev одновременно — оба хотят порт 5173.

Демо-аккаунты (dev)

Подробнее: docs/deploy.md § стандартные логины.

Email Пароль Env Роль Superuser
admin@compton.example Admin1234 ADMIN_INITIAL_PASSWORD admin да — Security, Diagnostics, secrets
ops@compton.example OpsAdmin1234 DEMO_OPS_PASSWORD admin нет — Users, Content, Activity
user@compton.example User1234 DEMO_USER_PASSWORD user

CMS после seed: /pages/about, /pages/privacy, /pages/terms.

В production/staging demo-users выключены (SEED_DEMO_USERS=false).

Тесты

pnpm --filter web test:ci                              # frontend, cov ≥ 85%
cd apps/api && python -m pytest --cov=app --cov-fail-under=90
pnpm --filter web e2e                                  # Playwright, API :8001

Документация

Вся нормальная дока — в docs/, на русском, без водянистого README на 500 строк:

Файл О чём
docs/README.md Оглавление
docs/project.md Структура, архитектура, API, маршруты
docs/security.md Auth, JWT revoke, секреты, чеклист prod
docs/deploy.md Dev/staging/prod, бэкапы, troubleshooting
docs/release.md QA gates, k6, ZAP, go-live
docs/TZ.md Техническое задание

Работа с Git

Репозиторий: https://git.groupkomton.ru/Matvey/site.git
Ветка: main (одна ветка, без сюрпризов)

git pull origin main          # перед работой — всегда
git status && git diff        # перед коммитом — тоже всегда
git add .
git commit -m "Сделал то-то на русском"
git push origin main

Коммиты — только на русском. Плохо: fix, WIP, asdf.

Не коммитить: .env, install.env, node_modules/, логи, кэши.

Не делать git push --force на main без согласования.

Команда Зачем
git log --oneline -10 что было
git checkout -- файл откатить файл
git stash / git stash pop спрятать / вернуть правки

План по ТЗ (§16)

Фаза Задачи Статус
0 — Подготовка Monorepo, Docker Compose, UI kit, CI/coverage gates, Playwright smoke Выполнено
1 — MVP Landing, Auth+SMTP, Profile, Content, Admin, staging + полный регресс В процессе
2 — v1.0 Celery/notifications, Catalog+Orders, Analytics, k6 + monitoring Когда начнём?
3 — Scale Read replica PG, Celery workers, CDN, horizontal API Когда начнём?

Фаза 1 — детализация

# Задача Модули Статус
1.1 Landing (перенос заглушки) landing Выполнено
1.2 Auth + SMTP auth Выполнено
1.2b Security baseline core, auth В процессе
1.3 Profile CRUD + avatar profile Выполнено
1.4 Content pages content Выполнено
1.5 Admin panel admin Выполнено
1.6 Staging deploy + полный регресс (§15.7) В процессе

Критерии приёмки MVP — §17.1 ТЗ (k6 50 CCU, Lighthouse ≥85, E2E 10/10, coverage gates).


Дальше — docs/. Там схемы, таблицы и вещи, которые не помещаются в README без страданий.

S
Description
No description provided
Readme
28 MiB
Languages
Python 49.9%
HTML 21.5%
JavaScript 19.3%
CSS 7.3%
TypeScript 1.6%
Other 0.4%