refactor: redesign homepage for clarity and SEO focus
TaxBaik CI/CD / build-and-deploy (push) Successful in 1m48s

Replace bloated multi-section layout with streamlined structure:
- Remove online-trust, About, customer-type sections from homepage
- Restore 3-service-group simplicity (business-tax, real-estate-tax, family-asset)
- Elevate blog section for SEO priority (post homepage hero)
- Move full About content to dedicated /about page (linked from hero banner)
- Replace customer-type segmentation with blog category tagging

Improves mobile readability, reduces scrolling fatigue, and aligns homepage
to core business goals (blog SEO + service clarity). About page now hosts
the full story with expertise details.
This commit is contained in:
2026-07-01 15:55:19 +09:00
parent 127490906b
commit 8bea85df96
3 changed files with 235 additions and 492 deletions
+116 -255
View File
@@ -103,79 +103,14 @@ else
</section>
}
<!-- 온라인 신뢰 바 -->
<section class="online-trust-bar">
<!-- About 링크 배너 -->
<section class="py-3" style="background: rgba(46, 92, 78, 0.05); border-bottom: 1px solid rgba(46, 92, 78, 0.1);">
<div class="container">
<div class="row g-3 g-md-4 justify-content-center text-center">
<div class="col-6 col-md-3">
<span class="online-trust-icon">💻</span>
<span class="online-trust-text">전국 비대면 온라인 상담</span>
</div>
<div class="col-6 col-md-3">
<span class="online-trust-icon">💬</span>
<span class="online-trust-text">카카오 당일 응답</span>
</div>
<div class="col-6 col-md-3">
<span class="online-trust-icon">📂</span>
<span class="online-trust-text">자료 공유 후 온라인 검토</span>
</div>
<div class="col-6 col-md-3">
<span class="online-trust-icon">✅</span>
<span class="online-trust-text">방문 없이 신고·기장 가능</span>
</div>
</div>
</div>
</section>
<!-- About — 세무사 소개 및 자격 시너지 -->
<section class="py-5">
<div class="container">
<div class="row g-4 g-lg-5 align-items-stretch">
<div class="col-lg-5">
<div class="about-bio-card h-100">
<div class="about-eyebrow">About</div>
<h2 class="about-bio-title">안녕하세요,<br/>백원숙 세무사입니다.</h2>
<p class="about-bio-text">세무사 자격과 함께 부동산중개사, 보험설계사 자격을 보유하고 있습니다. 사업자 세무, 종합소득세, 부가가치세, 양도세, 증여·상속 상담을 중심으로 온라인 상담을 진행합니다.</p>
<p class="about-bio-text">작게 시작하는 대표님의 막막함을 잘 알고 있습니다. 처음 상담부터 끝까지 같은 눈높이에서 함께합니다.</p>
<div class="about-bio-stats">
<div>
<div class="about-stat-label">세무사 자격 취득</div>
<div class="about-stat-value">2015년</div>
</div>
<div>
<div class="about-stat-label">상담 방식</div>
<div class="about-stat-value">전국 비대면</div>
</div>
</div>
</div>
</div>
<div class="col-lg-7">
<div class="about-eyebrow">Expertise</div>
<h2 class="about-expertise-title">세 가지 자격의 시너지</h2>
<div class="d-flex flex-column gap-3 mt-4">
<div class="expertise-item d-flex gap-3">
<div class="expertise-icon">⚖️</div>
<div>
<div class="expertise-title">공인 세무사</div>
<p class="expertise-desc mb-0">세무신고·장부관리·조세 자문 등 세무 업무 전반을 공식 대리합니다.</p>
</div>
</div>
<div class="expertise-item d-flex gap-3">
<div class="expertise-icon">🏠</div>
<div>
<div class="expertise-title">공인 부동산중개사</div>
<p class="expertise-desc mb-0">부동산 거래 구조를 이해해 양도·증여·임대 세무상담에 현실감을 더합니다.</p>
</div>
</div>
<div class="expertise-item d-flex gap-3">
<div class="expertise-icon">🛡️</div>
<div>
<div class="expertise-title">보험설계사 자격</div>
<p class="expertise-desc mb-0">상속·증여·대표자 리스크 관점에서 가족 현금흐름과 보험 구조를 함께 설명합니다.</p>
</div>
</div>
</div>
<div class="d-flex justify-content-between align-items-center gap-3 flex-wrap">
<div>
<p class="mb-0 small text-muted">세무사의 경력, 자격, 상담 철학을 알아보세요</p>
</div>
<a href="/taxbaik/about" class="btn btn-sm btn-outline-primary">백원숙 세무사 소개 →</a>
</div>
</div>
</section>
@@ -192,137 +127,142 @@ else
@{
var focusService = season?.FocusService ?? "";
// 시즌에 따라 서비스 카드 그룹 순서 결정: 시즌 관련 그룹이 맨 앞
var groupOrder = focusService switch
// 시즌에 따라 서비스 카드 순서 결정
var cardOrder = focusService switch
{
"real-estate-tax" => new[] { "real-estate-tax", "business-tax", "family-asset" },
"family-asset" => new[] { "family-asset", "business-tax", "real-estate-tax" },
_ => new[] { "business-tax", "real-estate-tax", "family-asset" }
};
var serviceCardsByGroup = new Dictionary<string, (string Icon, string Tag, string Title, string Desc, string Target)[]>
{
["business-tax"] = new[]
{
("📊", "기장 서비스", "월 기장 관리", "장부 작성, 부가세, 원천세, 인건비, 예상세액까지 — 매월 세금 리스크를 함께 점검합니다.", "매출 발생 사업자"),
("📋", "소득세", "종합소득세 신고", "사업자, 프리랜서, 보험설계사, 부동산중개사의 소득 유형에 맞는 경비처리와 신고를 안내합니다.", "개인사업자·프리랜서·영업직"),
("🌱", "첫 세무", "신규 사업자 세무정리", "사업자 유형 확인, 부가세·종소세·증빙관리·세금계좌 분리까지. 처음 사업을 시작하는 대표님을 위한 패키지.", "신규 사업자·프리랜서"),
},
["real-estate-tax"] = new[]
{
("🏡", "부동산 세무", "양도세 사전진단", "계약 전 보유기간·비과세 여부·필요경비·장기보유특별공제를 검토합니다. 계약 전 상담이 선택지를 넓힙니다.", "부동산 매도 예정자"),
},
["family-asset"] = new[]
{
("👨‍👩‍👧", "자산이전", "증여·상속 상담", "증여 시기, 증여재산 평가, 세부담, 자금출처, 보험 활용 가능성까지 — 가족 자산이전을 사전에 설계합니다.", "자산이전 예정 가족"),
},
};
}
<div class="row g-4">
@foreach (var groupKey in groupOrder)
@foreach (var cardKey in cardOrder)
{
var isFeaturedGroup = groupKey == focusService;
var cards = serviceCardsByGroup[groupKey];
for (var i = 0; i < cards.Length; i++)
var isFeatured = cardKey == focusService;
if (cardKey == "business-tax")
{
var c = cards[i];
<div class="col-lg-4 col-md-6">
<div class="card service-card h-100 @(isFeaturedGroup ? "service-card--featured" : "")">
@if (isFeaturedGroup && i == 0) { <div class="service-card-badge">현재 시즌</div> }
<div class="service-icon">@c.Icon</div>
<div class="card service-card h-100 @(isFeatured ? "service-card--featured" : "")">
@if (isFeatured) { <div class="service-card-badge">현재 시즌</div> }
<div class="service-icon">📊</div>
<div class="card-body pt-0">
<div class="service-card-tag">@c.Tag</div>
<h3 class="card-title">@c.Title</h3>
<p class="text-muted small">@c.Desc</p>
<div class="service-card-target">대상: @c.Target</div>
<a href="/taxbaik/services#@groupKey" class="btn btn-sm btn-outline-primary mt-3">자세히 보기</a>
<h3 class="card-title">사업자 세무</h3>
<p class="text-muted small">월 기장부터 종합소득세, 신규 사업자 세무까지 — 사업 초기부터 체계적인 세무 관리.</p>
<a href="/taxbaik/services#business-tax" class="btn btn-sm btn-outline-primary mt-3">자세히 보기</a>
</div>
</div>
</div>
}
else if (cardKey == "real-estate-tax")
{
<div class="col-lg-4 col-md-6">
<div class="card service-card h-100 @(isFeatured ? "service-card--featured" : "")">
@if (isFeatured) { <div class="service-card-badge">현재 시즌</div> }
<div class="service-icon">🏠</div>
<div class="card-body pt-0">
<h3 class="card-title">부동산 세금</h3>
<p class="text-muted small">양도세·취득세·임대소득세 — 부동산 거래 시 세금 부담을 줄이는 전략.</p>
<a href="/taxbaik/services#real-estate-tax" class="btn btn-sm btn-outline-primary mt-3">자세히 보기</a>
</div>
</div>
</div>
}
else
{
<div class="col-lg-4 col-md-6">
<div class="card service-card h-100 @(isFeatured ? "service-card--featured" : "")">
@if (isFeatured) { <div class="service-card-badge">현재 시즌</div> }
<div class="service-icon">👨‍👩‍👧‍👦</div>
<div class="card-body pt-0">
<h3 class="card-title">가족자산 관리</h3>
<p class="text-muted small">증여·상속 사전 계획부터 대표자 리스크 관리까지 — 가족 자산을 지키는 전략.</p>
<a href="/taxbaik/services#family-asset" class="btn btn-sm btn-outline-primary mt-3">자세히 보기</a>
</div>
</div>
</div>
}
}
<div class="col-lg-4 col-md-6">
<div class="card service-card service-card--cta h-100">
<div class="card-body pt-0 d-flex flex-column justify-content-between h-100">
<div>
<div class="service-card-tag" style="color: var(--color-primary);">상담 안내</div>
<h3 class="card-title" style="color: white;">어떤 세금이<br/>걱정이신가요?</h3>
<p class="small" style="color: rgba(255,255,255,0.65);">
세금은 계약·매출·명의·자금 이동 전에 검토할수록 선택지가 많습니다.
</p>
</div>
<a href="javascript:void(0);" onclick="openKakao()" class="btn btn-warning mt-3">카카오로 문의하기 →</a>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- 고객유형 -->
<section class="py-5 customer-type-section">
<!-- 블로그 & 시즌 포스트 (상단으로 올림) -->
<section class="py-5">
<div class="container">
<div class="text-center mb-5">
<h2 class="section-title" style="color: white;">전국 어디서나, 온라인으로 시작하세요</h2>
<p class="fs-6" style="color: rgba(255,255,255,0.6); max-width: 560px; margin: 0 auto;">
방문 없이 카카오·이메일로 상담부터 신고까지 — 온라인 사업자에게 최적화된 세무관리.
</p>
@if (season != null)
{
<div class="seasonal-blog-header mb-2">
<span class="seasonal-blog-tag">📅 @season.Name 시즌</span>
</div>
<h2 class="section-title">이번 시즌 세무 정보</h2>
<p class="text-muted">@season.Name 관련 절세 팁과 신고 가이드를 확인하세요</p>
}
else
{
<h2 class="section-title">세무 정보 & 절세 팁</h2>
<p class="text-muted">최신 세법 변화와 실무 팁을 공유합니다</p>
}
</div>
<div class="row g-3 g-md-4">
<div class="col-md-6">
<div class="customer-type-card customer-type-card--primary h-100">
<div class="mb-3" style="font-size: 1.8rem;">💻</div>
<div class="customer-type-tag">온라인 사업자</div>
<h3 class="customer-type-title">스마트스토어 · 크리에이터 · 프리랜서</h3>
<p class="customer-type-desc">스마트스토어·쿠팡마켓·유튜버·인스타셀러·크몽 프리랜서 — 플랫폼 정산 구조와 부가세·종소세 경비처리를 체계적으로 관리합니다. 전국 어디서나 비대면 상담 가능합니다.</p>
<div class="d-flex flex-wrap gap-2 mt-3">
<span class="customer-type-pill">스마트스토어</span>
<span class="customer-type-pill">크리에이터</span>
<span class="customer-type-pill">비대면 상담</span>
</div>
</div>
@{
var hasSeasonalPosts = Model.SeasonalPosts?.Count > 0;
var hasRecentPosts = Model.RecentPosts?.Count > 0;
}
@if (hasSeasonalPosts || hasRecentPosts)
{
<div class="row g-4">
@* 시즌 관련 글 (배지 강조) *@
@if (hasSeasonalPosts)
{
@foreach (var post in Model.SeasonalPosts!)
{
<div class="col-lg-4 col-md-6">
<div class="card blog-card h-100 blog-card--seasonal">
<div class="blog-seasonal-ribbon">이번 시즌 추천</div>
<div class="blog-placeholder">🗓️</div>
<div class="card-body">
<small class="badge bg-season-badge">@post.CategoryName</small>
<h4 class="card-title mt-3">@post.Title</h4>
<p class="text-muted small">@((post.PublishedAt ?? post.CreatedAt).ToString("yyyy년 MM월 dd일"))</p>
<a href="/taxbaik/blog/@post.Slug" class="btn btn-sm btn-seasonal">읽기</a>
</div>
</div>
</div>
}
}
@* 최신 글 (나머지 채우기) *@
@if (hasRecentPosts)
{
@foreach (var post in Model.RecentPosts!)
{
<div class="col-lg-4 col-md-6">
<div class="card blog-card h-100">
<div class="blog-placeholder">📝</div>
<div class="card-body">
<small class="badge bg-primary-badge">@post.CategoryName</small>
<h4 class="card-title mt-3">@post.Title</h4>
<p class="text-muted small">@((post.PublishedAt ?? post.CreatedAt).ToString("yyyy년 MM월 dd일"))</p>
<a href="/taxbaik/blog/@post.Slug" class="btn btn-sm btn-primary">읽기</a>
</div>
</div>
</div>
}
}
</div>
<div class="col-md-6">
<div class="customer-type-card h-100">
<div class="mb-3" style="font-size: 1.8rem;">💼</div>
<div class="customer-type-tag">영업직·독립사업자</div>
<h3 class="customer-type-title">보험설계사 · 부동산중개사 · 영업직</h3>
<p class="customer-type-desc">소득 변동이 크고 경비처리 기준이 애매한 분들. 업계 구조를 직접 경험한 세무사로서 종소세·경비처리·세금 예측을 온라인으로 관리합니다.</p>
<div class="d-flex flex-wrap gap-2 mt-3">
<span class="customer-type-pill">종합소득세</span>
<span class="customer-type-pill">경비처리</span>
<span class="customer-type-pill">세금 예측</span>
</div>
</div>
<div class="text-center mt-5 d-flex justify-content-center gap-3 flex-wrap">
@if (season != null && !string.IsNullOrEmpty(season.RelatedCategorySlug))
{
<a href="/taxbaik/blog?category=@season.RelatedCategorySlug" class="btn btn-outline-secondary btn-lg">
📅 @season.Name 전체 글 보기
</a>
}
<a href="/taxbaik/blog" class="btn btn-outline-primary btn-lg">전체 블로그 보기</a>
</div>
<div class="col-md-6">
<div class="customer-type-card h-100">
<div class="mb-3" style="font-size: 1.8rem;">🏘️</div>
<div class="customer-type-tag">부동산 자산이전</div>
<h3 class="customer-type-title">부동산 매도 · 증여 · 상속 예정자</h3>
<p class="customer-type-desc">계약 전 양도세 사전검토, 증여·상속 사전설계, 임대사업자 세무관리. 자료 공유 후 온라인 검토로 계약 전 선택지를 최대화합니다.</p>
<div class="d-flex flex-wrap gap-2 mt-3">
<span class="customer-type-pill">양도세 검토</span>
<span class="customer-type-pill">증여·상속</span>
<span class="customer-type-pill">임대사업자</span>
</div>
</div>
</div>
<div class="col-md-6">
<div class="customer-type-card h-100">
<div class="mb-3" style="font-size: 1.8rem;">🔑</div>
<div class="customer-type-tag">임대·자산관리</div>
<h3 class="customer-type-title">임대사업자 · 상가 보유자</h3>
<p class="customer-type-desc">주택·상가·오피스텔 임대 소득의 종합소득세, 부가가치세, 양도 시점 세무까지 — 보유부터 매도까지 단계별로 관리합니다.</p>
<div class="d-flex flex-wrap gap-2 mt-3">
<span class="customer-type-pill">임대소득세</span>
<span class="customer-type-pill">상가·오피스텔</span>
<span class="customer-type-pill">매도 세무</span>
</div>
</div>
</div>
</div>
}
</div>
</section>
@@ -371,85 +311,6 @@ else
</div>
</section>
<!-- 세무 정보 블로그 -->
<section class="py-5">
<div class="container">
<div class="text-center mb-5">
@if (season != null)
{
<div class="seasonal-blog-header mb-2">
<span class="seasonal-blog-tag">📅 @season.Name 시즌</span>
</div>
<h2 class="section-title">이번 시즌 세무 정보</h2>
<p class="text-muted">@season.Name 관련 절세 팁과 신고 가이드를 확인하세요</p>
}
else
{
<h2 class="section-title">세무 정보</h2>
<p class="text-muted">최신 세법 변화와 실무 팁을 공유합니다</p>
}
</div>
@{
var hasSeasonalPosts = Model.SeasonalPosts?.Count > 0;
var hasRecentPosts = Model.RecentPosts?.Count > 0;
}
@if (hasSeasonalPosts || hasRecentPosts)
{
<div class="row g-4">
@* 시즌 관련 글 (배지 강조) *@
@if (hasSeasonalPosts)
{
@foreach (var post in Model.SeasonalPosts!)
{
<div class="col-lg-4 col-md-6">
<div class="card blog-card h-100 blog-card--seasonal">
<div class="blog-seasonal-ribbon">이번 시즌 추천</div>
<div class="blog-placeholder">🗓️</div>
<div class="card-body">
<small class="badge bg-season-badge">@post.CategoryName</small>
<h4 class="card-title mt-3">@post.Title</h4>
<p class="text-muted small">@((post.PublishedAt ?? post.CreatedAt).ToString("yyyy년 MM월 dd일"))</p>
<a href="/taxbaik/blog/@post.Slug" class="btn btn-sm btn-seasonal">자세히 보기</a>
</div>
</div>
</div>
}
}
@* 최신 글 (나머지 채우기) *@
@if (hasRecentPosts)
{
@foreach (var post in Model.RecentPosts!)
{
<div class="col-lg-4 col-md-6">
<div class="card blog-card h-100">
<div class="blog-placeholder">📝</div>
<div class="card-body">
<small class="badge bg-primary-badge">@post.CategoryName</small>
<h4 class="card-title mt-3">@post.Title</h4>
<p class="text-muted small">@((post.PublishedAt ?? post.CreatedAt).ToString("yyyy년 MM월 dd일"))</p>
<a href="/taxbaik/blog/@post.Slug" class="btn btn-sm btn-primary">글 내용 보기</a>
</div>
</div>
</div>
}
}
</div>
<div class="text-center mt-5 d-flex justify-content-center gap-3 flex-wrap">
@if (season != null && !string.IsNullOrEmpty(season.RelatedCategorySlug))
{
<a href="/taxbaik/blog?category=@season.RelatedCategorySlug" class="btn btn-outline-seasonal btn-lg">
📅 @season.Name 전체 글 보기
</a>
}
<a href="/taxbaik/blog" class="btn btn-outline-primary btn-lg">전체 블로그 보기</a>
</div>
}
</div>
</section>
<!-- 자주 묻는 질문 (DB 연동) -->
@if (Model.ActiveFaqs.Count > 0)
{