IPPUKU
週1回の問いで10年、自己認識を深める
Level
L3.0
Progress
70%
personalactive
Disappears
自己理解への漠然とした不安
→
Emerges
10年の自己認識の旅と深い自己理解
5-Axis Framework
Vision
自分の選択を、自分で信じられる状態をつくる
自分を知って、自分で選ぶ
Target
自分の本質を、まだ知らないと知っている人
自分のことは簡単にはわからないと感じている人
Service
10年520問の自己内省プログラム
週にひとつ、自分への問い
Capability
本質に触れる問いの設計力
10年の発達段階に沿って、表層から核心へ届く問いを配列する
System
週次配信+アーカイブ循環
問いを届け、回答を蓄積し、過去の自分と再会させるサイクル
Tech Stack
frameworkNext.js ^16.2.1
react19.2.3
typescript5.x
stylingTailwind CSS v4
designSystemSIA Design System
uiLibraryCustom Components
authClerk 6.37.3
dbPrisma 6.19 + Turso (libSQL)
YAML Data (520 questions)@prisma/adapter-libsql@libsql/clientStripe (Sustain決済)
Deployment
Git Managed
ippuku.seehub.org
Vercel維持(Prisma+Tursoバンドル107MBのためCF Workers移行不可)
Technical Details
【データベース】 Production: Turso (libSQL) — aws-ap-northeast-1 (東京) Development: SQLite (file:./dev.db) フォールバック ORM: Prisma 6.19 + @prisma/adapter-libsql 切替: TURSO_DATABASE_URL + TURSO_AUTH_TOKEN 環境変数の有無で自動判定 バックアップ: Turso自動(24h PITR) 無料枠: 5GB storage / 500M reads / 10M writes(現使用 <1%) 【データモデル — 8テーブル】 User: id, clerkId, email — 全テーブルの親。CASCADE削除 Answer: userId+questionId unique, selectedOption(1-5), freeText UserProgress: currentYear(1-10), currentWeek(1-52), totalAnswers Reflection: プローブ応答+メモ統合 BaselineAnswer: 5カテゴリ自己評価 CheckInResponse: マイルストーン振り返り JournalEntry: 自由記述ジャーナル OrientationAnswer: 初回3問(clerkId紐付け、FK外) 【API エンドポイント — 11ルート】 GET /api/questions — 年別・ID指定で問い取得 GET /api/questions/all — 520問全量(Cache-Control 24h) POST /api/answers — 回答保存(upsert) GET /api/answers — 回答取得(年フィルタ対応) GET /api/progress — 進捗取得 POST /api/baseline — ベースライン回答保存 POST /api/checkins — チェックイン回答保存 POST /api/journal — ジャーナル作成 GET /api/journal — ジャーナル一覧(100件制限) POST /api/reflections — リフレクション保存 GET /api/reflections — リフレクション一覧(200件制限) 【ユーザーデータ管理 — GDPR対応】 DELETE /api/user — 全データ完全削除(確認文字列必須) GET /api/user/export — 全データJSONエクスポート 【デプロイ】 GitHub → Vercel 自動デプロイ(main push → Production) Vercel env: TURSO_DATABASE_URL, TURSO_AUTH_TOKEN, DATABASE_URL 【螺旋問い選択エンジン — spiralEngine.ts】 520問を順番通りに配信するのではなく、回答パターンに応じて 「今この人にどの問いを届けるか」を適応的に選択する。 仕組み: ユーザーが選んだ選択肢(1-5)には設計上の意味がある 1=守る 2=求める 3=関わる 4=避ける 5=表す(自分の言葉) この番号の推移パターンだけで揺れ・安定・跳躍を検出する。 追加の入力は一切ない。ユーザーは問いに答えるだけ。 3シグナル: turbulence — 同カテゴリ直近3回答で方向転換・回避・分散 stability — 同カテゴリ直近5回答で同一傾向60%以上 leap — そのカテゴリで初めての傾向、または自分の言葉 3モード(存在条件カテゴリ=健康・関係性の状態から判定): stabilization — 存在条件が両方揺れている → 足元を固める exploration — 存在条件が両方安定 → 開花条件(意味・時間・成長)へ normal — 混在 → 通常選択 設計の核心: 変えるもの = currentWeek(年内のどの問いを選ぶか) 変えないもの = currentYear(深度。52問ごとに線形進行) 問いの内容は1問も変わらない。届く順番だけが変わる。 SPIRAL_ENABLED=false で即時無効化(全ユーザー順番配信に戻る) カテゴリ間の接続(ma-no-kouzou由来): 存在条件: 健康 ↔ 関係性(土台) 開花条件: 意味 → 時間 → 成長(表現) 揺れたら同じ場所にとどまる。安定したら隣へ。跳躍したら逆方向へ。 技術的に高度なのはエンジンではなく、520問の設計品質。 各問いの選択肢position(1-5)に一貫した意味があるから、 番号の偏りだけで「意識がどこへ向いているか」を近似できる。 エンジン自体は200行のルールベース分岐。MLもAIも使わない。 【品質保証】 ATLAS v3.1: 60 Checkpoints, OPEN 7/60 npm audit: 0 vulnerabilities Dependabot: .github/dependabot.yml 有効 TypeScript strict mode + Prisma型安全