OpenAthlete
AGPLv3 기반 지구력 훈련 플랫폼—EU 호스팅, 투명한 로직, 자체 호스팅·전체 내보내기 지원
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗AGENTS.md..agent/skills/codex-bootstrap/SKILL.md.AGENTS.md, .agent, and the current src/ + sql/ tree.Global Standard Ice Hockey Match Management Platform
"No more copy-pasting. Manage your roster, payments, and team balance with a single link."
아이스하키 동호회 경기 운영 & 게스트 매칭 관리 플랫폼
Power Play는 **다국어(KR/EN)**를 완벽 지원하는 웹 플랫폼으로, 링크 하나로 경기 생성부터 신청, 입금 확인, 팀 밸런싱, 공지 공유까지 해결합니다.
| Category | Tech | Details |
|---|---|---|
| Framework | Next.js 14+ | App Router, Server Actions |
| Language | TypeScript | Strict typing for reliability |
| Styling | Tailwind CSS | + Shadcn/ui (Radix UI) |
| i18n | next-intl | Server & Client side translation (KR/EN) |
| Database | Supabase | PostgreSQL |
| Auth | Supabase Auth | Email/Password (MVP), OAuth planned |
| Logic | Edge Functions | Notification triggers, Scheduling |
| SEO | Open Graph | Dynamic OG Image for KakaoTalk Previews |
| Deploy | Vercel | CI/CD Integration |
[KR/EN] 토글로 즉시 언어 전환.1월 8일 ↔ Jan 8th).FW/DF/G), 레벨 설정.Unpaid → Paid 상태 변경.Copy for Kakao: 한국어 위주의 깔끔한 텍스트 공지 생성.Copy for Global: 외국인 멤버를 위한 영/한 병기 공지 생성.We will build this as a Single Next.js Application (Monorepo approach not needed).
The project uses Next.js Route Groups to handle different layouts within a single repo.
app/
├── (public)/ # Public Layout Group
│ ├── layout.tsx # GNB (Logo, Login, Lang Toggle)
│ ├── page.tsx # Main: Match List
│ └── match/[id]/ # Match Detail (Hybrid Admin Controls here)
│
├── (admin)/ # Admin Layout Group
│ ├── admin/ # URL base: /admin
│ │ ├── layout.tsx # Admin Sidebar Layout
│ │ ├── dashboard/ # Statistics
│ │ └── matches/ # Manage All Matches (Table View)
│
├── layout.tsx # Root Layout (Providers, Fonts)
└── middleware.ts # Role-based Protection
### 🔐 Security & Access Rules
1. Middleware Protection:
- Check user's role via Supabase Auth.
- If user.role !== 'admin' tries to access /admin/*, redirect to home (/).
2. Hybrid UI Control:
- Inside match/[id], implement Conditional Rendering.
- If user.role === 'admin', render specific admin buttons ("Edit Match", "Copy Text").
--
## 5. Database Schema (Supabase Draft)
profiles (Users)
Column Type Description id UUID (PK) Supabase Auth User ID email Text User Email full_name Text Display Name (Global friendly) position Enum 'FW', 'DF', 'G' preferred_lang Enum 'ko', 'en' (For Notifications) role Enum 'user', 'admin'
matches (Games)
Column Type Description id UUID (PK) rink_id UUID (FK) Reference to rinks start_time Timestamp Game Start Time fee Integer Cost per person max_fw Integer Max Forwards max_df Integer Max Defenders max_g Integer Max Goalies status Enum 'open', 'closed', 'canceled' description Text Host's notice
participants (Roster)
Column Type Description id UUID (PK) match_id UUID (FK) user_id UUID (FK) position Enum Applied Position (FW/DF/G) status Enum 'applied', 'confirmed', 'waiting', 'canceled' payment_status Boolean true if paid team_color Enum 'Black', 'White', null
rinks (Venues)
Column Type Description id UUID (PK) name_ko Text e.g. "제니스 아이스링크" name_en Text e.g. "Zenith Ice Rink" map_url Text Naver/Google Map Link
### 6. Development Roadmap
#### 1: Foundation
- Project Init (Next.js + next-intl + Shadcn).
- Supabase Setup (Schema Apply & Auth Integration).
#### 2: Core Logic
- User Auth & Profile Implementation.
- Match List & Detail UI (with i18n support).
#### 3: Interaction & Admin
- Join Logic (Position Check & Capacity Limit).
- Admin Dashboard & "Smart Share" Text Generator.
#### 4: Polish & Deploy
- SEO & Dynamic OG Image (Open Graph).
- Final QA & Vercel Deployment.