Repository navigation
v1.0.0 — HanQ 첫 정식 릴리즈
한국과 일본을 잇는 실시간 번역 Q&A 서비스 HanQ의 첫 정식 릴리즈입니다.
서비스 주소: https://han-q.vercel.app
주요 기능
- 질문·답변 자동 번역 — 작성 즉시 DeepL로 번역해 언어별로 저장한다. 조회 시점에 번역하지 않아 읽기 속도에 영향이 없고, 번역 전에는 "번역 중" 배지를, 이후에는 원문/번역 전환 토글을 제공한다.
- ko / ja 다국어 라우팅 — 모든 화면이
/[lang]아래에 있고, 미들웨어가 쿠키 → 접속 국가 → 기본값 순으로 언어를 판별해 해당 경로로 보낸다. - 질문 상호작용 — 좋아요, 답변, 삭제, 알림. 좋아요와 탭 전환은 낙관적 업데이트로 즉시 반영된다.
- 카테고리 — 🇰🇷 한국 · 🇯🇵 일본 · 🎓 취업/유학 · ❤️ 연애 ·
✈️ 여행 · 🍜 음식 · 🎮 취미 · 💬 자유 - Google 로그인 — Firebase Auth + 세션 쿠키. 질문 상세와 프로필은 비로그인에도 공개된다.
- PWA — manifest와 아이콘을 제공해 홈 화면에 설치할 수 있다.
SEO / GEO
sitemap.xml,robots.txt,llms.txt,ads.txt- 질문 상세에
QAPage구조화 데이터, 동적 OG 이미지 생성 hreflang+x-default링크, 검색엔진 사이트 소유 확인- 로그인 전용 화면은 색인에서 제외
기술적으로 신경 쓴 것
- 태그 기반 캐싱 — 시간(
revalidate)이 아니라 캐시 태그(questions,question:{id},answers:{id},users)로 무효화한다. 변경이 없으면 캐시가 계속 유효하고, 변경 즉시 반영된다. - 서버 컴포넌트 우선 — 데이터 조회는 서버에서,
'use client'는 상호작용이 필요한 잎사귀로 밀어냈다. 폼 제출은 Server Actions. - 로딩·에러 상태 — 라우트별
loading.tsx스켈레톤,error.tsx/global-error.tsx에러 바운더리. 에러는 코드로 반환되어 사용자 언어 문구로 변환된다.
스택
Next.js 16 (App Router) · TypeScript · Tailwind CSS v4 · Firebase (Firestore / Auth / Storage) · DeepL API · Vercel