本文へスキップ

機能

Financy が今できること、次にできること

Financy は作り直しの最中です。今日使えるもの:どの通貨でも使える口座と、それを支える土台。ログイン、ロールによる共有、リアルタイムの更新、オフラインアプリ、エクスポート、9 言語、そしてあなた自身のサーバー。各セクションから、そのコードに飛べます。

著者: Anton Shubin更新日:

取引と予算はまだできていません。作り直しの進み具合を見る。

今できること

世帯のお金を載せる土台

これらは動いていて、CI でテストされています。どの通貨の口座も、そのカテゴリも使えます。取引は次に来ます。

現在使えるものGoogle と GitHub でのログインにはサーバー独自のキーが必要なため、新しくセルフホストした環境では、まずメールでのログインだけが使えます。

口座ごとに、それぞれの通貨で

現金、銀行口座、カード、貯蓄、資産、負債を、それぞれの通貨で。種類ごとにまとめ、メインの口座を1つ決められます。変更は世帯の全員にすぐ届きます。

開発者向け

  • 残高はサーバーが読み出すたびに計算し、どこにも保存しないので、ずれることがありません
  • 金額は通貨の最小単位の整数です。円には小数がなく、ディナールは3桁です
  • 閲覧者は口座を見るだけで、変更できるのは編集者以上。サーバーが確認します
口座のコードを読む

1階層だけのカテゴリ

支出と収入をカテゴリに分けて、それぞれにアイコンと色を付けます。食料品と外食は食費の下に。新しい世帯は、その言語の短いリストから始まります。

開発者向け

  • カテゴリは削除されません。アーカイブすると選択肢から消え、過去の記録には残ります
  • サブカテゴリの種類は親と同じで、親カテゴリに親は持てません。サーバーで確認します
  • 閲覧者はカテゴリを読めます。変更できるのは編集者以上だけです
カテゴリのコードを読む

ログインは完成済み

メールアドレスとパスワードで新規登録し、コードでメールアドレスを確認します。忘れたパスワードのリセット、Google や GitHub での続行、パスキーやメールで届くログインコードでのログインもできます。認証アプリで2段階認証(2FA)を追加でき、ログイン中のすべての端末を確認して、ほかの端末からログアウトできます。

開発者向け

  • パスワードはWeb CryptoのPBKDF2-SHA-256でハッシュ化(デフォルトで60万回)
  • 署名付きのセッションCookieと、すべてのログインイベントの監査ログ
  • 個人用APIトークンは鍵付きハッシュとしてのみ保存
ログインのコードを読む

ひとつの世帯、一人ひとりに自分のログイン

世帯(アプリではグループ)は、お金を共有する人たちです。パートナーや家族を招待し、閲覧者からオーナーまでのロールを割り当て、必要なときにオーナーを譲渡できます。削除した世帯は30日以内なら復元でき、アクティビティログで誰が何を変えたかがわかります。

開発者向け

  • すべてのデータは、世帯というひとつの境界で確認されます
  • 各自は自分が属する世帯だけを見られます
  • 招待、ロール変更、オーナー譲渡のそれぞれにテストがあります
グループのドメインを読む

変更は再読み込みなしで全端末に表示

世帯の誰かが何かを変えると、ほかの人は開いているすべての端末ですぐに見られます。スリープから復帰したノートパソコンは、その間の変更を取り込みます。

開発者向け

  • 標準の WebSocket で、変更ごとに通し番号が付きます
  • 再接続した端末は見逃した分を取得します
リアルタイムの設計を読む

ネットワークなしで開けるアプリ

Financy をスマホやパソコンにインストールすると、ネットワークがなくても開き、最後に見た内容を表示します。

開発者向け

  • 各リストのローカルコピーを IndexedDB に持ち、べき等キー付きの書き込みキューを使います
  • 競合ごとに「自分のバージョンを残す」か「サーバーのバージョンを使う」かを選択
docs/offline.mdを読む

データは自分のもの

オーナーはいつでも世帯をオープンな JSON ファイルに書き出し、あとで新しい世帯として取り込めます。取り込みで元の世帯が上書きされることはありません。

開発者向け

  • 何かを書き込む前にファイル全体を確認し、1ステップで取り込みます
  • 各レコードに新しい id が付くので、取り込みが既存のデータとぶつかることはありません
エクスポートのコードを読む

9言語に対応

アプリとこのサイトは英語、ロシア語、スペイン語、ドイツ語、ポルトガル語 (ブラジル)、アラビア語、フランス語、日本語、簡体中国語に対応しています。言語は各自がアプリで選ぶので、ひとつの世帯で複数の言語を使えます。

開発者向け

  • 言語ごとにひとつのカタログがあり、足りないメッセージをすべて挙げるテストで確認します
  • 数値と日付はブラウザ標準の Intl で表示します
  • アラビア語のページは右から左に表示されます
翻訳ガイドを読む

あなたのサーバーで動く

Financy は、借りたサーバーでも自前のサーバーでも、Linux なら Docker Compose で動きます。セルフホストは AGPL‑3.0 ライセンスで無料で、世帯のデータはあなたのサーバーに残ります。

開発者向け

  • 前段に証明書を自動取得するTraefik
  • アプリと並んで動くPostgresとValkey
  • VictoriaMetrics、VictoriaLogs、Grafana によるメトリクス、ログ、アラート
  • 任意で有効にできる、データベースの毎日の暗号化バックアップと、文書化された復元手順
Composeファイルを読む
$ deno task deploy Copying files... Copying infra/envs/.env.prod to infra/envs/.env... Creating web push keys if missing... Starting the app... Deploy completed.
一部省略:各ステップの間のrsyncとComposeの出力は割愛しています。
  • Traefik
  • Postgres
  • Valkey
  • VictoriaMetrics
  • VictoriaLogs
  • Grafana
  • Alertmanager
  • Garage file store
  • restic backups

よくある質問

Financy でできますか?

共有ホスティングやサーバーレスで Financy を動かせますか?

いいえ。API が WebSocket 接続を開いたまま保ち、ワーカーがキューを処理するため、Financy は1台の Linux サーバー上で Docker Compose の常駐コンテナとして動きます。

Financy はどのデータベースを使いますか?

Postgres です。マイグレーション、クエリ、結合テストはこれを前提にしています。

スマホアプリはありますか?

ストアにはまだありません。今は Web アプリをブラウザからスマホやパソコンにインストールでき、オフラインでも開けます。