OpenAthlete
AGPLv3 기반 지구력 훈련 플랫폼—EU 호스팅, 투명한 로직, 자체 호스팅·전체 내보내기 지원
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 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)