Busabase
Busabase는 AI 에이전트를 위한 오픈소스(MIT) 데이터베이스 및 작업 공간입니다
Factrail은 공개 책임 그래프이며, 사실을 제공한 사람·기관과 장기 동인, 인간 복지를 측정하는 지표를 연결합니다
Factrail is a public accountability graph: sourced facts linked to the people and organizations behind them, the long-run drivers they set in motion, and the welfare indicators that measure the human
데이터TypeScript · ShellGitHub @sode0417온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Factrail is a public accountability graph: sourced facts linked to the people and organizations behind them, the long-run drivers they set in motion, and the welfare indicators that measure the human impact.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗個人活動のすべての「記録(Fact)」を一元管理するログ基盤
Factrailは、GitHub、Slack、Googleなど外部サービスで発生するイベントを収集・正規化し、時系列のログ(Trail)として保存するインフラ層です。特定のアプリケーションに依存せず、F2AやObsidian、AIクライアントなど、複数のクライアントから再利用可能な形でデータを提供します。
ioredis 経由。Bull Queue は 2026-03-22 に廃止済み)https://factrail-api.sode-ai.com(内部 :3001)https://factrail.sode-ai.com(内部 :3000)scripts/deploy.sh → launchdRailway / Vercel は 2026-03-15 に廃止し、Mac mini へ全面移行しました。
.node-version で 24.22.1 に固定。CI・Mac mini とも同じ系列を使う)git clone https://github.com/yourusername/factrail.git
cd factrail
pnpm workspace のため、リポジトリルートで一括インストールします
(apps/api / apps/web で個別に実行する必要はありません)。
pnpm install
# API: apps/api/.env
cp apps/api/.env.example apps/api/.env
# .envファイルを編集し、必要な値を設定
# Web: apps/web/.env.local
# 必要に応じて設定
主な環境変数:
DATABASE_URL=postgresql://factrail:PASSWORD@localhost:5432/factrail?schema=factrail
ENCRYPTION_KEY=... # 32文字のランダム文字列
REDIS_URL=redis://localhost:6379
詳細はセットアップ手順書を参照
cd apps/api
# Prisma Client生成
npx prisma generate
# データベース確認
npx prisma studio
# Redisをローカルで起動(Dockerを使用)
docker run -d -p 6379:6379 redis:alpine
# APIサーバー起動
cd apps/api
pnpm run start:dev
# Webサーバー起動(別ターミナル)
cd apps/web
pnpm run dev
アクセス:
本番は Mac mini 上で稼働し、GitHub Actions の self-hosted runner が自動デプロイします。
main へ push
└→ .github/workflows/deploy.yml(paths フィルタなし・無条件発火)
└→ self-hosted runner: mac-mini-factrail(launchd 常駐)
└→ scripts/deploy.sh
├─ git pull origin main --ff-only
├─ pnpm install --frozen-lockfile(ルートで workspace 一括)
└─ deploy.json をループ
├─ ビルド(pnpm run build)
├─ launchctl kickstart -kp でサービス再起動
└─ 4 段ヘルスチェック(PID / クラッシュループ / 系統 / HTTP)
プロセスの起動・停止は launchd に委譲しています(自前で kill / nohup しない)。
runner のジョブ終了処理 Cleaning up orphan processes に起動プロセスが殺されるのを避けるためです。
# 手動デプロイ(Mac mini 上)
./scripts/deploy.sh # 全サービス
./scripts/deploy.sh api # API のみ
# GitHub から手動トリガー
gh workflow run deploy.yml -f service=web
# ビルド不要でサービス再起動だけ
launchctl kickstart -k gui/$(id -u)/com.sode.factrail-api
⚠️ Mac mini の作業ツリーは main に置いておくこと。
deploy.shがgit pull --ff-onlyするため、feature ブランチのままだとデプロイが落ちます。
ログは ~/Library/Logs/factrail-{api,web}{,.error}.log。
com.sode.log-rotate が毎日 04:30 に 50 MiB 超を gzip 5 世代でローテートします。
このプロジェクトはClaudeCodeによる自動開発をサポートしています。
Issueを作成
claude:autoラベルが自動付与されるClaudeが自動応答
対話で調整
Claudeをアサイン
レビュー・マージ
# ClaudeCodeをインストール(グローバルインストールは npm を使う)
npm install -g @anthropic-ai/claude-code
# プロジェクトディレクトリで実行
claude-code
factrail/
├── apps/
│ ├── api/ # NestJS Backend
│ │ ├── src/
│ │ │ ├── facts/ # Factsモジュール
│ │ │ ├── integrations/ # 外部連携管理
│ │ │ ├── settings/ # 設定管理
│ │ │ ├── webhooks/ # Webhook受信
│ │ │ ├── common/ # 共通ユーティリティ
│ │ │ └── main.ts
│ │ ├── prisma/
│ │ │ └── schema.prisma
│ │ └── package.json
│ └── web/ # Next.js Frontend
│ ├── app/
│ └── package.json
├── docs/ # ドキュメント
├── .claude/ # ClaudeCode設定
│ ├── context.md # プロジェクトコンテキスト
│ ├── instructions.md # 開発ガイドライン
│ └── settings.local.json # ローカル設定(gitignore)
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ └── development.yml # 開発タスクテンプレート
│ ├── workflows/
│ │ ├── deploy.yml # main push → self-hosted runner でデプロイ
│ │ ├── ci-api.yml / ci-web.yml
│ │ ├── test-api.yml / test-web.yml
│ │ ├── security.yml # pnpm audit / Snyk / Trivy
│ │ ├── claude.yml # Claude自動応答
│ │ ├── claude-code-review.yml
│ │ └── ... # auto-fix, ci-summary, ci-failure-issue 等
│ ├── dependabot.yml # 依存の自動更新(土曜 06:00 JST)
│ └── pull_request_template.md
└── README.md
# ユニットテスト(リポジトリルートから)
pnpm --filter api test
# E2Eテスト(Playwright / apps/web)
pnpm --filter web test:e2e
# カバレッジ
pnpm --filter api test:cov
このプロジェクトでは、複数のセキュリティツールを使用して依存関係とコードの脆弱性を自動的にスキャンしています。
以下のタイミングでセキュリティスキャンが自動実行されます:
# 依存の脆弱性チェック(CI の pnpm-audit ジョブと同じ)
pnpm audit --prod --audit-level high
# Snykを実行(事前にSnyk CLIのインストールと認証が必要)
cd apps/api
npx snyk test --severity-threshold=high
# Trivyを実行(事前にTrivyのインストールが必要)
trivy fs --severity HIGH,CRITICAL .
SNYK_TOKEN を設定{
id: string // UUID
externalId: string // 外部サービスのID
source: string // "github", "slack", etc.
sourceUrl?: string // イベントのURL
occurredAt: DateTime // 発生日時
title: string // 短いタイトル
summary?: string // 要約
content?: string // 詳細
raw: Json // 生データ
type: string // イベントタイプ
metadata?: Json // 追加メタデータ
slackMessageId?: string
f2aEventId?: string
createdAt: DateTime
processedAt?: DateTime
}
{
id: string
provider: string // "github", "slack", "google"
accountId: string
accountName?: string
accessToken: string // 暗号化済み
refreshToken?: string // 暗号化済み
expiresAt?: DateTime
scope: string[]
status: string // "active", "inactive"
lastSyncAt?: DateTime
createdAt: DateTime
updatedAt: DateTime
}
重要: トークンは必ず暗号化して保存すること(ユビキタス言語参照)
MIT
プロジェクトに関する質問や提案は、GitHubのIssueで受け付けています。
Built with ❤️ using ClaudeCode