아키텍처
Hereby는 pnpm 워크스페이스로 구성된 모노레포로, 모듈형 패키지와 프로덕션 애플리케이션으로 구성되어 있습니다.
시스템 다이어그램
패키지
| 패키지 | 설명 |
|---|---|
@hereby/database | TypeORM 엔티티(50개), 마이그레이션(44개), 시드(11개) |
@hereby/api | Fastify 5 + tRPC 11 서버, 32개 라우터 |
@hereby/core | 공유 타입, 27개 Zod 스키마, Pino 로거, 유틸리티 |
@hereby/sdk | TypeScript SDK, 30개 서비스 클래스 (ESM/CJS/브라우저) |
@hereby/cli | Commander.js CLI 도구 (hereby 커맨드) |
@hereby/components | Alpine.js 컴포넌트 라이브러리 (AuthGate, LoginForm, RegisterForm) |
@hereby/test | Vitest 통합 테스트 스위트 |
애플리케이션
| 앱 | 포트 | 설명 |
|---|---|---|
| HR 시스템 | 4000 | HR 관리자용 급여 관리 대시보드 |
| 관리자 패널 | 4001 | 직원, 팀, 역할 관리 |
| 직원 앱 | 4002 | 모바일/웹 앱 (Capacitor iOS + Android) |
| 간호 스케줄러 | 4003 | 간호사 근무표 관리 및 충돌 감지 |
| 내부 결재 | 4004 | 휴가, 연장근무, 인센티브 승인 워크플로우 |
| 총무 관리 | 4005 | 법정교육, 정기업무, 공지 관리 |
| 모듈 관리자 | 4010 | 모듈 레지스트리 및 계산기 설정 |
| 임포터 | CLI | Excel 데이터 임포터 (47개 시트) |
핵심 설계 원칙
멀티테넌시
모든 쿼리에 organizationId 필터링이 포함됩니다. 각 엔티티는 조직에 소속됩니다.
소프트 삭제
모든 엔티티는 deletedAt 타임스탬프를 사용합니다. 하드 삭제는 사용하지 않습니다.
감사 추적
모든 엔티티는 createdAt, updatedAt, deletedAt 필드를 가진 BaseEntity를 상속합니다.
타입 안전성
tRPC를 통해 데이터베이스 엔티티에서 API, 프론트엔드 SDK 호출까지 엔드투엔드 타입 안전성을 제공합니다.
권한 모델
리소스 기반 권한과 팀 수준 접근 제어를 갖춘 역할 기반 접근 제어(RBAC)를 사용합니다.