Перейти к содержанию
Стратегия Систем · Операционный трекер
Меню

§ 05 · Технологии

Из чего собран
продукт

Раскрытие соответствует пункту 2 приказа Минцифры № 511 («информация об используемых языках программирования и инструментах разработки»). Состав указан точно — расхождение с реальным кодом нарушило бы требование о достоверности.

§ 05.1

Языки
программирования

Язык Где используется
Python 3.13 Backend · бизнес-логика, API, фоновые задачи
TypeScript 5.x Frontend и API-клиент, генерируемый из OpenAPI
JavaScript (ESM) Сборка, конфиги, минимальные ручные скрипты
SQL PostgreSQL · миграции, FTS-запросы, views
Bash / PowerShell Скрипты бэкапа, инфраструктуры, dev-tooling

§ 05.2

Инструменты разработки
и OSS-компоненты

Каждый компонент проверен на совместимость лицензии с коммерческим использованием. Полный список и точные версии — в pyproject.toml и package.json репозитория.

Слой 01

Backend

  • FastAPI 0.115+ MIT
  • Uvicorn BSD-3-Clause
  • Pydantic v2 MIT
  • SQLAlchemy 2.0 async MIT
  • Alembic MIT
  • PyJWT[crypto] MIT
  • Procrastinate · очередь в Postgres MIT
  • slowapi · rate limiting MIT
  • purgatory + tenacity · circuit breaker MIT
  • structlog Apache-2.0
  • aiosmtplib + Jinja2 · email MIT
  • aiogram 3 · Telegram MIT

Слой 02

Frontend

  • React 19 MIT
  • Vite MIT
  • shadcn/ui + Tailwind CSS 4 MIT
  • @dnd-kit · drag-and-drop MIT
  • TanStack Query MIT
  • Zustand · UI-стейт MIT
  • FullCalendar.io MIT
  • Recharts MIT

Слой 03

Хранилища и инфраструктура

  • PostgreSQL 16 PostgreSQL License
  • Redis 7 BSD-3-Clause до 7.4 / RSALv2 далее
  • nginx BSD-2-Clause
  • Docker / Docker Compose Apache-2.0
  • Yandex Cloud / Selectel · хостинг коммерческая услуга
  • Bugsink · self-hosted Sentry-совместимый Funded OSS / MIT
  • Uptime Kuma · мониторинг MIT

Слой 04

Качество кода

  • ruff · lint + format MIT
  • mypy --strict MIT
  • pytest + pytest-asyncio MIT
  • pytest-alembic · round-trip миграций MIT
  • hypothesis · property-based тесты MPL-2.0
  • testcontainers[postgres] MIT
  • schemathesis · OpenAPI fuzz MIT
  • Playwright · E2E Apache-2.0

§ 05.3

Архитектура

Модульный монолит на FastAPI: один процесс с двенадцатью изолированными модулями. Рядом — отдельный процесс Procrastinate для фоновых задач.

Илл. 2 · схема развёртывания
React SPA  (TypeScript-клиент авто-генерируется из openapi.json)
                            │ HTTPS
                            ▼
FastAPI · api/modules/
  ┌──────────────┬──────────────┬───────────────────────┐
  │ auth         │ spaces       │ notifications         │
  │ users        │ cards        │ search                │
  │ ...          │ ...          │ billing · checklists  │
  └─┬────────────┴──────┬───────┴─────────┬─────────────┘
    ▼                   ▼                 ▼
 PostgreSQL 16        Redis 7           Файлы на диске
 5 schemas:           кэш + сессии     /data/uploads
 auth · app ·         + LISTEN/NOTIFY  (nginx X-Accel)
 billing ·
 notifications ·
 audit
    ▲                   ▲
    │                   │
  Procrastinate worker (отдельный процесс)
  generate_recurring · send_email · send_telegram
  daily_digest · daily_backup · check_schedules

§ 05.4

Безопасность

  1. 01

    Аутентификация

    JWT RS256 (PyJWT) с короткими access-токенами 15 – 30 минут и refresh с rotation. Скомпрометированный refresh обнаруживается reuse-detection'ом и приводит к мгновенному отзыву всей семьи токенов через denylist в Redis.

  2. 02

    Изоляция в БД

    Пять Postgres schemas (auth / app / billing / notifications / audit), у каждой свой DB-пользователь с минимальными правами. SQL-инъекция в основном API не дотягивается до таблиц с паролями или платёжными данными.

  3. 03

    Idempotency-Key middleware

    Каждый POST/PUT/PATCH/DELETE принимает Idempotency-Key. Финансовые операции — через UNIQUE-таблицу в Postgres, остальные — через Redis SETNX. Защита от двойных кликов, retry мобильника и повторных webhook'ов.

  4. 04

    Circuit breaker · внешние сервисы

    Telegram Bot API и SMTP обёрнуты в purgatory. 5 ошибок подряд → 60 секунд OPEN-состояния: мгновенный отказ без таймаутов и без DDoS-ретраев в упавший внешний сервис.

  5. 05

    Rate limiting

    slowapi · 10 req/sec на write-эндпоинты, 5 попыток / 15 минут на /auth/login (brute-force защита), отдельный лимит на приёмники webhook.

  6. 06

    RFC 9457 Problem Details

    Все ошибки — типизированная иерархия DomainException с полем code (snake_case), фронтенд кодит на коды, не на строки. Без утечки трейсов и SQL-имён клиенту.

  7. 07

    Audit log

    Все изменения в схеме audit — append-only. Кто, что и когда сделал, хранится годами. На Enterprise — экспорт по запросу.

  8. 08

    Резервное копирование

    pg_basebackup + WAL-G для PITR, ежесуточный архив файлов рядом. RPO ≤ 1 ч, RTO ≤ 4 ч. Скрипт восстановления тестируется ежемесячно на staging.

§ 05.5

Соответствие
требованиям

  • 152-ФЗ

    Размещение данных только в РФ (Yandex Cloud / Selectel). Уведомление в Роскомнадзор подано. Договор-оферта содержит согласие на обработку.

  • Реестр российского ПО

    Программа разработана российской компанией с долей участия 100 %, использует только open-source компоненты с подходящими лицензиями. Подача — параллельно с выходом из закрытой беты.

  • Аккредитация Минцифры

    ОКВЭДы 62.01 / 62.02 / 63.11, штатные ИТ-специалисты, доля профильной выручки > 30 %. Подача — после получения реестровой записи.

  • Приказ № 511 от 02.06.2025

    Сайт раскрывает реквизиты, ОКВЭДы, описание продукта с ценами, технологии разработки, исключительные права, данные реестра — все требования закрыты.