Skip to content

Количество строк кода и технологический стек

Программный комплекс «NARMAK»


Дата подсчёта: 20 марта 2026 года
Инструмент: cloc 2.08
Фиксация исходников (коммиты Git):

  • Backend narmak_v2: 934ef92e73e85120d4f27c34f949d9206f385813
  • Frontend narmak-nx-angular-main: bd1550101995a5bf034b77149c10d7a376bf38e6

Методология

Подсчёт выполнялся по файлам из индекса Git (cloc --vcs=git): учитываются только отслеживаемые версией репозитории файлы; каталоги вроде node_modules, .venv, dist в Git не входят и в анализ не попадают.

Метрика «строки кода»: в таблицах раздела 1 указано значение колонки code утилиты cloc — строки, классифицированные как исполняемый/содержательный код языка (без пустых строк и без строк, отнесённых cloc к комментариям). Это сопоставимо с распространённой практикой SLOC/NCLOC и отличается от «физических» строк файла (wc -l), где учитываются пустые строки и комментарии.

Политика включения и исключения (для сопоставимости с «собственным кодом» ПК):

ПолитикаРешение
Файлы CSV в backend (справочные и прочие данные, не логика)Исключены из метрик раздела 1 (--exclude-ext=csv)
Файлы JSON во frontend (в т.ч. крупные датасеты в assets, конфигурация Nx)Исключены из метрик раздела 1 (--exclude-ext=json)
Каталоги libs/sdk, libs/sdk-counterparty (клиент API, формируется из Swagger/OpenAPI)Учтены отдельной строкой «Сгенерированный API-клиент»
Автотесты (*.spec.ts)Включены в основные цифры; объём несущественен при данной гранулярности; при необходимости отдельный подсчёт: cloc ... --not-match-f='\\.spec\\.ts$'
Прочие языки в репозиториях (Markdown, vendored JS/CSS в assets, и т.д.)Не входят в сводный столбец раздела 1.4; кратко указаны для backend в п. 1.5

Воспроизведение подсчёта (выполнять из корня соответствующего репозитория):

bash
# Backend — каталоги приложения; CSV не учитываются
cloc --vcs=git --exclude-ext=csv app narmak microservices config

# Frontend — приложения (apps), без JSON
cloc --vcs=git --exclude-ext=json apps

# Frontend — библиотеки без JSON и без сгенерированных SDK
cloc --vcs=git --exclude-ext=json --exclude-dir=sdk,sdk-counterparty libs

# Сгенерированный API-клиент
cloc --vcs=git --exclude-ext=json libs/sdk libs/sdk-counterparty

При наличии локальных нечитаемых путей (Git LFS, права) cloc может выводить Unable to read ... — перед фиксацией отчёта для ОИС рекомендуется восстановить файлы (git lfs pull и т.п.) и повторить запуск.


1. Собственный код правообладателя

1.1. Серверная часть (Backend)

Охват: каталоги app/, narmak/, microservices/, config/. Файлы .csv исключены (см. методологию).

Язык / тип файловКол-во файловСтрок кода (cloc, code)
Python (.py)1 618140 650
Итого по разделу 1.11 618140 650

1.2. Веб-приложения (Frontend — директория apps/)

Файлы .json исключены.

Язык / тип файловКол-во файловСтрок кода (cloc, code)
TypeScript (.ts)853170 030
HTML-шаблоны (.html)565109 939
Стили SCSS (.scss)31659 606
Итого Frontend Apps1 734339 575

1.3. Библиотеки (Frontend — директория libs/)

Без каталогов sdk/ и sdk-counterparty и без файлов .json.

Язык / тип файловКол-во файловСтрок кода (cloc, code)
TypeScript (.ts)898108 973
HTML-шаблоны (.html)5315 290
Стили SCSS (.scss)848 810
Итого Frontend Libs (ручной код)1 035133 073

1.4. Сгенерированный API-клиент (Frontend)

Формируется из контракта REST API; исходники в libs/sdk, libs/sdk-counterparty. Файлы .json исключены.

КомпонентКол-во файловСтрок кода (cloc, code)
TypeScript (.ts)43491 489
Итого API-клиент43491 489

1.5. Прочие артефакты в backend-репозитории (справочно)

Те же каталоги, что в п. 1.1, без CSV. Дополнительно к Python в индексе Git присутствуют, в частности: Markdown (документация), JSON, HTML, подключаемый JS/CSS, YAML, Dockerfile и др. — их объём не суммируется с показателями раздела 1.1–1.4, чтобы не смешивать прикладной код ПК с документацией и статикой админки/прототипов.

1.6. Сводная таблица

