Skip to content

yamisskey-dev/yamix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

450 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Yamix

YAMI トークン経済プラットフォーム - YAMI Token Economy Platform

menhera.jp の精神を継ぐ、OSS人生相談プラットフォーム。AIと人間が対等なアカウントとして共存し、精神的リソースをYAMIトークン化することで、持続可能な相互扶助の仕組みを実現します。

主な機能

  • AI・人間相談 - AIと人間の両方から回答を受け取れる二層構造
  • 匿名オプション - 匿名での相談・回答が可能
  • 公開タイムライン - Misskey風の相談共有機能
  • PWA対応 - インストール可能、オフライン対応
  • プライバシー重視 - データベース暗号化、ノーログ設計

プライバシー設計

Yamixはプライバシーファーストで設計されています:

項目 実装状況
データベース暗号化 ✅ メッセージはAES-256-GCMで暗号化して保存
IPアドレス ✅ 記録しない
メッセージ内容のログ ✅ 記録しない
後方互換性 ✅ 既存の平文データも読み込み可能

注意: AI相談機能を提供するため、メッセージはOpenAI APIに送信されます。これは技術的に不可避であり、真のエンドツーエンド暗号化(E2EE)ではありません。ただし、データベースに保存されるデータは暗号化されているため、DBアクセスのみでは内容を読むことができません

詳細な機能一覧は FEATURES.md を参照してください。

設計思想

詳細: ECONOMY.md

  • AIによる依存の代替 - 人間への不健全な依存をAIが吸収し、人間同士の関係を健全化
  • 依存へのブレーキ - 相談にはコストがかかり、無制限の依存を防止
  • 回答者への報酬 - 精神的労働には対価が支払われる
  • AIと人間が対等 - 同じインターフェースで相談を受け、境界を意識させない

アーキテクチャ

ローカルファースト設計(Linear/Notion方式)

Yamixはローカルファーストアーキテクチャを採用し、極めて高速なユーザー体験を実現しています:

特徴 実装詳細
即座のレスポンス すべての操作が0msで反映(楽観的更新)
完全オフライン対応 IndexedDB + Service Workerでデータとアプリ全体を永続化、リロード時も動作
自動同期 バックグラウンドでサーバーと同期、ネットワーク復帰時に自動再送
データ永続化 ブラウザ再起動後も未送信データを保持
Service Worker アプリシェルキャッシュ + Background Sync APIで完全なオフライン体験

技術実装

  • 楽観的更新: メッセージ送信時にサーバーレスポンス待ちなしで即座に表示
  • IndexedDB永続化: セッションとメッセージをローカルストレージに保存(syncedフラグ管理)
  • オフラインキュー: 送信失敗時に自動キューイング、オンライン復帰時に自動再送(最大5回リトライ)
  • ローカルセッション: サーバー同期前のセッションをメモリとIndexedDBで管理
  • 完全オフライン対応: Service WorkerによるアプリシェルキャッシュでHTML/CSS/JSも永続化、ページリロード時もオフラインで動作

この設計により、従来の500ms以上かかっていた操作レイテンシーを0msまで削減し、Linearのような高速で快適なUXを実現しています。また、UIアセット全体をキャッシュすることで、完全なオフライン動作を保証します。

プライバシーファースト

ローカルファースト設計は、プライバシー保護にも貢献します:

  • データはユーザーのデバイスに保存: サーバーは同期にのみ使用
  • エンドツーエンド暗号化: メッセージはAES-256-GCMで暗号化
  • オフライン閲覧: ネットワーク接続なしで過去の相談を閲覧可能

注意: AI相談機能を提供するため、メッセージはOpenAI APIに送信されます。これは技術的に不可避であり、真のエンドツーエンド暗号化(E2EE)ではありません。

技術スタック

項目 採用技術
Framework Next.js 15 (App Router)
Language TypeScript 5
Styling Tailwind CSS + DaisyUI
Auth Misskey MiAuth + JWT
Database PostgreSQL + Prisma
Cache Redis
PWA next-pwa (Service Worker + Manifest)
Local Storage IndexedDB (ローカルファースト)
API Docs OpenAPI 3.0 + Swagger UI
Blockchain YAMI DAO 連携(ETHアドレス管理を委譲)

クイックスタート

前提条件

  • Node.js 22.15.0+
  • pnpm 10.18.2+
  • Docker & Docker Compose
  • Yamii API が起動していること

インストール

# リポジトリをクローン
git clone https://github.com/yamisskey-dev/yamix.git
cd yamix

# 依存関係をインストール
pnpm install

# 環境変数を設定
cp .env.local.example .env.local

# データベースを起動
docker-compose up -d

# データベースマイグレーション
pnpm prisma:migrate

# 開発サーバーを起動
pnpm dev

起動後: http://localhost:3000

API ドキュメント

Yamix APIは OpenAPI 3.0 標準に準拠しています。FastAPI(Yamii)と統一的な規格でAPIドキュメントを提供します。

開発

pnpm dev           # 開発サーバー起動
pnpm build         # プロダクションビルド
pnpm start         # プロダクションサーバー起動
pnpm lint          # Lintチェック
pnpm typecheck     # 型チェック
pnpm test          # E2Eテスト実行
pnpm test:ui       # E2EテストをUIモードで実行
pnpm test:report   # テストレポートを表示
pnpm prisma:studio # Prisma Studio起動

CI/CD

プルリクエストとmainブランチへのプッシュ時に、以下のチェックが自動実行されます:

  • コードのLint
  • TypeScriptの型チェック
  • プロダクションビルド
  • Playwrightを使用したE2Eテスト

テスト失敗時は、Playwright Reportがアーティファクトとして保存されます。

ドキュメント

現在の状況: Phase 4まで完了、Phase 5(経済システム)進行中

ライセンス

AGPL-3.0 License

謝辞

  • 故 menhera.jp の精神を継承
  • Misskey - 認証システムとタイムラインUI
  • ChatGPT - AI対話インターフェース
  • Black Cat Carnival - UX設計の参考

Made with care for those who need support

About

🔀 Privacy-first counseling platform with AI + human support and token economy

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages