make app name and purpose machine-readable on the landing page
CI/CD / test (push) Successful in 45s
CI/CD / deploy (push) Successful in 1m29s

Google OAuth branding review rejected the app twice with "no description of
the app purpose on the homepage" and "app name does not match the homepage",
even though both were present in Korean. Two likely causes, both addressed:

- The h1 wrapped an alt="" logo image before the text, so the app name could
  not be extracted from it. The image now sits outside the h1, leaving the
  heading as plain text.
- The page was Korean-only. The app name is now "해빗랩 (HabitLab)" (matching
  the console exactly), and the title, meta description and a new About
  section carry an English description of the app purpose and its use of
  Google account data.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-10 18:29:42 +09:00
co-authored by Claude Opus 5
parent ad5a1c834c
commit 0e8688c25b
3 changed files with 38 additions and 7 deletions
+9 -2
View File
@@ -1136,18 +1136,25 @@ label {
text-align: center; text-align: center;
} }
/* 앱 이름을 담은 h1 — 시각적으로 작은 브랜드 라벨이지만 문서 구조상 최상위 제목이다. */ /* 로고 + 앱 이름 h1 묶음. h1은 시각적으로 작은 브랜드 라벨이지만 문서 구조상 최상위 제목이다. */
.landing-brand { .landing-brand {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 8px; gap: 8px;
margin: 0;
font-size: 15px; font-size: 15px;
font-weight: 700; font-weight: 700;
color: var(--color-accent); color: var(--color-accent);
letter-spacing: -0.01em; letter-spacing: -0.01em;
} }
.landing-brand h1 {
margin: 0;
font-size: inherit;
font-weight: inherit;
color: inherit;
letter-spacing: inherit;
}
.landing-brand img { .landing-brand img {
width: 24px; width: 24px;
height: 24px; height: 24px;
+1 -1
View File
@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" /> <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>{% block title %}해빗랩{% endblock %}</title> <title>{% block title %}해빗랩{% endblock %}</title>
{# 구글 OAuth 브랜딩 심사는 홈페이지에서 앱 이름과 목적을 확인한다 — 설명 메타 태그가 없으면 "앱의 목적에 관한 설명이 없다"로 반려된다. #} {# 구글 OAuth 브랜딩 심사는 홈페이지에서 앱 이름과 목적을 확인한다 — 설명 메타 태그가 없으면 "앱의 목적에 관한 설명이 없다"로 반려된다. #}
<meta name="description" content="{% block meta_description %}해빗랩은 만들고 싶은 습관과 끊고 싶은 습관을 요일 단위로 관리하는 습관 기록 앱입니다.{% endblock %}" /> <meta name="description" content="{% block meta_description %}HabitLab (해빗랩) is a habit tracking web app. 해빗랩은 만들고 싶은 습관과 끊고 싶은 습관을 요일 단위로 관리하는 습관 기록 앱입니다.{% endblock %}" />
<link rel="manifest" href="/static/manifest.json" /> <link rel="manifest" href="/static/manifest.json" />
<meta name="theme-color" content="#d97757" media="(prefers-color-scheme: light)" /> <meta name="theme-color" content="#d97757" media="(prefers-color-scheme: light)" />
+28 -4
View File
@@ -1,11 +1,15 @@
{% extends "base.html" %} {% extends "base.html" %}
{% block title %}해빗랩 · 습관이 만들어지는 진짜 시간{% endblock %} {% block title %}해빗랩 (HabitLab) · 습관이 만들어지는 진짜 시간{% endblock %}
{% block meta_description %}해빗랩은 만들고 싶은 습관과 끊고 싶은 습관을 요일 단위로 관리하는 습관 기록 앱입니다. 요일별 습관 등록과 데일리 체크, 월별·주별 기록과 완료율·연속 달성일 통계, 설정한 시각의 습관 알림, 하루를 남기는 일기를 제공합니다.{% endblock %} {% block meta_description %}HabitLab (해빗랩) is a habit tracking web app for building good habits and quitting bad ones on a weekly schedule. 해빗랩은 만들고 싶은 습관과 끊고 싶은 습관을 요일 단위로 관리하는 습관 기록 앱입니다. 요일별 습관 등록과 데일리 체크, 월별·주별 기록과 완료율·연속 달성일 통계, 설정한 시각의 습관 알림, 하루를 남기는 일기를 제공합니다.{% endblock %}
{% block content %} {% block content %}
<div class="landing"> <div class="landing">
<div class="landing-hero"> <div class="landing-hero">
{# h1은 반드시 앱 이름이어야 한다 — 구글 브랜딩 심사가 OAuth 동의 화면의 앱 이름과 홈페이지 이름의 일치를 확인한다. #} {# 앱 이름은 h1의 순수 텍스트여야 한다 — 구글 브랜딩 심사가 OAuth 동의 화면의 앱 이름과 홈페이지 h1을 대조하는데,
<h1 class="landing-brand"><img src="/static/icons/icon-192.png" alt="" /> 해빗랩</h1> h1 안에 alt="" 이미지가 섞여 있으면 이름을 추출하지 못한다. 로고는 h1 바깥에 둔다. #}
<div class="landing-brand">
<img src="/static/icons/icon-192.png" alt="" />
<h1>해빗랩 (HabitLab)</h1>
</div>
<p class="landing-hero-title">습관이 만들어지는<br />진짜 시간</p> <p class="landing-hero-title">습관이 만들어지는<br />진짜 시간</p>
<p class="landing-tagline">21일의 법칙 대신, 습관마다 다른 진짜 목표 기간을 알려드려요</p> <p class="landing-tagline">21일의 법칙 대신, 습관마다 다른 진짜 목표 기간을 알려드려요</p>
@@ -84,5 +88,25 @@
문의: <a href="mailto:shinalok357@gmail.com">shinalok357@gmail.com</a> 문의: <a href="mailto:shinalok357@gmail.com">shinalok357@gmail.com</a>
</p> </p>
</div> </div>
{# 영문 요약 — 구글 브랜딩 심사의 자동 검사가 한글만으로는 앱 목적을 인식하지 못하는 것으로 보여 병기한다. #}
<div class="landing-section" lang="en">
<h2>About HabitLab (해빗랩)</h2>
<p class="landing-note">
<strong>HabitLab (해빗랩)</strong> is a personal habit tracking web app. It helps you build the habits
you want and quit the ones you don't, on a per-weekday schedule.
</p>
<p class="landing-note">
You can register habits for specific days of the week with a target period based on published research
(Lally et al., 2010, UCL), check them off daily, review your history on monthly and weekly views with
completion rates and streaks, receive browser push reminders at a time you choose, and keep a journal.
</p>
<p class="landing-note">
HabitLab uses Google Sign-In. It receives only your name, email address, and profile picture from Google
to identify your account, and does not access Gmail, Drive, Calendar, or any other Google service data.
See our <a href="/privacy">Privacy Policy</a> and <a href="/terms">Terms of Service</a>.
Contact: <a href="mailto:shinalok357@gmail.com">shinalok357@gmail.com</a>
</p>
</div>
</div> </div>
{% endblock %} {% endblock %}