ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
自分用のコード譜・練習アプリ(MVP)。U-FRET・楽器.me の代わりに、広告なしで譜面を見て練習するための Web アプリです。 データはまず端末内(IndexedDB)に保存し、ログインしているときだけサーバーと同期します。同期先が未設定でも端末内だけで動きます。README 전문 보기 ↗
自分用のコード譜・練習アプリ(MVP)。U-FRET・楽器.me の代わりに、広告なしで譜面を見て練習するための Web アプリです。
/import で登録方法を案内)データはまず端末内(IndexedDB)に保存し、ログインしているときだけサーバーと同期します。同期先が未設定でも端末内だけで動きます。
supabase/migrations/ の SQL を古い順にすべて適用する(ステップ 1-3 で 20261020000000_practice.sql を追加)insert into public.allowed_emails values ('[email protected]');https://hikeru.app。Redirect URLs には https://hikeru.app/settings)を登録する.env.example を参考に NEXT_PUBLIC_SUPABASE_URL と NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY を設定する(Vercel では Environment Variables)SUPABASE_URL と SUPABASE_PUBLISHABLE_KEY を登録する(.github/workflows/keepalive.yml が3日おきにアクセスする)料金は月額 480円・年額 4,800円(税込)。無料プランでは区間ループ・速度変更を1日3曲まで使える(src/domain/plan.ts で判定)。
決済は Stripe。NEXT_PUBLIC_BILLING_ENABLED を 1 にするまでは、誰でもすべての機能を使え、料金ページは「準備中」と表示する。
始めるまでに必要なこと:
supabase/migrations/20261021000000_billing.sql を適用する(subscriptions テーブル)/terms /privacy /legal。事業者情報は src/lib/seller.ts)を確定するhttps://hikeru.app/api/billing/webhook を登録する。送るイベント: checkout.session.completed、customer.subscription.created updated deleted paused resumedNEXT_PUBLIC_ 以外はサーバーだけで使う秘密の値| 変数 | 値 |
|---|---|
STRIPE_SECRET_KEY | Stripe のシークレットキー(sk_live_…。試すときは sk_test_…) |
STRIPE_WEBHOOK_SECRET | Webhook の署名シークレット(whsec_…) |
STRIPE_PRICE_MONTH / STRIPE_PRICE_YEAR | 価格の ID(price_…) |
SUPABASE_SERVICE_ROLE_KEY | Supabase の secret key(購読の記録を書き込むため) |
NEXT_PUBLIC_BILLING_ENABLED | 1(申し込みを受け付ける) |
運営者が手動で有料プランを付けるときは、subscriptions に status = 'active' の行を入れる(Stripe の ID は空のまま)。
npm install
npm run dev # http://localhost:3000
npm test # ロジックのテスト(Vitest)
npm run test:e2e # 画面のテスト(Playwright。先に npm run build)
npm run lint
npm run typecheck
src/domain/ は画面や DB に依存しない純粋なロジックで、テストの中心です。
取り込みは「自分がブラウザで開いている1曲を、自分の操作で取り込む」形に限っています。サーバーからの自動取得・一括取得はしません(要求定義 2.2)。
取り込み元ページの保存ファイルは歌詞を含むため、fixtures-local/(コミット対象外)に置いてください。