# Actual Budget

## 概要

Actual Budgetは、ローカルファースト設計の個人財務管理ツールです。100%無料かつオープンソースで、NodeJSで構築されています。デバイス間での同期機能を備え、全ての変更をシームレスに同期できます。エンベロープ予算管理方式を採用し、収入と支出を効率的に管理できる家計簿アプリケーションです。

## 主な機能

| 機能カテゴリ | 説明 |
| --- | --- |
| 予算管理 | エンベロープ予算方式による収支管理、カテゴリ別の予算設定 |
| 口座管理 | 複数の銀行口座・クレジットカードの一元管理 |
| 取引記録 | 収入・支出の記録、分割取引、定期取引のスケジュール管理 |
| 銀行同期 | GoCardless、SimpleFin、Pluggy AIを通じた銀行口座との自動同期 |
| レポート・分析 | ダッシュボード、グラフ・チャートによる財務分析 |
| データ同期 | 複数デバイス間でのCRDTベースのリアルタイム同期 |
| ルール機能 | 取引の自動分類・ペイイー自動設定ルール |
| インポート/エクスポート | CSV、OFX、QIF形式でのデータ入出力 |
| 国際化対応 | 多言語対応（Weblateによる翻訳管理） |

## 技術スタック

### コア

- フレームワーク: React 19, Express.js
- 言語: TypeScript, JavaScript
- データベース: SQLite (better-sqlite3), sql.js (ブラウザ向け)
- 同期エンジン: CRDT (Conflict-free Replicated Data Types)
- デスクトップ: Electron 39
- ビルドツール: Vite, Yarn Workspaces (monorepo)

### 主要ライブラリ

- 状態管理: Redux Toolkit, React Redux
- UIコンポーネント: React Aria Components, Emotion CSS
- グラフ描画: Recharts
- 日付処理: date-fns
- テスト: Vitest, Playwright, Testing Library
- リンター/フォーマッター: oxlint, oxfmt
- ドキュメント: Docusaurus
- Storybook: コンポーネントライブラリのドキュメント

## ディレクトリ構成

```
actual-master/
├── packages/
│   ├── api/                    # 外部API (@actual-app/api)
│   ├── component-library/      # 共通UIコンポーネント (@actual-app/components)
│   ├── crdt/                   # CRDT同期レイヤー (@actual-app/crdt)
│   ├── desktop-client/         # デスクトップ/ブラウザUI (@actual-app/web)
│   ├── desktop-electron/       # Electronアプリ
│   ├── docs/                   # Docusaurusドキュメント
│   ├── eslint-plugin-actual/   # カスタムESLintプラグイン
│   ├── loot-core/              # コアビジネスロジック
│   ├── plugins-service/        # プラグインサービス
│   ├── sync-server/            # 同期サーバー (@actual-app/sync-server)
│   └── ci-actions/             # CI/CDアクション
├── bin/                        # ビルド・リリーススクリプト
├── data/                       # 開発用データディレクトリ
├── upcoming-release-notes/     # リリースノート
├── docker-compose.yml          # 開発用Docker設定
├── Dockerfile                  # 開発コンテナ
├── sync-server.Dockerfile      # 同期サーバー用Dockerfile
├── package.json                # ルートパッケージ設定
├── tsconfig.json               # TypeScript設定
├── vitest.config.ts            # Vitest設定
└── yarn.lock                   # 依存関係ロックファイル
```

## セットアップ

### 必要条件

- Node.js >= 22
- Yarn 4.10.3以上

### インストール手順

1. リポジトリをクローン:
```bash
git clone git@github.com:actualbudget/actual.git
cd actual
```

2. 依存関係をインストール:
```bash
yarn install
```

3. 開発サーバーを起動:
```bash
# ブラウザ版の開発
yarn start

# デスクトップ版の開発
yarn start:desktop

# サーバー + ブラウザの開発
yarn start:server-dev
```

### Docker環境での開発

```bash
docker-compose up
```
ポート3001でアクセス可能になります。

### デプロイ方法

1. PikaPods経由のワンクリックデプロイ（約$1.40/月）
2. Fly.ioでのマネージドホスティング（約$1.50/月）
3. Dockerイメージによるセルフホスト
4. ローカル専用アプリ（Windows, Mac, Linux）

## 開発

### ビルドコマンド

```bash
# ブラウザ版ビルド
yarn build:browser

# デスクトップ版ビルド
yarn build:desktop

# サーバービルド
yarn build:server

# APIビルド
yarn build:api

# ドキュメントビルド
yarn build:docs

# Storybookビルド
yarn build:storybook
```

### テスト

```bash
# 全テスト実行
yarn test

# デバッグモードでテスト
yarn test:debug

# E2Eテスト（ブラウザ）
yarn e2e

# E2Eテスト（デスクトップ）
yarn e2e:desktop

# VRT（Visual Regression Test）
yarn vrt
```

### リンター・フォーマッター

```bash
# リントチェック
yarn lint

# リント + 自動修正
yarn lint:fix

# 型チェック
yarn typecheck
```

### 国際化（i18n）

```bash
# 翻訳ファイル生成
yarn generate:i18n
```

翻訳はWeblateで管理されています: https://hosted.weblate.org/projects/actualbudget/

### Storybook

```bash
# Storybookを起動（ポート6006）
yarn start:storybook
```
