Files
arasystem/backend
ttipo f0e9a50b01
CI (Flutter) / Flutter (analyze · test) (pull_request) Successful in 24m43s
CI / Backend (lint · type-check · test · e2e · build) (pull_request) Successful in 14m6s
CI / Frontend (lint · type-check · test · build) (pull_request) Successful in 13m45s
CI / Infra (compose · Dockerfile · nginx · 운영 스크립트) (pull_request) Successful in 2m4s
CI / 에러 코드 SSOT 동기화 검사 (pull_request) Successful in 11m43s
docs(backend): 업데이트 내역 첫 글을 11월 5일 이후 바뀐 것으로 쓴다
1차 배포(11월 5일 전환) 뒤 만든 기능을 직원이 어디서 무엇을 누르면 되는지 중심으로 모았다(휴대폰 앱 · 웹메일과 휴대폰 앱 · 웹메일의 메일 읽기와 정리 · 주소록 · 설정 · 그 밖에).
앱에서도 보이는 글이라 묶음 머리에 어느 쪽 기능인지 적었다. 파일 이름(날짜)은 임시 — 배포 날로 고치고 메모 줄을 지운다.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-10 20:16:29 +09:00
..
2026-10-26 12:28:48 +09:00
2026-10-26 12:28:48 +09:00
2026-10-26 12:28:48 +09:00
2026-10-26 12:28:48 +09:00
2026-10-26 12:28:48 +09:00
2026-10-26 12:28:48 +09:00
2026-10-26 12:28:48 +09:00

backend — ARA SYSTEM API (NestJS)

웹 · 앱이 함께 쓰는 REST API 다(/api). 메일 엔진(Stalwart)을 JMAP 으로 감싸고, 로그인 세션 · 설정 · 검색 색인 · 앱 알림 · 대용량 첨부 · 운영 도구를 맡는다.

실행 — 컨테이너로

백엔드는 늘 컨테이너로 띄운다. 의존성 · lock 이 Linux 기준이라 호스트에서 npm install 하지 않는다(바꿀 때도 컨테이너 안에서 — nestjs 스킬 "의존성 추가/제거").

# 저장소 루트에서 — 개발 스택(backend + db + 메일 엔진)
docker compose -f docker-compose.yml -f docker-compose.dev.yml --env-file .env.development up -d
docker compose -f docker-compose.yml -f docker-compose.dev.yml --env-file .env.development logs -f backend
  • 처음 띄우면 마이그레이션을 한 번 돌리고 watch 빌드를 시작한다(Windows 바인드 마운트라 수십 분 걸릴 수 있다). 코드를 고치면 저절로 다시 뜬다.
  • Swagger: http://localhost:3000/api-docs

시험 · 검사

docker exec arasystem-backend npm run lint                             # 경고 0
docker exec arasystem-backend npm run test                             # 단위 — 메모리가 빠듯하면 -- --maxWorkers=2
docker exec arasystem-backend npx jest --config ./test/jest-e2e.json   # e2e — DB · 메일 엔진 필요

컨테이너 이름은 <PROJECT_NAME>-backend(개발 기본 arasystem). Git Bash 에서 컨테이너 안 경로를 줄 때는 MSYS_NO_PATHCONV=1 을 붙인다.

자주 하는 일

  • 에러 코드: src/common/errors/error-codes.ts 만 고치고 호스트에서 cd backend && npm run sync:error-codes(웹 · 앱 사전이 함께 바뀐다).
  • DB 스키마: 엔티티를 고친 뒤 docker exec arasystem-backend npm run migration:generate -- src/migrations/<이름> → 만든 SQL 을 눈으로 확인 → 엔티티와 함께 커밋(nestjs 스킬 "DB 마이그레이션").
  • 운영 도구(운영 서버 안 명령 — 입사 · 비밀번호 재설정 · 휴대폰 앱 올리기 등): sudo docker exec -it <PROJECT_NAME>-backend node dist/cli/ops.js — 계약 6절 · mail/README.