SpaceOS — 공간 임대·계약·청구 운영 SaaS
공간(Place) · 계약자(Counterparty) · 계약(Contract) 세 엔티티로 임대 사업을 정의하고, 버튼 하나로 이번 달 청구서 배치를 만드는 소규모 임대사업자용 운영 SaaS. 장기임대·월정기·단기숙박·시간단위 4개 시나리오에 대시보드가 스스로 적응합니다.
해결 과제
시장의 기존 솔루션은 정반대 방향이었습니다. 조직 → 포트폴리오 → 건물 → 층 같은 엔터프라이즈 계층을 요구하고, 여러 관리자가 서로 다른 물건을 다루는 멀티테넌트를 전제합니다. 한 사람이 자기 자산 포트폴리오를 운영하는 상황에서는 계층 자체가 잉여이고, 등록 화면에 도달하기도 전에 지칩니다.
더 까다로운 건 사업 유형마다 봐야 할 숫자가 완전히 다르다는 점입니다. 장기 임대는 만료 임박 계약과 공실, 창고·주차 월정기는 공간 배치와 연체, 게스트하우스는 오늘 체크인/아웃과 객단가, 회의실은 시간대 이용률이 핵심입니다. 하나의 고정 대시보드로는 어느 쪽도 만족시킬 수 없었습니다. 여기에 DB 가 원격 호스트라 쿼리 1건이 약 200ms 왕복이라는 물리적 제약까지 얹혔습니다.
솔루션
청구는 자동 생성하지 않습니다. 관리자가 대시보드에서 [이번 달 청구서 생성] 을 누르면 그 시점의 활성 계약 + 유틸리티 검침 + 전월 총액을 스냅샷으로 묶어 배치 1건과 계약자 수만큼의 청구 항목이 만들어집니다. 이후 항목별 검토·편집·메일 발송·수납 확인·PDF 다운로드가 한 줄로 이어집니다. 같은 로직을 서비스로 추출해 수동 CTA 와 월 자동 배치 스케줄이 동일한 스냅샷 규칙을 공유합니다.
대시보드는 온보딩에서 고른 운영 시나리오에 따라 카드 구성 자체가 바뀝니다. 모든 카드를 DB 등록 위젯으로 추상화해 53종을 시드하고, 드래그 재정렬과 스위칭 모달로 관리자가 직접 조립합니다. 썸네일은 서버가 실데이터 기반 결정적 SVG 로 생성해 아직 배치하지 않은 위젯도 미리 볼 수 있습니다. 원격 DB 제약은 세션·캐시·브로드캐스트를 전면 Redis 로 돌리고(실측 DB 캐시 271ms 대 Redis 5ms) 채널 단위 캐시로 왕복 횟수를 줄여 해결했습니다.
성과
CTA 한 번으로 월 청구 배치 생성 → 검토 · 메일 발송 · 수납 확인 · PDF 다운로드 단일 체인
운영 시나리오 4종(장기임대 · 월정기 · 단기숙박 · 시간단위)에 대시보드 카드 구성이 자동 적응
대시보드 위젯 53종 DB 화 — 드래그 재정렬 · 스위칭 모달 · 서버 생성 SVG 썸네일
Konva 공간 편집기 + 자연어 → 배치 생성 AI Depict (진행률 브로드캐스트 · 폴링 폴백)
세션 · 캐시 · 브로드캐스트 전면 Redis 화로 원격 DB 왕복 제거 (DB 캐시 271ms → Redis 5ms)
인앱 관리자 알림을 시나리오 스코프로 분리 — 미발행 · 연체 · 관리목표 지연을 self-heal 로 회수
관리자 4개 국어 실번역(키 패리티 100% 감사) + 사용자 8개 국어 + 무인증 사용 설명서 38섹션
청구 생성 로직을 서비스로 추출 — 수동 CTA 와 월 자동 배치 스케줄이 같은 경로를 공유
개발 마일스톤
Phase 1–4 완결 — 도메인 백본부터 CTA 청구 체인까지
12개 마이그레이션과 10개 시더로 장기임대 시나리오를 재현하고 8개 리소스 CRUD 를 실 DB 에 연결. 대시보드 CTA → 청구 배치 스냅샷 → 항목별 발행·메일·수납 체인을 완성했고, Konva 공간 편집기와 PDF 청구서까지 같은 구간에 투입했다.
계층 제거 — Place 를 flat 하게
조직/포트폴리오/건물/층 계층을 걷어내고 층은 문자열 라벨 하나로 축소. 하위 존(section) 필드도 함께 제거해 코드·이름·좌표·층 라벨만으로 공간이 완결되도록 했다.
대시보드 위젯 시스템 + 서비스 요청 정의
대시보드의 모든 카드를 DB 등록 위젯으로 추상화해 53종을 시드. 드래그 재정렬, 스위칭 모달, 서버가 실데이터로 굽는 결정적 SVG 썸네일까지 갖췄다. 서비스 요청은 큰 주제 → 작은 주제 2단 트리로 관리자가 직접 정의한다.
인앱 알림 · 사용 설명서 · 관리자 i18n 완성
목업이던 알림 벨을 실 기능으로 교체 — 미발행·연체·관리목표 지연을 dedup 키로 멱등 생성하고 조건이 풀리면 스스로 삭제한다. 알림은 운영 시나리오 스코프로 분리. 무인증 사용 설명서 9그룹 38섹션과 관리자 zh·ja 실번역(값 단위 감사로 미번역 색출)도 마감.
공개 랜딩 재구성 + spaceos.work 운영 배포
랜딩의 강점 4개를 재구성하고 모바일 오프캔버스 네비 드로어를 도입. 호스트 리버스 프록시와 신뢰 프록시 설정으로 spaceos.work 도메인에 app · nginx · redis · reverb · queue · scheduler · node 스택을 올렸다.
개발(Dev) 대메뉴 — Pulse 기반 디버깅 콘솔
Pulse 를 데이터 수집기로만 쓰고 vendor 대시보드는 완전히 차단. 느린 쿼리·요청·잡·외부 API, 예외 로그, 캐시 사용 현황, 서버 리소스, 사용자별 사용량을 super 전용 자체 화면으로 재구성했다.
월 청구 자동 배치 + 계정 보안 강화
청구 생성 로직을 컨트롤러에서 전용 서비스로 추출해 대시보드 CTA 와 스케줄 커맨드가 같은 경로를 공유하도록 했다. 활성 계약이 없으면 전용 예외로 조기 종료해 빈 배치를 만들지 않는다. 관리자 인증과 계정 관리 모달도 함께 보강.