구현: W3 공개 홈페이지 (Razor Pages SSR)

공개 사이트 (port 5001):
- Program.cs: AddRazorPages, AddInfrastructure, AddApplication, UsePathBase("/taxbaik")
- appsettings.json: PostgreSQL 연결 문자열

레이아웃 및 공통 컴포넌트:
- _Layout.cshtml: Bootstrap 5, Noto Sans KR, OG 메타 태그, 모바일 고정 CTA 바
- _Header.cshtml: sticky navbar, 로고, 네비게이션 링크, 상담신청 버튼
- _Footer.cshtml: 사업자정보, 연락처, KakaoTalk, 저작권
- _ViewImports.cshtml, _ViewStart.cshtml
- site.css: CSS 변수 (--color-primary, --color-cta 등), 반응형 스타일
- site.js: 모바일 CTA 바 제어, sticky 헤더 효과

페이지 구현:
1. Index.cshtml (메인 랜딩): Hero, 신뢰도 strip, 서비스 카드, 최근 블로그
2. Services.cshtml (서비스): 4개 서비스 소개, 상담료 안내
3. About.cshtml (소개): 세무사 프로필, 3개 자격증, 서비스 철학
4. Contact.cshtml (상담신청): 폼 (이름, 전화, 이메일, 분야, 문의), ValidationException 처리
5. Blog/Index.cshtml (블로그 목록): 카테고리 필터 탭, 12개 그리드, 페이지네이션
6. Blog/Post.cshtml (포스트 상세): 브레드크럼, 제목, 메타정보, 콘텐츠, CTA, 공유 버튼

SEO:
- robots.txt: /taxbaik 허용, /admin 차단, sitemap 링크
- Sitemap.cshtml: 동적 생성 (정적 페이지 + 모든 포스트)

기술:
- Dapper 기반 DB 접근
- 페이징: 12개/페이지
- 한국어 입력값 검증

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-06-26 15:10:39 +09:00
parent 06792e4e0f
commit 6a37cfead4
22 changed files with 862 additions and 1 deletions
+34
View File
@@ -0,0 +1,34 @@
<footer class="bg-light border-top mt-5 py-4">
<div class="container">
<div class="row g-4">
<div class="col-md-4">
<h6 class="fw-bold">백원숙 세무회계</h6>
<p class="small text-muted">
사업자 기장, 부동산 양도세·증여세,<br />
종합소득세 전문 상담
</p>
</div>
<div class="col-md-4">
<h6 class="fw-bold">연락처</h6>
<p class="small">
📞 <a href="tel:010-0000-0000" class="text-decoration-none">010-0000-0000</a><br />
📧 <a href="mailto:info@example.com" class="text-decoration-none">info@example.com</a>
</p>
</div>
<div class="col-md-4">
<h6 class="fw-bold">카카오톡</h6>
<p class="small">
<a href="javascript:void(0);" class="btn btn-sm btn-warning" onclick="openKakao()">
카카오톡 채널
</a>
</p>
</div>
</div>
<hr class="my-3" />
<div class="text-center small text-muted">
<p>© 2026 백원숙 세무회계. All rights reserved.</p>
<a href="/taxbaik/privacy" class="text-decoration-none text-muted me-2">개인정보처리방침</a>
<a href="/taxbaik/terms" class="text-decoration-none text-muted">이용약관</a>
</div>
</div>
</footer>
+34
View File
@@ -0,0 +1,34 @@
<header class="sticky-top bg-white border-bottom">
<nav class="navbar navbar-expand-lg navbar-light container-fluid px-3">
<a class="navbar-brand fw-bold" href="/taxbaik">
<span class="text-primary">백원숙</span> 세무회계
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto gap-2">
<li class="nav-item">
<a class="nav-link" href="/taxbaik">홈</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/taxbaik/about">소개</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/taxbaik/services">서비스</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/taxbaik/blog">블로그</a>
</li>
<li class="nav-item">
<a class="btn btn-primary btn-sm ms-2" href="/taxbaik/contact">상담신청</a>
</li>
</ul>
</div>
<div class="ms-3 d-none d-md-block">
<a href="tel:010-0000-0000" class="text-decoration-none text-dark fw-500">
📞 상담신청
</a>
</div>
</nav>
</header>
@@ -0,0 +1,3 @@
@using TaxBaik.Web
@namespace TaxBaik.Web.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@@ -0,0 +1,3 @@
@{
Layout = "_Layout";
}