Локальный setup
Требования
- Linux или macOS (Windows через WSL2 — пока не тестировали).
git2.30+python3.13 (черезpyenvилиuv python install 3.13)node22+ (черезnvmилиfnm)pnpm11+ (corepack enable && corepack prepare pnpm@11.1.2 --activate)uv(curl -LsSf https://astral.sh/uv/install.sh | sh)docker+docker composev2 (для локальной PostgreSQL)- Доступ к репозиторию
nikolai3690-code/razmakh(read).
Клонирование
git clone git@github.com:nikolai3690-code/razmakh.gitcd razmakhУстановка зависимостей
-
Python через uv (одна команда для всех workspace packages):
Окно терминала uv sync --all-packages --all-groupsСкачает Python 3.13, развернёт
.venv/, установитrazmakh-api+razmakh-core- dev/test deps. Если в России — может занять до 5 минут (PyPI медленный).
-
Node через pnpm:
Окно терминала pnpm install --frozen-lockfileРазвернёт
apps/web+apps/docs+packages/uiчерезpnpm-workspace.yaml. -
pre-commit hooks (lefthook, обязательно):
Окно терминала pnpm dlx lefthook install
Локальный PostgreSQL
cd services/docker-stackcp .env.example .env # заполните POSTGRES_PASSWORD и др.docker compose up -d postgresPG будет на localhost:5432, база razmakh, пользователь postgres с паролем из .env.
sudo apt install postgresql-18-pgvectorsudo -u postgres createdb razmakhsudo -u postgres psql razmakh -c 'CREATE EXTENSION vector; CREATE EXTENSION pgcrypto;'Миграции
cd apps/apiexport DATABASE_URL='postgresql+asyncpg://razmakh_admin:PASS@localhost:5432/razmakh'uv run alembic upgrade headЗапуск dev
В трёх отдельных терминалах:
# Терминал 1 — API (FastAPI на :8000)cd apps/api && uv run uvicorn razmakh_api.main:app --reload --port 8000
# Терминал 2 — Web (Next.js на :3000)cd apps/web && pnpm dev
# Терминал 3 — Docs (Astro Starlight на :4321)cd apps/docs && pnpm devОткройте:
- http://localhost:3000 — кабинет (web)
- http://localhost:3000/admin — admin panel (login через magic-link Infisical)
- http://localhost:8000/docs — FastAPI Swagger UI
- http://localhost:4321 — этот сайт документации
Тесты
# Полный набор (Python + JS)pnpm test
# Только Pythonuv run pytest
# Только web (Vitest)pnpm --filter @razmakh/web test
# E2E (Playwright, поднимает test DB через testcontainers)pnpm --filter @razmakh/web test:e2eCoverage и линт
# Python: ruff + mypyuv run ruff check . && uv run ruff format --check . && uv run mypy
# JS/TS: eslint + prettier + tscpnpm lint && pnpm typecheck
# Полный pre-commit (gitleaks + остальное)lefthook run pre-commit --all-filesЧто важно с первой минуты
- Secrets — никогда не пишите в
.envбезgitignoredпроверки. Pre-commit hookgitleaksпоймает, но лучше не доводить (P17 automated secrets). - RLS — все integration-тесты используют
organization_context()async ctx manager. Не работайте черезrazmakh_adminнапрямую в app-коде (P15). - No-doc-no-merge — если меняете API или формулу, обновите
соответствующий
.mdвdocs/илиapps/docs/. CI Stage 9b проверит.