Go to file
hehihoho3@gmail.com 9828918b97 style: dedupe to shared components (publish badge, filter selects, gap token)
- publish.html: status column uses shared .badge (badge-muted/warning/
  success) instead of its own .st-badge inline-color span
- collection.html / discover.html: drop .filter-sel rules now that the
  shared `select` styling covers them (row-sel kept for compact inline)
- style.css: .gap-2 uses var(--space-2) for token consistency

No behavior change; follow-up cleanup from the design-uplift review.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-31 10:45:15 +09:00
.claude docs: add dashboard full-set enhancement spec 2026-05-30 22:02:10 +09:00
.playwright-mcp Baseline before video model consolidation 2026-05-30 18:56:21 +09:00
docs/superpowers docs: add all-pages design uplift implementation plan 2026-05-31 00:25:53 +09:00
gradle/wrapper Baseline before video model consolidation 2026-05-30 18:56:21 +09:00
src/main style: dedupe to shared components (publish badge, filter selects, gap token) 2026-05-31 10:45:15 +09:00
.gitignore Baseline before video model consolidation 2026-05-30 18:56:21 +09:00
build_log_final.txt Baseline before video model consolidation 2026-05-30 18:56:21 +09:00
build_log.txt Baseline before video model consolidation 2026-05-30 18:56:21 +09:00
build.gradle Baseline before video model consolidation 2026-05-30 18:56:21 +09:00
CLAUDE.md docs: update CLAUDE.md for ChannelVideo single-master architecture 2026-05-30 19:59:38 +09:00
gradlew Baseline before video model consolidation 2026-05-30 18:56:21 +09:00
gradlew.bat Baseline before video model consolidation 2026-05-30 18:56:21 +09:00
README.md Baseline before video model consolidation 2026-05-30 18:56:21 +09:00
settings.gradle Baseline before video model consolidation 2026-05-30 18:56:21 +09:00

h-lab

유튜브 데이터를 수집하고 분석하는 개인용 웹 서비스입니다. Spring Boot 4.x(3.4.0) 기반의 백엔드와 React + Vite 기반의 프론트엔드로 구성되어 있습니다.

🛠 Tech Stack

Backend

  • Framework: Spring Boot 3.4.0 (Java 21)
  • Database: H2 (Development), JPA
  • API Docs: Swagger UI (SpringDoc)
  • Architecture: Domain-Driven Design style

Frontend

  • Framework: React 18 (Vite)
  • Language: TypeScript
  • Styling: Vanilla CSS + CSS Variables (Dark Mode)
  • State: Zustand
  • Charts: Recharts

🚀 How to Run

Backend & Frontend (Integrated)

  1. backend 디렉토리로 이동
  2. ./gradlew bootRun 실행 (Windows: gradlew bootRun)
  3. 웹 서비스 접속: http://localhost:8080
    • 메인 대시보드: http://localhost:8080/
    • 채널 관리: http://localhost:8080/channels
    • Swagger UI: http://localhost:8080/swagger-ui.html

Frontend (Legacy React)

Removed in favor of Thymeleaf Server-Side Rendering

📂 Project Structure

h-lab/
├── src/main/java/com/hlab/yanalyst/
│   ├── domain/        # Domain Entities (Video, Channel...)
│   └── web/           # Web Controllers (Thymeleaf)
│
└── src/main/resources/
    ├── static/        # CSS, JS
    └── templates/     # HTML Templates (Thymeleaf)

Key Features

  • Dashboard: 전체 데이터 요약 및 시각화 (Charts)
  • Channel Management: 분석 대상 유튜브 채널 관리
  • Dark Mode: 눈이 편안한 프리미엄 다크 모드 UI