おうちギルド

https://github.com/1R0U/my-home-bank

TypeScript

React

日常の義務感や小競り合いを、家族全員で楽しむ経済ゲームへ

1rou

ひらた

r88peaicp14

778nnim

ta449usp01

推しアイデア

日常の義務感や小競り合いを減らすため家族でそれぞれやってほしいことをタスクとしてポイントを割り振り投稿、誰がどれくらい必要なことをやってるか可視化 子供と大人どちらもが続けやすくするため画面を大人用と子供用の二つ作った、子供はワクワクを大人はスタイリッシュを求めて続けやすく

作った背景

日常の退屈かつ小競り合いになりやすい家事や約束、それらを可視化することで無駄な小競り合いなどを減らしつつ話題の一つにでもなればいいなぁと

推し技術

子供と大人それぞれで続けるためのモチベも違うとこがあるのでそれぞれに合う画面を用意、子供用にはゲーム感を強化しより続けやすいように

プロジェクト詳細

家庭内独立経済圏シミュレーションOS

「宿題やった?」「お風呂掃除してよ!」という日常の義務感や小競り合いを、家族全員で楽しむ「経済ゲーム」に変えるアプリです。人は「やらなきゃいけない」と思うと動けませんが、「コインが稼げる」となった瞬間に能動的になります。

概要

家事や約束をクエスト化し、家族の承認で家庭内通貨($HMC)が発行される。外部APIも決済も使わず、DB設計とゲームロジックだけで家族の行動変容を起こす

主な機能

タスク・マイニング

家庭内の「めんどくさいこと」をクエストとして登録 子供が受注 → 完了申請 → 他の家族が承認すると通貨が発行される マイナス行動(片付け忘れなど)はマイナス報酬も設定可能

中央銀行セクター

定期預金に預けると週利・月利で利息が発生 家庭内ローンで先に「ゲームが欲しい」を実現し、報酬から天引き返済 金利・融資・返済計画を家庭内でシミュレーション

外貨両替・ストア

「晩御飯リクエスト権」「ゲーム1時間延長券」など現実の権利と交換 商品は棚に並ぶ見た目で表示

RPGハブ(子供用ホーム)

キャラクターがマップを歩き、建物に入ると各機能へ遷移 クエスト/銀行/ストア/履歴の4つがギルドの建物として存在 季節に応じて地面・空・装飾の見た目が変化

履歴・可視化

通貨の増減をすべて1本の台帳に集約 日/週/月/年の粒度で収支と累積残高をグラフ表示

こだわり

ゲームにする

タスク一覧を開くのではなく「ギルドに行く」体験にして継続率を上げる 建物の角に引っかからず壁沿いに滑る移動判定で、子供が触ってもストレスがない 大人用と子供用でUIを分離。子供はゲーム性、大人は最短手数の管理画面

通貨が壊れない

承認・記帳・残高加算をDB側の1トランザクションで実行 台帳への部分一意インデックスで、1つの承認から2件記帳されないことをDBが保証 完了ボタンの連打はDB側の条件付きUPDATEで弾き、二重の報酬発行を防止 クライアントを信用せず、ステート遷移の検証をすべてDBに寄せる 外部依存を持たない 外部API・外部決済・外部サービス連携なし 家族間の「手動承認」と「数値の増減」だけで完結

技術構成

フロントエンド: Expo / React Native / Expo Router / NativeWind 3D: three / @react-three/fiber / expo-gl(単一3Dシーン + OrthographicCamera) 状態管理: Zustand バックエンド: Supabase(PostgreSQL / ストアドプロシージャ) データフロー: クエスト受注 → 完了申請(RPC)→ 親が承認(RPC)→ 台帳へ記帳 → 残高加算 → 履歴画面 テスト / CI: node:test(純粋ロジック)+ jest-expo(描画)、GitHub Actionsで型チェックとテストを必須化

タグ: TypeScript、React Native、Expo、Supabase、PostgreSQL、Three.js

1rou

@1rou