Репозиторий
в цифрах
Посчитано по основной ветке. Учитываются только непустые строки исходного кода, без lock-файлов, результатов сборки и вендорного кода.
проектов
языков программирования
коммитов
отслеживаемых файлов
строк кода
Тридцать проектов,
пять директорий
Каждая директория отвечает за что-то одно, а проект лежит в той, что описывает его суть.
flokzy
products/flokzy
- TypeScript
- Kotlin
sunflow
products/sunflow
- Go
- TypeScript
crypto-ide
products/crypto-ide
- TypeScript
lavender
products/lavender
- Rust
- TypeScript
kvbnews
products/kvbnews
- Go
- TypeScript
- Python
drukko
products/drukko
- TypeScript
noir-app
products/noir-app
- TypeScript
noirwallet
products/noirwallet
- TypeScript
pikajuoksu
products/pikajuoksu
- TypeScript
pikajuoksu-server
products/pikajuoksu-server
- TypeScript
levonne
products/levonne
- Go
- Dart
foldtools
products/foldtools
- Kotlin
- Swift
noir-bots
products/noir-bots
- Python
flokzyweb
products/flokzyweb
- TypeScript
etat
products/etat
- Java
- Python
bookdiscord
products/bookdiscord
- JavaScript
noirsystems-site
web/noirsystems-site
- TypeScript
noir-bzh
web/noir-bzh
- TypeScript
redstone-site
web/redstone-site
- TypeScript
xandra-css
libs/xandra-css
- CSS
- JavaScript
pikajuoksu-core
libs/pikajuoksu-core
- TypeScript
gitcom
tools/gitcom
- Python
gity
tools/gity
- JavaScript
migration
tools/migration
- Shell
- Python
gopolars
research/gopolars
- Go
+5
внутренних проектов, не показанных здесь
На чём
это написано
Строки кода по языкам во всём репозитории.
| Язык | Строки кода |
|---|---|
| 372 597 | |
| 75 395 | |
| 65 277 | |
| 44 834 | |
| 44 535 | |
| 24 050 | |
| 23 939 | |
| 21 831 | |
| 11 234 | |
| 17 952, C++, SQL, Dart, Swift |
В графенет рёбер
Nx видит тридцать проектов и ни одной зависимости между ними. Это измеренное состояние, и мы его сохраняем: ни один продукт не импортирует код другого продукта.
Оставить граф несвязным. Не создавать рёбра искусственно, чтобы он был похож на монорепозиторий.
Единственная настоящая связь: протокол
Sunflow общается с Flokzy по HTTP: версионированный протокол, тестовая фикстура и очередь исходящих доставок. Обмен по сети между двумя программами не является импортом, поэтому граф по праву её не рисует.
Что даёт один репозиторий
- Один клон
- Одна настройка инструментов
- Один CI
- Одно место для поиска
Четыре правила,
на которых всё держится
Продукты не импортируют друг друга
Продукт может использовать libs/ и собственный код. С другими продуктами он общается через API, контракт событий или сгенерированный клиент.
Место в libs/ нужно заслужить
Код переезжает в libs/, когда его уже использует второй продукт из другой области. Общей свалки кода у нас нет.
Каждый проект сам ставит зависимости
У каждого проекта свой пакетный менеджер и свой lock-файл. В корне устанавливается Nx и больше ничего.
Секреты не попадают в репозиторий
Файлы окружения, ключи и хранилища ключей git игнорирует, а при каждом push вся история проверяется на утечки.
Семь команд
на тридцать проектов
Названия задач одинаковы во всех проектах, что бы ни работало под капотом: Gradle, Go, pnpm, Maven или pytest.
Одни и те же таргеты везде
- build
- test
- lint
- typecheck
- format
- dev
- e2e
- integration-test
- package
- deploy
pnpm bootstrap# тулчейны, установка, git-хуки, проверка окруженияpnpm env:check# что не так с этой машиной и как это исправитьpnpm projects# что есть в репозиторииpnpm graph# как всё связаноpnpm affected# линтер, проверка типов, тесты и сборка, только для изменённогоpnpm check# границы зависимостей и контракт структурыnpx nx run <project>:<target># один проект, одна задача
Один пайплайн
на каждый push
CI запускает те же скрипты, что и вы на своей машине, и только для проектов, которые затронуло изменение.
Поиск секретов
gitleaks проверяет всю историю, но сначала контрольный тест доказывает, что он находит подложенный ключ.
gitleaks git .Тулчейны
mise устанавливает точные версии, закреплённые в mise.toml.
mise installГраницы
pnpm check сначала подкладывает заведомо плохую зависимость, поэтому чистый результат значит, что правила действительно сработали.
pnpm checkЗатронутые проекты
Nx определяет, какие проекты затрагивает изменение.
nx show projects --affectedУстановка
Зависимости устанавливают только затронутые проекты.
pnpm install:affectedПроверка
Линтер, проверка типов, тесты и сборка, по три проекта одновременно.
pnpm affected --parallel=3
Хотите работатьс этим кодом?
Открытых вакансий сейчас нет, но инициативные отклики мы читаем. Расскажите, над каким продуктом хотите работать.