워크스페이스
Lumie는 멀티 리포지토리 워크스페이스입니다. 루트 폴더는 여러 하위 폴더를 둔 단일 애플리케이션 저장소가 아니라, 여러 독립 Gitea 저장소를 나란히 두는 조정 계층입니다. 일상적인 작업은 보통 한두 개 저장소만 건드리지만, 이 워크스페이스는 공용 규칙, 라우팅, 로컬 개발 흐름이 일관되게 느껴지도록 설계되어 있습니다.
주요 저장소
| 경로 | 역할 |
|---|---|
lumie-frontend | 직원, 학생, 온보딩, 마케팅 화면을 위한 Next.js 웹 애플리케이션 |
lumie-backend | 제품 비즈니스 로직을 담당하는 Spring Boot 모듈러 모놀리스 |
lumie-worker | 채점, 리포트, 분석, 챗봇 워크로드를 위한 독립 FastAPI 워커 |
lumie-infra | GitOps로 관리되는 K3s 플랫폼, 애플리케이션 매니페스트, 스토리지, 보안, 관측성 |
lumie-document | Docusaurus 문서 사이트 |
lumie-team | OpenClaw 에이전트 관련 워크스페이스 |
lumie-graph | Graphify 출력물과 AST 기반 교차 저장소 조회 지원 |
.codex | 공용 워크플로 제어 평면: skills, routing, knowledge, rules, hooks, worktrees |
.github | 워크스페이스 Tilt 진입점을 포함한 공용 스크립트 및 CI 도우미 |
워크스페이스 사용 방식
이 저장소들이 의도적으로 분리된 이유는 런타임, 배포 경계, 리뷰 규칙이 서로 다르기 때문입니다. 프론트엔드는 로컬 Node.js 앱이고, 백엔드는 Java 모놀리스이며, 워커는 Python 서비스이고, 플랫폼은 Kubernetes 및 GitOps 구성이고, 문서 사이트는 별도의 정적 빌 드입니다. 분리해 두면 이런 경계가 명확해집니다.
동시에 루트 수준의 가이드는 개발자 경험을 통일해 줍니다.
- 루트
AGENTS.md가 공용 작업 규칙을 정의합니다. .codex는 저장소 전반에 적용되는 워크플로 스킬, 라우팅, 리뷰 기대치, 지식을 제공합니다..github/tilt-up.sh는 워크스페이스 루트에서 일반적인 로컬 개발 루프를 시작합니다.
로컬과 클러스터의 역할 분담
일반적인 개발 루프는 의도적으로 하이브리드입니다.
- 프론트엔드는 개발자 머신의
http://localhost:3000에서 로컬로 실행됩니다. - 백엔드, 워커, PostgreSQL, RabbitMQ, Redis, MinIO는 dev 클러스터에서 실행됩니다.
- 프론트엔드는 자체 same-origin 프록시 라우트를 통해 백엔드와 통신하므로 브라우저 인증과 로컬 쿠키가 깔끔하게 동작합니다.
이 분리는 클러스터에 next dev를 올리지 않으면서도 프론트엔드 HMR을 빠르게
유지하고, 동시에 백엔드와 워커 코드가 공용 상태 저장 서비스 가까이에서
실행되도록 해 줍니다.
.codex의 역할
.codex는 제품 코드가 아니라 워크스페이스 제어 평면입니다. 여기에는 다음이
들어 있습니다.
- 공용 Lumie 워크플로 단계를 위한
skills/ - 저장소 카드와 리뷰어 라우팅을 위한
routing/ - 교차 저장소 규칙과 용어집 자료를 위한
knowledge/ - 정책과 검증을 위한
rules/및lint/ - 전문 역할 정의를 위한
agents/ - 워크스페이스 가드레일을 위한
hooks/
낯선 영역으로 돌아왔다면 모든 하위 저장소를 처음부터 완전히 독립적으로 취급하기보다, 먼저 루트 규칙을 읽고 그다음 편집하려는 저장소를 읽는 편이 좋습니다.
좋은 첫 오리엔테이션 순서
- 루트
AGENTS.md를 읽습니다. - 영향을 받는 저장소의
AGENTS.md를 읽습니다. - 저장소별 지침이 있다면
.codex/routing/repos/<repo>.md를 확인합니다. - 실행 환경이 필요하다면 Tilt의 로컬 개발 경로를 따릅니다.
- 작업이 Lumie의 워크플로 단계, 라우팅, 리뷰어 관례에 의존한다면 Codex를 사용합니다.