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)