OpenAthlete
AGPLv3 endurance training platform: EU-oriented hosting, transparent CTL/ATL/TSB logic in code, self-hosting, and full export. Built in Grenoble.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗교육생이 일정을 확인하고 수업을 신청하며, 수강 진행도와 로그북을 관리하는 웹앱(PWA)입니다. 휴대폰 브라우저에서 "홈 화면에 추가"하면 앱처럼 쓸 수 있습니다.
/admin, 화면은 아직 없음)src/lib/business.ts)https://<앱 주소>/api/notion/webhook (이벤트: page.properties_updated)vercel.json cron)| 영역 | 사용 기술 |
|---|---|
| 화면 + 서버 | Next.js 14 (App Router) + TypeScript |
| 디자인 | Tailwind CSS, Pretendard 글꼴 (SIL Open Font License) |
| DB | PostgreSQL + Drizzle ORM |
| 로그인 | NextAuth (이메일·비밀번호, 카카오 로그인은 추후 추가) |
처음 계획은 Prisma였지만 Drizzle로 바꿨습니다. 기능은 같고, 별도 엔진 파일을 내려받지 않아도 돼서 설치와 배포(Vercel)가 더 단순합니다.
DATABASE_URL이 자동으로 들어감vercel-build)| 환경변수 | 내용 |
|---|---|
NEXTAUTH_SECRET | 임의의 긴 문자열 (openssl rand -base64 32) |
SEED_ADMIN_EMAIL | 대표 관리자 로그인 이메일 |
SEED_ADMIN_PASSWORD | 대표 관리자 비밀번호 |
SEED_DEMO | 1이면 [예시] 일정과 테스트 교육생 계정 생성 (테스트 기간에만) |
NOTION_TOKEN | 노션 연결(Integration) 키 — 강습영상 연동 |
NEXT_PUBLIC_VAPID_PUBLIC_KEY · VAPID_PRIVATE_KEY | 웹 푸시 알림 키 (npx web-push generate-vapid-keys) |
VAPID_SUBJECT | mailto:대표 이메일 |
CRON_SECRET | 매일 피드백 점검 작업 보호용 임의 문자열 |
테스트 교육생 계정(SEED_DEMO=1): [email protected] / demo1234 — AIDA 2 수강 중, 2회차 완료라 자율연습 참여 가능
필요한 것: Node.js 20 이상, PostgreSQL
deeptail 데이터베이스 만들기cp .env.example .env
# .env 파일의 DATABASE_URL을 내 DB 주소로 바꾸고
# NEXTAUTH_SECRET은 `openssl rand -base64 32` 결과로 바꾸기
npm install
npm run db:migrate
npm run db:seed
npm run dev
브라우저에서 http://localhost:3000 접속[email protected] / 비밀번호 changeme1234.env에 SEED_ADMIN_EMAIL, SEED_ADMIN_PASSWORD를 지정하고 시드를 다시 실행하세요.src/
app/
(tabs)/ 하단 탭이 있는 화면들
page.tsx 홈
schedule/ 일정안내 및 예약
courses/ 교육과정
my/ 마이페이지 (로그인 필요)
notices/ 공지사항 목록·상세
gallery/ reviews/ materials/
(auth)/ 로그인 · 회원가입
api/auth/ NextAuth
components/ 하단 탭, 아이콘, 폼 요소
db/
schema.ts DB 구조 (회원, 과정, 횟수권, 장소, 일정, 신청, 공지, 로그북)
course-data.ts 교육과정 안내문 내용 (과정·회차·혜택 수정은 여기서)
seed.ts 기본 데이터 (관리자, 장소 7곳, 과정 5개, 유료트레이닝 4종, 장비대여료, 공지 예시)
lib/auth.ts 로그인 설정
middleware.ts 로그인·권한 필요한 경로 지정
drizzle/ DB 마이그레이션 파일
enrollments): 과정별 총 횟수·사용 횟수·담당강사·결제 상태registrations):
training_options): 1:1/1:2 × 5m/딥스, 1인 요금schedules): 생성 시 관리자 이름·연락처 자동 입력public/manifest.webmanifest의 icons)