Репозиторій
у цифрах
Пораховано в гілці main. Рядки коду тут означають непорожні рядки вихідного коду без 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
Хочете працюватиз цим кодом?
Відкритих вакансій зараз немає, але ініціативні заявки ми читаємо. Напишіть, над яким продуктом хочете працювати.