КомпонентЯзыкиФайловСтрок кода (cloc, code)
Backend (серверная часть)Python1 618140 650
Frontend AppsTypeScript, HTML, SCSS1 734339 575
Frontend Libs (ручной код)TypeScript, HTML, SCSS1 035133 073
Frontend API-клиент (ген.)TypeScript43491 489
ИТОГО по разделу 14 821704 787

2. Используемые языки программирования

ЯзыкВерсияПрименение
Python3.10+Серверная бизнес-логика, API, обработка данных, интеграции
TypeScript5.xКлиентская логика, компоненты Angular
HTML5Шаблоны компонентов Angular
SCSSСтили компонентов и приложений
SQLPostgreSQL 14+Хранение и запросы данных (через Django ORM)

3. Open Source компоненты — Backend

БиблиотекаВерсияЛицензияНазначение
Django5.1.4BSD-3-ClauseВеб-фреймворк
djangorestframework3.15.2BSD-2-ClauseREST API
celery5.2.3BSDАсинхронные задачи
redis5.1.0MITКэш, брокер
psycopg2-binary2.9.2LGPLДрайвер PostgreSQL
channels4.0.0BSDWebSocket
daphneBSDASGI-сервер
pandas2.2.3BSDОбработка данных
numpy2.1.1BSDМатематика
openpyxl3.0.10MITExcel
weasyprint66.0BSDPDF
docxtpl0.16.7LGPLWord-шаблоны
django-cors-headers4.4.0MITCORS
drf-yasg1.21.4BSDSwagger
pytelegrambotapi4.7.1GPL-3.0Telegram Bot
dadata21.10.1MITDaData API
confluent-kafkaApache 2.0Kafka
django-camundaMITCamunda BPM

Большинство перечисленных зависимостей распространяется под лицензиями MIT, BSD, Apache 2.0, LGPL и может использоваться в коммерческих продуктах при соблюдении текста соответствующей лицензии. Зависимость pytelegrambotapi (GPL-3.0) накладывает требования copyleft: при совмещении с проприетарным кодом и распространении результата необходимо учитывать условия GPL (в том числе раскрытие исходного кода производной работы в предусмотренных лицензией случаях). Окончательную юридическую оценку сценария использования даёт правообладатель совместно с юристом.


4. Open Source компоненты — Frontend

БиблиотекаВерсияЛицензияНазначение
@angular/core18.0.0MITФреймворк
rxjs7.5.0Apache 2.0Реактивность
@datorama/akita8.0.1MITState Management
primeng17.18.15MITUI-компоненты
@taiga-ui/core3.95.2Apache 2.0UI-компоненты
bootstrap5.2.3MITCSS-фреймворк
primeflex3.3.1MITCSS утилиты
@ngx-formly/core6.3.1MITДинамические формы
chart.js4.5.0MITГрафики
apexcharts3.36.3MITГрафики
d37.9.0ISCВизуализация
jspdf2.5.1MITPDF
xlsx0.18.5Apache 2.0Excel
docx9.5.1MITWord
quill1.3.7BSDRich Text
tinymce8.0.1MITWYSIWYG
moment2.29.4MITДаты
date-fns4.1.0MITДаты
lodash4.17.21MITУтилиты
@zxing/browserApache 2.0QR-коды
tesseract.js5.1.0Apache 2.0OCR
bpmn-js5.5.1MITBPMN-диаграммы
nxMITМонорепозиторий

Перечисленные open source компоненты Frontend, как правило, допускают коммерческое использование при соблюдении условий соответствующих лицензий (MIT, Apache 2.0, BSD, ISC).


5. Покупные решения

РешениеТипУсловия
Camunda BPM (Community Edition)Open SourceApache 2.0, бесплатно
PostgreSQLOpen SourcePostgreSQL License, бесплатно
RedisOpen SourceBSD, бесплатно
Apache KafkaOpen SourceApache 2.0, бесплатно
TinyMCE (Self-hosted)Open Source / КоммерческийMIT для open source версии

Покупных (проприетарных) решений с платными лицензиями в составе ПК «NARMAK» не используется. Сторонние компоненты в основном являются open source; условия конкретной лицензии следует проверять перед включением в поставку (см. п. 3 в отношении GPL).


6. Инфраструктура и DevOps

КомпонентТехнологияЛицензия
КонтейнеризацияDockerApache 2.0
ОркестрацияDocker ComposeApache 2.0
Веб-серверNginxBSD-2-Clause
CI/CDGitHub Actions / GitLab CI
Мониторинг

См. также


Документ обновлен: март 2026 г.
Числовые показатели раздела 1 получены утилитой cloc по зафиксированным коммитам Git.