OpenAthlete
AGPLv3 기반 지구력 훈련 플랫폼—EU 호스팅, 투명한 로직, 자체 호스팅·전체 내보내기 지원
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Silicon Valley Judo - Competitor Analysis Dashboard
Multi-coach shared database with auth-protected scouting notes + printable offline tournament-day profiles.
Privacy-first competitor analysis tool for judo coaches. Track athlete development and opponent scouting notes with printable tournament-day profiles. Data is stored in a shared Supabase database with coach authentication required for all access.
• Node.js 18+ and npm
• Git
• A modern web browser
• Supabase account (for deployment)
Create a .env.local file in the project root with your Supabase credentials:README 전문 보기 ↗Multi-coach shared database with auth-protected scouting notes + printable offline tournament-day profiles.
Privacy-first competitor analysis tool for judo coaches. Track athlete development and opponent scouting notes with printable tournament-day profiles. Data is stored in a shared Supabase database with coach authentication required for all access.
# Clone the repository
git clone https://github.com/jfmayeda/judo-comp-analysis.git
cd judo-comp-analysis
# Install dependencies
npm install
# Set up environment variables
cp .env.local.example .env.local
# Edit .env.local and add your Supabase credentials
Create a .env.local file in the project root with your Supabase credentials:
NEXT_PUBLIC_SUPABASE_URL=https://wnwcxousneqhzlkdzeku.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-actual-anon-key-here
NEVER commit .env.local to git. The .gitignore file is configured to exclude it.
Get your credentials from the Supabase project dashboard:
# Start development server
npm run dev
Open http://localhost:3000 to view the app. You'll be redirected to the login page.
# Build for production
npm run build
# Start production server
npm start
npm test # unit tests (node:test via tsx)
npm run smoke # browser smoke suite against a running server (Playwright + local Supabase mock)
npm run screenshots -- --out docs/screenshots/after # 19 scenes × 390/768/1440
The smoke suite and screenshots never touch Supabase: scripts/ui-smoke/supabase-mock.mjs answers the
REST/auth calls in-browser with demo fixtures, so no credentials are needed. Design rules live in
DESIGN.md; the overhaul record is in docs/UX_OVERHAUL_*.md and docs/PORTFOLIO_CASE_STUDY.md.
All data access requires authentication. Coaches must sign in before viewing any athlete or opponent information.
Login methods:
Admin creates coach accounts in Supabase:
Coach signs in:
Load sample data (optional):
This application is built with privacy-first principles:
last_initial as single character (DB constraint)athletesCREATE TABLE athletes (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
first_name TEXT NOT NULL,
last_initial TEXT NOT NULL CHECK (length(last_initial) = 1),
tokui_waza TEXT DEFAULT '',
development_areas TEXT DEFAULT '',
notes TEXT DEFAULT '',
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW(),
created_by UUID NOT NULL REFERENCES auth.users(id)
);
opponent_notesCREATE TABLE opponent_notes (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
athlete_id UUID NOT NULL REFERENCES athletes(id) ON DELETE CASCADE,
opponent_label TEXT NOT NULL,
club TEXT,
notes TEXT NOT NULL,
tournament TEXT,
created_at TIMESTAMPTZ DEFAULT NOW(),
created_by UUID NOT NULL REFERENCES auth.users(id)
);
Both tables enforce RLS policies:
This prevents competition/trade-secret leaks from public access.
v1 (localStorage) → v2 (Supabase + Auth)
Key changes:
/workspace
├── app/
│ ├── athletes/[id]/
│ │ ├── page.tsx # Athlete detail & edit (auth required)
│ │ └── print/page.tsx # Printable profile (auth required)
│ ├── login/page.tsx # Coach login (password or magic link)
│ ├── page.tsx # Home / athlete list (auth required)
│ ├── layout.tsx # Root layout with AuthProvider
│ └── globals.css # Global styles + print CSS
├── lib/
│ ├── supabase.ts # Supabase client initialization
│ ├── supabase-store.ts # Supabase data layer (CRUD operations)
│ ├── auth-context.tsx # Auth context provider
│ ├── store.ts # (DEPRECATED) Old localStorage store
│ └── types.ts # TypeScript type definitions
├── .env.local.example # Environment variable template
├── .env.local # (gitignored) Your actual env vars
├── package.json # Dependencies & scripts
├── tsconfig.json # TypeScript config
└── README.md # This file
Push to GitHub:
git push origin main
Import Project to Vercel:
Configure Environment Variables:
In Vercel project settings → Environment Variables, add:
NEXT_PUBLIC_SUPABASE_URL=https://wnwcxousneqhzlkdzeku.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=<your-actual-anon-key>
CRITICAL: Use the actual anon key from your Supabase project dashboard (Settings → API).
Set for: Production, Preview, Development (all environments)
Deploy:
https://judo-comp-analysis.vercel.app)Create First Coach Account:
Go to Supabase Dashboard → Authentication → Users:
Test Authentication:
/loginVercel automatically redeploys when you push to main:
git add .
git commit -m "Update feature"
git push origin main
# Vercel deploys automatically
For first-time setup or testing:
Data is stored in Supabase PostgreSQL. To backup:
Option 1: Supabase Dashboard
Option 2: SQL Export
# Install Supabase CLI
npm install -g supabase
# Login and link project
supabase login
supabase link --project-ref <your-project-ref>
# Export data
supabase db dump -f backup.sql
If you have data in the old localStorage version:
created_by but not edit history (future enhancement)Potential future iterations (pending approval):
Private repository - Silicon Valley Judo internal use only.
This is an internal tool for Silicon Valley Judo. Contact Jacob Mayeda for questions or feature requests.
Built with ❤️ for Silicon Valley Judo coaches and athletes.
Now with Supabase authentication and shared database — secure, collaborative, and privacy-first!