웹 개요 (novato_react · novato.kr)

상위: · 관련: 웹-메뉴트리 · 웹-독립페이지 · 앱-개요 · 아키텍처

한 줄 요약

novato.kr(Netlify)로 접속하는 React PWA. 리그/경기/순위/팀·선수/라운지 등 일반 사용자용 주요 기능 전부가 여기 있고, 방송·스코어보드 같은 특수 페이지는 직접 URL로 진입한다.

기술 스택

  • React 19 + TypeScript, Vite + SWC, Tailwind (class 기반 다크모드)
  • 상태: Zustand(전역 UI) + TanStack Query(서버 상태, localStorage 영속)
  • 라우팅: React Router v7 (클라이언트, 탭 기반)
  • 백엔드: Supabase (PostgreSQL + Realtime)

라우트 구조 (요약)

라우트는 전부 src/App.tsx에 정의. 두 개의 <Routes> 블록:

  • 최상위 Router(App.tsx:725): /announcements* + catch-all *AppContent
  • AppContent 내부(App.tsx:430): 하단 탭 UI 포함 실제 앱 화면 전부

크게 ① 메인 탭으로 도달하는 페이지② 직접 URL로만 가는 독립 페이지로 나뉜다.

메인 탭 (한눈에)

인덱스라벨경로노출
0대시보드/dashboard모바일·데스크톱
1일정/schedule모바일·데스크톱
2순위/ranking모바일·데스크톱
3팀/선수/teams모바일·데스크톱
4라운지/lounge모바일·데스크톱

경기 탭(/records)은 제거됨(PR #32) — 일정 카드/대시보드에서 진입. 업로드 탭(/upload)도 폐기(PR #29). 스탯 입력은 /highlights(유튜브)로 일원화 → 웹-메뉴트리

이벤트 매치 모드: eventLeague 존재 시 상단 ”🎉 이벤트 매치” 토글. 켜면 /schedule로 이동하고 대시보드·순위 탭 진입 차단 (App.tsx:143-170).

정리(삭제) 완료

  • 방송/스코어보드 5종·업로드 페이지 제거 (PR #29) → 웹-독립페이지.
  • 유지 핵심: /broadcast(PRISM), /highlights(유튜브 스탯입력), /stats(DAU), /admin.