feat: Re:Link MVP 초기 구현 - 도메인/서비스/프론트엔드 전체

- 모노레포 구조 (Turborepo + pnpm): @relink/domain, @relink/shared, @relink/infrastructure, @relink/database, @relink/web
- 도메인 레이어: 매장(store), 매칭(matching), 업체(vendor), 보조금(subsidy), 계약/에스크로(contract) TDD 완료 (158 단위 테스트)
- 서비스 레이어: 전 도메인 서비스 함수 + 통합 테스트 (58 테스트)
- 프론트엔드: Next.js 15 App Router, 13개 페이지 (사용자 6 + 관리자 7)
- 인프라: PostgreSQL 16 + PostGIS, Prisma ORM, Docker Compose, AuditLog + OutboxEvent 패턴
- .env 파일 포함 (로컬 개발 기본값만 포함, 실제 시크릿 없음)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Johngreen
2026-03-07 17:39:56 +09:00
commit 16bd2cb92a
170 changed files with 23628 additions and 0 deletions
+86
View File
@@ -0,0 +1,86 @@
import Link from 'next/link';
export default function HomePage() {
return (
<main className="mx-auto max-w-7xl px-4 py-16">
<div className="text-center">
<h1 className="text-5xl font-bold text-gray-900">Re:Link</h1>
<p className="mt-4 text-xl text-gray-600"> · · </p>
<p className="mt-2 text-gray-500">
1 ··
</p>
<div className="mt-8 flex justify-center gap-4">
<Link
href="/stores"
className="rounded-lg bg-blue-600 px-6 py-3 text-white hover:bg-blue-700"
>
</Link>
<Link
href="/stores/new"
className="rounded-lg border border-gray-300 px-6 py-3 text-gray-700 hover:bg-gray-100"
>
</Link>
</div>
</div>
<div className="mt-20 grid grid-cols-1 gap-8 md:grid-cols-3">
<div className="rounded-xl border border-gray-200 bg-white p-6">
<div className="mb-3 text-2xl">🏪</div>
<h3 className="text-lg font-semibold text-gray-900"></h3>
<p className="mt-2 text-sm text-gray-600">
, , .
</p>
<Link href="/stores/new" className="mt-3 inline-block text-sm text-blue-600 hover:underline">
</Link>
</div>
<div className="rounded-xl border border-gray-200 bg-white p-6">
<div className="mb-3 text-2xl">🔍</div>
<h3 className="text-lg font-semibold text-gray-900"></h3>
<p className="mt-2 text-sm text-gray-600">
.
</p>
<Link href="/stores" className="mt-3 inline-block text-sm text-blue-600 hover:underline">
</Link>
</div>
<div className="rounded-xl border border-gray-200 bg-white p-6">
<div className="mb-3 text-2xl">🏗</div>
<h3 className="text-lg font-semibold text-gray-900">· </h3>
<p className="mt-2 text-sm text-gray-600">
.
</p>
<Link href="/vendors" className="mt-3 inline-block text-sm text-blue-600 hover:underline">
</Link>
</div>
</div>
<div className="mt-16 grid grid-cols-1 gap-8 md:grid-cols-2">
<div className="rounded-xl border border-gray-200 bg-white p-6">
<h3 className="text-lg font-semibold text-gray-900"> </h3>
<p className="mt-2 text-sm text-gray-600">
, .
</p>
<Link href="/subsidies" className="mt-3 inline-block text-sm text-blue-600 hover:underline">
</Link>
</div>
<div className="rounded-xl border border-gray-200 bg-white p-6">
<h3 className="text-lg font-semibold text-gray-900"> </h3>
<p className="mt-2 text-sm text-gray-600">
, , .
</p>
<Link href="/contracts" className="mt-3 inline-block text-sm text-blue-600 hover:underline">
</Link>
</div>
</div>
</main>
);
}