Skip to content

v1.0.0 — HanQ 첫 정식 릴리즈

Choose a tag to compare

@Lunas322 Lunas322 released this 17 Aug 20:00
· 50 commits to main since this release
2f22201

한국과 일본을 잇는 실시간 번역 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