Репозитории и структура кода
Проект организован как репозиторий рабочего пространства и отдельные репозитории приложений. Публичной точкой входа выбран GitLab проекта; пять репозиториев приложений опубликованы в группе geek.moscow, адреса и ревизии перечислены на странице исходного кода. Клонирование workspace не загружает исходники приложений автоматически: они размещаются отдельными клонами в соответствующих каталогах.
Карта репозиториев
| Каталог | Репозиторий | Назначение |
|---|---|---|
| Корень workspace | Не опубликован в группе; содержание представлено этим сайтом | docs/, infra/ (k3s/, scripts/, ff-ca/, docs-site/), правила работы, JOURNAL.md |
backend/ |
https://gitlab.geek.moscow/geek.moscow/backend |
Монорепозиторий сервисов, Gateway и контрактов |
frontend/ |
https://gitlab.geek.moscow/geek.moscow/frontend |
Монорепозиторий продуктового и административного интерфейсов |
design-sys/ |
https://gitlab.geek.moscow/geek.moscow/design-sys |
Пакет @geek.moscow/design-sys, токены, компоненты, Storybook |
ui-react-brandbook/ |
https://gitlab.geek.moscow/geek.moscow/ui-react-brandbook |
Сайт брендбука |
fsp-mock/ |
https://gitlab.geek.moscow/geek.moscow/fsp-mock |
Эмулятор реестра ФСП и исследовательский интерфейс |
cooming-soon/ |
Исторический каталог, не публикуется | Страница ожидания, которой geek.moscow отвечал до запуска платформы |
example/ |
Исторический каталог, не публикуется | Пример сервиса, использованный как шаблон backend |
Ссылки из обзора на файлы приложений разрешаются в полной рабочей области с этими клонами. В отдельном клоне только workspace соответствующих файлов может не быть.
Backend
Backend использует npm workspaces packages/* и services/*, TypeScript, NestJS на Fastify, gRPC через @grpc/grpc-js, PostgreSQL через pg, RabbitMQ через amqplib, Redis через ioredis, JWT через jose, метрики через prom-client, логи через pino, тесты jest.
backend/
├── contracts/
│ ├── proto/geek/<service>/v1/ protobuf-контракты сервисов
│ ├── events/schemas/ JSON-схемы событий
│ ├── catalog.json каталог RPC и разрешённых маршрутов
│ └── compatibility/ база проверки несовместимых изменений
├── packages/
│ └── database, grpc-auth, messaging, platform-config,
│ proto, redis, shared, test-support
├── services/
│ └── gateway, identity, candidates, employers, opportunities,
│ recruitment, chat, notifications, backoffice
├── templates/microservice/ адаптированный снимок примера сервиса
├── infra/compose/ локальная инфраструктура
├── k3s/geek-api/ манифесты стенда
└── scripts/ сборка, публикация и вспомогательные операции
В базовом контрактном срезе указаны 13 proto-файлов и 143 RPC, а также 33 JSON-схемы: оболочка, 16 предметных событий и payload удаления. Распределение RPC: Candidates 35, Recruitment 26, Employers 21, Opportunities 16, Identity 14, Chat 12, Backoffice 11, Notifications 8. Эти числа относятся к описанной версии; административные расширения следует сверять с актуальными контрактами.
Gateway — один код, развёрнутый в профилях public и admin. Поэтому каталог содержит девять приложений, но бизнес-сервисов восемь. Процессы workers, outbox и планировщиков не увеличивают число предметных сервисов.
Сервисная структура включает Dockerfile, конфигурацию Nest и модули предметной логики, RPC, workers, метрик и сообщений. Шаблон из example/microservice сопровождается ADAPTATION.md. Локальный Compose в описанном срезе включает PostgreSQL 16, RabbitMQ 3.13 с management, Redis 7.4 и MinIO.
Порядок реализации, владение файлами и интеграционные условия описаны в backend-prompts. Поведение сервисов задаётся контрактами, а не только устройством каталогов.
Frontend
Основной frontend использует React 18, Vite, Module Federation через @module-federation/vite, React Router 7, TanStack Query, MSW, vitest и Playwright. В описанном окружении используется Node 22. Дизайн-система устанавливается из npm-реестра проекта.
frontend/
├── apps/
│ ├── web-shell/ оболочка продуктового интерфейса
│ └── admin/ отдельное административное приложение
├── modules/
│ └── public-account, backoffice
├── remotes/
│ └── candidates, employers, recruitment, messaging
├── packages/
│ └── contracts, platform, product-ui, mock-platform
├── tooling/ запуск, порты, общие зависимости federation
├── docs/implementation/ решения, контракты модулей и покрытие экранов
└── tests/ контракты, интеграционные и сквозные проверки
web-shell отвечает за оболочку и маршруты публичной, инженерной и корпоративной частей. Четыре подключаемых модуля загружаются через /mf/*; каждый имеет окружение для самостоятельной разработки. Общая политика фиксирует совместимые версии разделяемых зависимостей.
Admin UI собирается отдельно и обслуживается собственным хостом. Контракты работы frontend с backend находятся в frontend-api, материалы разработки на имитаторах — в frontend-mock. Наличие MSW и mock-пакетов для разработки не является доказательством использования имитаторов в конкретной опубликованной сборке.
Вспомогательные приложения
| Приложение | Стек и роль |
|---|---|
design-sys/ |
TypeScript, tsup, Storybook, vitest; единый пакет интерфейсных компонентов |
ui-react-brandbook/ |
React 19 и Vite; визуальные правила и живые примеры компонентов |
fsp-mock/ |
NestJS 11, JSON в памяти, jest/supertest; отдельный explorer на React |
cooming-soon/ |
React 18, Vite, образ Caddy; отсчёт до запуска по московскому времени и объяснение механики в три шага, без форм и вызовов API |
example/microservice/ |
NestJS и Fastify; образец конфигурации, health-endpoints и метрик |
React 18 в продукте и React 19 в брендбуке относятся к разным приложениям, а не к одной сборке. Версии библиотек фиксируются соответствующими манифестами и lock-файлами; обзор не заменяет их.
Документация и правила работы
Как эти границы использовать при передаче задач и параллельной работе нескольких команд, описано в разделе «Технологии и командная разработка». Там же разобраны контракт подключения frontend-модуля, согласование выпуска и роль наблюдаемости в сопровождении.
Workspace связывает требования, архитектуру, визуальные материалы и инфраструктуру. Главные точки входа — карта документации, продуктовые спецификации, журнал работ и правила репозитория.
В репозитории по умолчанию принят английский язык документации, комментариев, коммитов и PR. Этот русский комплект создан по прямому запросу владельца; существующие идентификаторы, пути и команды сохранены. Английский обзор остаётся доступен отдельно.
Существенные изменения выполняются в отдельных ветках feat/… или fix/…; защищённая main обновляется через PR. Коммиты и отправка в удалённый репозиторий выполняются по запросу владельца. Секреты хранятся только в creds-store. Параллельные реализации при их организации используют отдельные git worktrees и явно разделённое владение файлами.
Для навигации по связям кода и документации проект использует graphify; точечные проверки опираются на сами файлы. Значимые результаты, ограничения и особенности эксплуатации фиксируются новыми записями сверху журнала.