# nexo 프로젝트 규칙 ## 응답 언어 - 기본 응답은 한국어로 작성한다. - 파일명, 명령어, 패키지명, API 이름, 코드 식별자는 원문 그대로 유지한다. ## 프로젝트 개요 `nexo`는 메시징 서버, Flutter 클라이언트, Flutter 푸시 알림 패키지를 한 워크스페이스에서 함께 관리하는 프로젝트다. 주요 경계는 다음과 같다. - `services/core/` — Mattermost `v11.4.2` 기반 메시징 서버 코어, 웹앱, API 문서, compose 환경 - `packages/messaging_flutter/` — Mattermost 호환 푸시 알림 Flutter 플러그인 - `apps/client/` — 플러그인을 검증하는 Flutter 클라이언트와 통합 테스트 호스트 - `docs/`, `bin/` — 워크스페이스 공통 문서와 helper entrypoint ## 기술 스택 - Flutter / Dart `sdk: ^3.11.3` - Android native plugin: Kotlin, Java, Gradle - iOS / macOS plugin scaffold: Swift - Server core: Go `1.24.13`, Mattermost server module - Webapp / API tooling: Node.js, npm workspaces, TypeScript, Redocly - Local runtime: Docker Compose under `services/core/compose/` ## 작업 원칙 - `services/core/`는 Mattermost upstream fork 성격이 강하므로 제품 특화 변경은 작고 비교 가능하게 유지한다. - `services/core/UPSTREAM.md`의 baseline 정보를 임의로 바꾸지 않는다. - Flutter 플러그인의 public package name은 현재 `mattermost_push_plugin`이며, 소비 앱과 호환성이 걸려 있으므로 rename은 별도 결정 없이 하지 않는다. - 푸시 알림 처리 책임은 `packages/messaging_flutter/`에 두고, `apps/client/`에는 검증과 host integration만 둔다. - `apps/client/`는 독립 소비 앱 역할을 하므로 플러그인 내부 동작을 복제하지 않는다. - `build/`, `.dart_tool/`, Android/iOS/macOS 생성물, upstream bulk 파일은 요청 범위 밖이면 건드리지 않는다. - 모듈별 README가 있는 경우 해당 모듈 안의 설명을 우선한다. ## 검증 명령 - 전체 기본 검증: `bin/test` - 전체 lint: `bin/lint` - 전체 build: `bin/build` - 서버 Go test: `NEXO_CORE_GO_TEST=1 bin/test` - 서버 Go vet: `NEXO_CORE_GO_LINT=1 bin/lint` - 서버 Go build: `NEXO_CORE_GO_BUILD=1 bin/build` `bin/*` 명령은 로컬 도구가 없으면 일부 검증을 skip할 수 있다. skip 출력이 있으면 최종 보고에 명시한다. ## 도메인 매핑 | 경로 패턴 | 도메인 | rules.md | |----------|--------|----------| | `services/core/**` | core-service | `agent-ops/rules/project/domain/core-service/rules.md` | | `packages/messaging_flutter/**` | messaging-flutter | `agent-ops/rules/project/domain/messaging-flutter/rules.md` | | `apps/client/**` | client-app | `agent-ops/rules/project/domain/client-app/rules.md` | | `docs/**`, `bin/**`, root docs/config | workspace-ops | `agent-ops/rules/project/domain/workspace-ops/rules.md` | ## 스킬 라우팅 현재 프로젝트 전용 skill은 없다. 반복 작업이 안정적으로 드러나면 `agent-ops/skills/project//SKILL.md`로 추가한다.