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型安全