요구사항 반영:
1. NAV 재정렬: 매장검색/등록 → 철거/폐업 → 매칭/지원금/업체/블로그/FAQ
2. /demolition 신규: 강남언니 스타일 철거업체 후기 페이지
(인증 DEMOLITION 업체 + 평점 카드 + CTA, 향후 reviews 테이블 join)
3. /closure 신규: 폐업 5단계 가이드 (의사결정→양도→지원금→철거→신고)
4. 매장 상세에 "수정" 버튼 추가 (소유자 + DRAFT/REJECTED 상태에서만 노출)
5. /stores/[id]/edit 신규: 기존 데이터 만원 단위로 prefill, 업데이트 액션
(StoreLease/Sale/Facility upsert, 권한·상태 검증, 만원→원 변환)
기존 매장 등록 폼 placeholder도 만원 단위 (b1a07e7로 이미 적용됨).
- 다크 리뉴얼(eb28c6a) 잘못 revert로 warm beige로 돌아갔던 상태에서
사용자가 원하는 1ae4bad의 라이트 테마(흰 배경 + 네이버그린)로 복원
- 매장 등록·표시 만원 단위(b1a07e7) 유지: stores 리스트 "만원/억원",
상세 formatKRW를 억/만원 분해 표시로 업그레이드
- AdSense 관련 그대로 유지
- /stores/new 폼: 권리금/창업비용/월매출/월수익/보증금/월세 라벨을
"(원)" → "(만원)"으로 변경, placeholder도 만원 단위로 (예: 12000)
- actions.ts: 입력값을 × 10000 변환 후 DB 저장 (DB는 원 단위 유지)
- /stores/[id] 상세: formatKRW에서 원→억/만원 표시 (예: 1억 9500만원)
- /stores 리스트: "만"/"억" 표기에 "원" 접미 추가 (예: 9900만원, 1.2억원)
Hero + Features + Services 아래에 7개 섹션 추가:
- Stats 밴드 (4개 핵심 지표)
- How it works 3단계 프로세스
- 7개 업종 대분류 카드 그리드
- 역할별 혜택(매도인/매수인/업체)
- 최신 블로그 포스트 4개
- FAQ 3개 프리뷰
- 최종 CTA (다크 배경)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
요구사항 12·13: 매매정보 안에 매물설명과 매장사진을 함께 묶고,
매물설명 아래에 매출/월수익·입지특징·매매사유·현장사진이 순서대로 나오도록 재구성.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Dockerfile pins pnpm@8.10.0 via corepack; local install regenerated lockfile in v10 format which fails --frozen-lockfile.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
AdSense 승인을 위한 콘텐츠 인프라와 점포라인형 매매 정보 모델을 도입.
- 업종 분류 확장: 7개 대분류(휴게음식점/일반음식점/주류점/오락스포츠/판매업/서비스업/기타업종) 하위 소분류
- StoreSale 모델 추가: 월매출·월수익·창업비용·매물설명·입지특징·매매사유
- 매장 검색 카드 재설계(대표 사진 + 권리금 + 월수익), 등록/상세 페이지 매매정보 섹션
- 블로그 시스템: 17개 포스트(폐업/창업/지원금/인테리어), /blog, /blog/[slug]
- 정보 페이지: /about, /terms, /privacy, /faq, /contact
- SEO: sitemap.ts, robots.ts, 페이지별 메타데이터, Article·FAQ JSON-LD, OG 태그
- 주소 라벨 도로명 주소 → 주소
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
useActionState 사용하는 폼에서 서버 에러 반환 시 입력값이 초기화되는 문제 수정.
서버 액션이 에러 시 submitted values를 함께 반환하고, 폼 input에 defaultValue 바인딩.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Playfair Display + Noto Sans KR 폰트, warm 브라운 컬러 시스템,
글래스모피즘 카드, 애니메이션 효과를 전체 22개 페이지/컴포넌트에 적용.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- web/admin 양쪽 앱에 icon.svg, apple-icon.png, favicon.ico 추가
- Prisma .map() 콜백의 implicit any 타입 에러 수정
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- docker-compose.prod.yml에 migrate 서비스 추가 (builder target 사용)
- deploy.sh: postgres 먼저 시작 → migrate 실행 → 나머지 서비스 시작
- Dockerfile에서 불필요한 prisma schema 복사 제거 (runner에 prisma CLI 없음)
Enforce authentication/authorization for admin pages and add several management actions and UI improvements.
Key changes:
- Added auth checks and redirects on admin pages (contracts, stores, subsidies, vendors) to restrict access to SUPER_ADMIN/OPS_MANAGER.
- Hooked server actions to authenticated user IDs (release escrow, review/publish stores, review subsidies/vendors, open disputes, create subsidy cases, create match requests, submit/delete store drafts).
- Implemented store publish flow including policy version resolution and StoreActionButtons update to show approve/reject/publish based on reviewStatus.
- Added filtering UIs and query handling: admin lists (stores/subsidies/vendors) now support status filters; public stores list uses a new client StoreFilters component to build search params.
- New client-side improvements: invite form triggers router.refresh() after success; register page accepts/validates optional phone and persists it; store creation now uses createStoreDraftService and shows error banner on failure.
- Matching and subsidies pages now support contextual forms to create match requests and subsidy cases when a storeId is provided.
- Various UX tweaks: disabled inspection button, dispute form, list link styling, and revalidation calls after server actions.
- Added docs/BUG-REPORT-2026-03-08.md.
These changes centralize auth, connect actions to real user IDs, and improve admin and store workflows and filtering.
Rebrand repository from "Re:Link" to "Startover" across the codebase. Updates include package names and scopes (@relink/* -> @startover/*), import paths, Next.js transpile settings, vitest name, UI text and docs, Dockerfile and CI/workflow names, deploy scripts and repo paths, and example/production env values. Also add auth-related env vars, an apps/web .env symlink, and small formatting/typing cleanups in several TSX/TS files and tests to accommodate the rename.
- admin 페이지: contracts, stores, subsidies, vendors 실제 DB 조회
- ActionButtons 컴포넌트 분리 (클라이언트 컴포넌트)
- 사용자 페이지: contracts, matching, stores, subsidies, vendors DB 연동
- vendor 신청 폼 및 server actions 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Traefik file provider로 호스트 webhook(9000) 프록시
- /deploy 경로로 Gitea webhook 수신
- extra_hosts로 Linux host.docker.internal 지원
- 불필요한 Docker webhook 서비스 제거
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Docker 라벨 기반 자동 라우팅으로 전환
- /admin/* → admin 서비스 (StripPrefix 미들웨어)
- /* → web 서비스 (catch-all)
- Let's Encrypt 설정 준비 (도메인 확보 시 활성화)
- 다른 서비스 추가 시 라벨만 붙이면 자동 등록
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Dockerfile: prisma generate 명령어를 npx prisma generate로 수정
- feature-flag.ts: map 콜백 파라미터에 명시적 타입 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>