NBA Feed
팀 뉴스와 경기 정보를 제공, 점수는 직접 확인할 때까지 숨겨져 있습니다
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A Next.js 16 app that controls a Bluetooth treadmill in real time, with multi-user support, training program storage, and run history — backed by Vercel Postgres (Neon).
pnpm workspace: apps/web (this app) + packages/core (shared, framework-agnostic BLE/session/training
logic). A React Native mobile client was scaffolded and is currently parked on the archive/mobile branch.
• Next.js 16 (App Router, Turbopack)
• Auth.js v5 — Google OAuth + email/password credentials
• Drizzle ORM + Vercel Postgres (Neon) — serverless PostgreSQL
• Jotai — client-side state
• MUI v9 — UI componentsREADME 전문 보기 ↗A Next.js 16 app that controls a Bluetooth treadmill in real time, with multi-user support, training program storage, and run history — backed by Vercel Postgres (Neon).
pnpm workspace: apps/web (this app) + packages/core (shared, framework-agnostic BLE/session/training
logic). A React Native mobile client was scaffolded and is currently parked on the archive/mobile branch.
docker compose up -d
This starts a Postgres 18 container on localhost:5433 (db: runnerapp, user/pass: runner).
cp apps/web/.env.local.example apps/web/.env.local
Edit apps/web/.env.local and fill in:
DATABASE_URL=postgresql://runner:runner@localhost:5433/runnerapp
AUTH_SECRET=<run: openssl rand -base64 32>
AUTH_TRUST_HOST=true
AUTH_GOOGLE_ID=<your Google OAuth client ID> # optional — skip to use email/password only
AUTH_GOOGLE_SECRET=<your Google OAuth client secret>
To get Google OAuth credentials, create a project at console.cloud.google.com, enable the Google+ API, and add http://localhost:3010/api/auth/callback/google as an authorized redirect URI.
pnpm db:migrate
pnpm dev
Open http://localhost:3010.
| Command | Description |
|---|---|
pnpm dev | Dev server (Turbopack, http://localhost:3010) |
pnpm build | Production build |
pnpm lint | ESLint |
pnpm typecheck | TypeScript typecheck (no emit) |
pnpm test | Vitest unit tests (run once) |
pnpm test:watch | Vitest unit tests (watch mode) |
pnpm storybook | Storybook (http://localhost:6006) |
pnpm db:generate | Generate Drizzle migration from schema changes |
pnpm db:migrate | Apply pending migrations |
pnpm db:studio | Open Drizzle Studio (DB browser) |
apps/web, not the repo root. In
Project Settings → General → Root Directory, set it to apps/web (Vercel's Next.js framework
detection needs this to find apps/web/package.json's next dependency) and enable "Include files
outside of the Root Directory in the Build" (needed since apps/web depends on packages/core via
workspace:*).DATABASE_URL in your project to the connection
string it gives you (the app reads DATABASE_URL, not Vercel's auto-injected POSTGRES_URL).DATABASE_URL # Neon/Vercel Postgres connection string
AUTH_SECRET # openssl rand -base64 32
AUTH_GOOGLE_ID # Google OAuth client ID
AUTH_GOOGLE_SECRET # Google OAuth client secret
NEXTAUTH_URL # https://your-app.vercel.app
apps/web's vercel-build script, which applies pending migrations (scripts/migrate-production.sh, using DATABASE_URL_UNPOOLED when set) before next build. Preview deploys skip them. A failed migration fails the deploy, leaving the previous one live.Pricing: Vercel Postgres (Neon) is free on the Hobby plan — 0.5 GB storage, 190 compute hours/month.