Dugout Value
Baseball research on pitching, hitting, and projections, plus tools for comparing players, contracts, and trade value.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證여수한려초등학교 수영부
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
여수한려초등학교 수영부의 선수, 기록, 일정, 활동 자료를 한곳에서 관리하는 웹앱(PWA)입니다. • 운영 주소: https://hallyo.vercel.app • 배포: main 브랜치에 병합되면 Vercel이 자동으로 운영 배포합니다. PR마다 미리보기 배포가 만들어집니다. • Next.js 16 (App Router, Server Actions) · React 19 · TypeScript • Supabase: 로그인(Auth), Postgres DB, Storage(photos 버킷) • Tailwind CSS v4, TanStack Query, react-hook-form + zod, recharts, Leaflet • Sentry (오류 수집), Vercel (배포) ⚠️ 이 프로젝트의 Next.js는 예전 버전과 다른 부분이 있습니다. 예를 들어 미들웨어 대신 src/proxy.ts를 씁니다. 코드를 고치기 전에 node_modules/next/dist/docs/의 문서를 확인하세요. (AGENTS.md 참고) 1. Node.js 20 이상을 준비합니다. 2. 의존성을 설치합니다.檢視完整 README ↗
여수한려초등학교 수영부의 선수, 기록, 일정, 활동 자료를 한곳에서 관리하는 웹앱(PWA)입니다.
main 브랜치에 병합되면 Vercel이 자동으로 운영 배포합니다. PR마다 미리보기 배포가 만들어집니다.
| 분류 | 메뉴 |
|---|---|
| 선수·기록 | 선수 명단, 선수 기록(지역·전국), 기록 분석, 라이벌 비교, 순위 시뮬레이터 |
| 일정 | 대회 일정(지도·숙소·식당·참가자), 훈련 일정 |
| 자료 | 수영 관련 영상, 대회 영상, 활동 사진, 수영부 연혁, 보도 기사, 명예의 전당 |
| 운영 | 공지사항, 상담 일지(관리 권한), 개발 일지, 마이 페이지, 환경 설정(개발자) |
photos 버킷)⚠️ 이 프로젝트의 Next.js는 예전 버전과 다른 부분이 있습니다. 예를 들어 미들웨어 대신
src/proxy.ts를 씁니다. 코드를 고치기 전에node_modules/next/dist/docs/의 문서를 확인하세요. (AGENTS.md참고)
npm ci
.env.example을 복사해 .env.local을 만들고 값을 채웁니다.
값은 Supabase 대시보드 → Project Settings → API 에서 확인할 수 있습니다.
cp .env.example .env.local
npm run dev
| 이름 | 필수 | 설명 |
|---|---|---|
NEXT_PUBLIC_SUPABASE_URL | ✅ | Supabase 프로젝트 URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY | ✅ | Supabase 공개(anon) 키 |
운영 환경의 값은 Vercel 프로젝트 설정 → Environment Variables 에 들어 있습니다.
| 명령 | 설명 |
|---|---|
npm run dev | 개발 서버 |
npm run build | 운영용 빌드 |
npm run start | 빌드한 앱 실행 |
npm run lint | 코드 검사 (ESLint) |
npx tsc --noEmit | 타입 검사 |
npm test | 단위 테스트 (Vitest, src/**/*.test.ts) |
…@hallyoswim.com 주소로 Supabase Auth에 등록합니다.pending(승인 대기) 상태가 되고, 관리자가 승인해야 대시보드에 들어갈 수 있습니다. 이 흐름은 src/proxy.ts에서 처리합니다. 승인 확인 결과는 10분 동안 쿠키에 기억해 페이지마다 DB를 조회하지 않습니다(자료 접근은 DB 권한 규칙이 따로 막음).admin(관리자), developer(개발자), coach(지도자), athlete(선수), parents(학부모), guest(일반인)
/dashboard/explore. 선수 기록(우리 선수·전국), 기록 분석, 라이벌 비교, 순위 시뮬레이터, 대회 일정(이름·날짜·장소만), 수영 관련 영상, 연혁, 보도 기사, 명예의 전당, 전체 공개 공지, 개발 일지만 볼 수 있습니다. 비회원에게 보이는 선수 정보는 이름·성별·학년뿐이고, 지도자가 고친 분석 문구는 회원 전용입니다. 공개 화면 목록은 src/lib/guest.ts, DB 권한은 schema.sql 11·12번에 있습니다./storage/photos/... 경로(로그인 확인 후 전달)로 보여 줍니다.src/
app/
actions/ Server Actions (DB 쓰기와 권한 확인)
dashboard/ 로그인 후 화면 (메뉴별 폴더)
login/ signup/ pending/
components/ 공용 컴포넌트
data/ 퀴즈·에세이·편지·시 등 고정 콘텐츠
utils/supabase/ Supabase 클라이언트 (서버용 / 브라우저용)
proxy.ts 로그인·승인 여부에 따른 페이지 이동
supabase/
schema.sql DB 스키마 (운영 DB 에서 뽑은 실제 구조)
inspect_schema.sql 운영 DB 실제 구조 확인용 쿼리
manual/ SQL Editor 에서 직접 실행해야 하는 변경
scripts/ 데이터 일괄 등록 등 일회성 스크립트 (앱 빌드와 무관)
public/ 로고, 글꼴, 공유 이미지, 서비스워커
supabase/schema.sql은 운영 DB에서 직접 뽑아 정리한 실제 구조입니다(테이블 18개, 권한 규칙, 함수). 운영 DB에 그대로 실행하지 마세요. DB를 바꾸면 이 파일도 함께 고쳐 주세요.athletes에 컬럼을 추가하면 schema.sql 7번의 grant와 src/lib/athletes.ts의 ATHLETE_COLUMNS에도 넣어야 합니다.supabase/inspect_schema.sql을 실행해 확인할 수 있습니다.is_deleted = true로 표시만 합니다(soft delete). 단, 글에 붙은 사진 파일은 글을 지울 때 저장소에서도 지웁니다. 남은 파일은 환경 설정 → 사진 저장소 정리로 지울 수 있습니다.audit_logs 테이블에 남습니다.© 2026 엽쌤 · 달디단