RealLux 쇼핑몰 구축 (reallux.crowny.org)
개요
Claude Design 핸드오프(
RealLux.dc.html)로 받은 서울 베이스 럭셔리 패션 쇼핑몰 디자인을
완전 작동하는 실서비스로 구현. 스토어프론트 + 완전작동 관리자페이지 + 백엔드 API + 한선씨 동반 엔진. 울트라 에이전트 워크플로우(4 sonnet 병렬)로 구축 후 메인(opus)이 통합·실검증.
무엇을 했는지
디자인 정독: RealLux.dc.html(DC 컴포넌트 원본), 번들 HTML(동일 실행본), image-slot.js(업로드 패턴). 4페이지(홈/리스트/상세/장바구니) + 16상품 + 헤더/네비/푸터.
아키텍처: 제로 의존성 순수 Node.js(내장 http/fs/crypto만) + JSON 파일스토어. VPS에 폴더 복사 → node server.js만으로 구동(native compile·npm install 불필요).
4-에이전트 병렬 구축(Workflow, 13분·42만토큰):
server.js — 전체 API(공개/회원/관리자), 이미지 업로드(base64 dataURL→webp), scrypt 해시, HMAC JWT-lite, 경로순회 방어, bind실패 exit(1)
public/index.html+app.js+style.css — 디자인 픽셀정합 SPA(홈/리스트/상세/장바구니/주문/로그인/회원가입/마이페이지/주문조회/검색, 카트 localStorage 영속)
public/admin.html+admin.js — 대시보드·상품CRUD·주문·리뷰·회원·설정, 다중 이미지 업로드
한선씨/쇼핑몰.한선 등 — 헌법 동반 엔진(할인율·적립금·배송비·장바구니합계·주문번호), hanseonc_high 컴파일+run 검증
실검증(메인 opus, 30+ 어서션 라이브 curl): health, products(cat/filter/sort/q/404), 주문(서버 가격재계산·가격변조 방어·재고차감·무료배송임계·잘못된옵션 400·주문번호), 회원(가입/중복400/로그인/오답401/me/적립금/내주문/무토큰401), 관리자(reallux/reallux 로그인·인증게이트401·통계·상품CRUD·주문상태·리뷰·회원 비노출·설정병합·업로드). 한선씨 값 전량 일치. 스토어프론트·관리자 헤드리스 스크린샷 육안 확인(픽셀정합).
배포: 포트 9985 등록, 게이트웨이 라우트 reallux.crowny.org → 127.0.0.1:9985 라이브 배선(Host 라우팅 200 검증), README에 VPS 배포 가이드(systemd/pm2/nohup + certbot SAN 주의).관리자 계정
ID reallux / PW reallux (env ADMIN_USER/ADMIN_PASS로 덮어쓰기 가능).
/admin 접속.
관련 파일 경로
- 서비스:
/Users/ef/crowny-reallux/ (server.js, public/, data/, uploads/, 한선씨/, SPEC.md, README.md)
- 게이트웨이 라우트:
crowny-gateway/gateway.yaml (crowny-reallux, :9985)
- 디자인 원본:
~/Downloads/리얼럭스쇼핑몰 웹사이트 제작-handoff.zip, ~/Downloads/RealLux 쇼핑몰.html
잔여 이슈 / 다음
- 실결제 PG 미연동(주문=데모결제, 상태 즉시 결제완료). 실결제 필요 시 crowny-pay 연동.
- 공개 HTTPS(443): 신규 도메인 인증서 SAN에 reallux.crowny.org 포함 필요(certbot expand) — VPS 배포 시 처리.
- 상품/히어로/배너 이미지 미업로드(placeholder 그라디언트 표시) → 관리자 설정에서 업로드하면 실이미지 반영.
- 현재 맥 로컬 9985 nohup 구동 중(테스트용). 최종은 VPS 배포 예정.
공개 배포 (2026-07-09 라이브)
- A레코드 등록(reallux.crowny.org→112.144.147.144) 후 공개 HTTPS 활성화 완료.
- 인증서 SAN 갭 처방(수술적): 신규 도메인은 어느 cert SAN에도 없어 마스터(ext) 폴백→TLS 불일치.
ext2(crownybus.com-ext2, 신규서비스 버킷, 45→46 SAN)만 certbot certonly --cert-name crownybus.com-ext2 --allow-subset-of-names --expand로 기존 45개 보존+reallux 추가 → scripts/sni-sync.sh(stunnel-live.conf:8443 + stunnel-live-443.conf:443에 SNI 슬레이브 추가 + SIGHUP 무중단 reload). 전체 sync 재슬라이스(blast radius 큼) 회피.
- 실행 스크립트:
/Users/ef/crowny-reallux/scripts/add-https-cert.sh (재현용).
- 검증: https://reallux.crowny.org 의 /api/health·/·/admin·/api/products·/api/settings·/style.css·/app.js·/admin.js 전부 200, ssl_verify=0(유효), 관리자 로그인(reallux/reallux) 공개 HTTPS 정상, 헤드리스 스크린샷 렌더 확인(히어로 슬라이더 라이브 동작).
- 인증서 만료 2026-10-07(자동갱신 라인). ext2 버킷이 자동 갱신 대상.
V2 개선 (2026-07-09 라이브) — CMS·모바일·UX
imweb·cafe24·패션UX 울트라리서치(비교분석 문서 별첨) 기반 4병렬 빌드 → 통합·실검증.
- CMS(관리자 편집): 콘텐츠 6종(브랜드스토리·배송·교환/반품·FAQ·약관·개인정보) + 공지사항 게시판(고정·표시 이중토글) + 1:1문의(신청→접수→처리중→완료 상태+답변). 죽은 푸터 링크 전부 실라우트 배선. server.js에 pages/notices/inquiries API 추가, admin.html/js에 3섹션+대시보드 자주쓰는작업5+pendingInquiries.
- 모바일: 실 미디어쿼리(@768/@480) 신규, 햄버거 드로어, 하단 탭바(홈·카테고리·검색·위시·장바구니), PDP 하단 고정 CTA바, 터치타겟 44px+. 데스크톱 회귀 0(격리 확인).
- UX: 품절사이즈 흐림+재입고알림, 컬러 스와치, 무료배송/7일교환 배지, 사이즈가이드 인라인, 최근본상품 캐러셀, 리스트 필터, 체크아웃 3단계 진행바, 주문 상태 뱃지.
- 검증: 신규 공개/관리자 CMS API 전부 실동작(pages GET/PUT·notices CRUD·inquiries status/answer·pendingInquiries 1→0), 기존 API 회귀 0, 모바일 375px 스크린샷(햄버거·하단탭바·교환반품 페이지·PDP 고정CTA) 확인, 라이브 https 반영 확인. 한선씨 동반 문의상태.한선 컴파일 검증.
- 파일: server.js 813→962, app.js 997→1488, style.css 349→525, admin.js 671→967. 시드: pages.json·notices.json(3)·inquiries.json.
⚠ 공개 HTTPS 재발 + durable 처방 (2026-07-10)
- 증상: 7/9 19:53 add-https-cert.sh로 열렸던 공개 HTTPS가 7/10 다시 SAN 불일치(게이트웨이 8080 Host 라우팅은 계속 200 정상).
- 근본원인: ①주기적 자동 cert-manager sync가 valid도메인을 index순 100개 버킷 재슬라이스해 ext2 재발급 → reallux 재탈락 ②sync 중 ACME 일시실패로 reallux가
/tmp/crowny-cert-exclude.dat 제외등록 ③sni-sync.sh는 append-only라 reallux 슬레이브가 ext2(내용빠짐)를 영구 오지정. → 공유버킷 expand는 비-durable.
- durable 처방(전용 cert lineage):
crowny-reallux/scripts/fix-https-durable.sh — 제외해제→certbot --cert-name reallux.crowny.org -d reallux.crowny.org 단독발급→stunnel 슬레이브 cert경로를 전용cert로 awk 재지정(8443·443)→워치독 respawn→검증. + stunnel_conf_gen.py LINEAGE/PRIORITY에 reallux 전용 등록(full regen도 유지).
- 상태: certbot/전용cert 발급은 auto-mode 분류기 차단 → 사용자가
! bash /Users/ef/crowny-reallux/scripts/fix-https-durable.sh로 직접 실행 필요. 실행 시 durable 고정(재슬라이스 무관). 앱/게이트웨이 계층은 정상(로컬 9985·8080 200).
- 메모리 [[feedback_stunnel_gen_san_gap]] 갱신.