웹 개요 (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.