Перейти к содержимому

Локальный setup

Требования

  • Linux или macOS (Windows через WSL2 — пока не тестировали).
  • git 2.30+
  • python 3.13 (через pyenv или uv python install 3.13)
  • node 22+ (через nvm или fnm)
  • pnpm 11+ (corepack enable && corepack prepare pnpm@11.1.2 --activate)
  • uv (curl -LsSf https://astral.sh/uv/install.sh | sh)
  • docker + docker compose v2 (для локальной PostgreSQL)
  • Доступ к репозиторию nikolai3690-code/razmakh (read).

Клонирование

Окно терминала
git clone git@github.com:nikolai3690-code/razmakh.git
cd razmakh

Установка зависимостей

  1. Python через uv (одна команда для всех workspace packages):

    Окно терминала
    uv sync --all-packages --all-groups

    Скачает Python 3.13, развернёт .venv/, установит razmakh-api + razmakh-core

    • dev/test deps. Если в России — может занять до 5 минут (PyPI медленный).
  2. Node через pnpm:

    Окно терминала
    pnpm install --frozen-lockfile

    Развернёт apps/web + apps/docs + packages/ui через pnpm-workspace.yaml.

  3. pre-commit hooks (lefthook, обязательно):

    Окно терминала
    pnpm dlx lefthook install

Локальный PostgreSQL

Окно терминала
cd services/docker-stack
cp .env.example .env # заполните POSTGRES_PASSWORD и др.
docker compose up -d postgres

PG будет на localhost:5432, база razmakh, пользователь postgres с паролем из .env.

Миграции

Окно терминала
cd apps/api
export 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

Откройте:

Тесты

Окно терминала
# Полный набор (Python + JS)
pnpm test
# Только Python
uv run pytest
# Только web (Vitest)
pnpm --filter @razmakh/web test
# E2E (Playwright, поднимает test DB через testcontainers)
pnpm --filter @razmakh/web test:e2e

Coverage и линт

Окно терминала
# Python: ruff + mypy
uv run ruff check . && uv run ruff format --check . && uv run mypy
# JS/TS: eslint + prettier + tsc
pnpm lint && pnpm typecheck
# Полный pre-commit (gitleaks + остальное)
lefthook run pre-commit --all-files

Что важно с первой минуты

  • Secrets — никогда не пишите в .env без gitignored проверки. Pre-commit hook gitleaks поймает, но лучше не доводить (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 проверит.

Дальше