↓ 快轉到主要內容

包租代管 App:房東的收租、水電與帳務管理工具

作者
Loyu
記錄學習過程中的技術筆記,也分享自己做出來的作品。
目前是 0.32 預覽版,持續開發中,尚在實機測試階段。試用時請使用測試資料,不要輸入真實帳務。

為什麼要做
#

家裡有幾棟出租房,有分房出租、也有整棟和車位,收租、抄電表、算水電、記修繕費用原本靠紙本和 Excel 拼湊。實際管起來,麻煩的不是記錄,而是這些錢彼此糾纏:

  • 租客常把租金和水電合併成一筆匯款,有時只付一部分、有時多付
  • 有人月繳、有人年繳,年繳那筆錢不能每個月都算成收入一次
  • 押金跟租金放在同一個銀行帳戶,卻不能算成收入
  • 一筆電梯保養費要分攤到好幾棟,但錢只付了一次
  • 從銀行領現金當零用金,是資金移動,不是支出

市面上的記帳軟體處理不了這些規則,所以決定自己做一個專門給房東/代管者用的 App。

主要功能
#

功能說明
🏠 房產與租約不動產 → 單位(房間、整棟、車位)→ 租約分層管理;同一空間租期不能重疊,綠/灰燈一眼看出出租中或空置
⚡ 抄表與水電帳單每月抄電表可拍照存證,自動帶入上月度數,依每度單價算電費,加上固定水費開立帳單
💵 合併收款分配一筆匯款可以分配到多個帳單項目、多個月份;部分付款保留欠款,溢付保留待分配
🔐 押金管理每份租約獨立記錄押金收取、扣抵、部分退款,和租金收入分開呈現
📦 退租結算結算欠租、水電、預收款、押金扣抵與退款;舊租約欠款不會轉移給下一位租客
🧾 支出與分攤修繕、清潔、房貸、電梯保養等支出可分攤到多棟,一鍵均分、餘數自動處理,合計必須等於付款金額
🏦 資金與對帳多個銀行帳戶+共用現金,提款、轉帳不算收支;可與存摺餘額比對並顯示差額
🎙️ 語音記帳草稿說「A 帳戶領一萬元當零用金」,自動整理成轉帳草稿,補齊欄位、確認後才入帳
✅ 待辦總覽逾期未收、還沒開單、還沒抄表、退租待收/待退,加上 60 天內到期的租約提醒
📊 房東月報匯出含千分位格式的 Excel(三個工作表、凍結表頭),或手動同步到 Google 試算表
💾 完整備份帳務資料加電表、收據照片一起打包成 ZIP,可完整還原

設計上的重點
#

帳務正確性優先。 這個 App 最核心的不是畫面,而是「同一筆錢不能算兩次、也不能漏算」。所有關鍵規則都寫成驗收案例,例如:

租金 8,000、電表從 1,200 到 1,380 度、每度 5 元、水費 200 → 帳單 9,100 元; 一筆 9,100 元匯款結清三個項目,銀行餘額只增加一次。

三個帳戶各提領 10,000 元 → 銀行各減 10,000、現金增加 30,000、支出不增加。

不刪改歷史,只撤銷與留版本。 錯誤的紀錄用「撤銷」處理,保留灰色刪除線;支出修改會留下歷史版本,合計只算最新版。舊帳單保留當時的電費單價,日後調價也不影響。

App 是唯一帳本,試算表只是報表。 Google 試算表是單向、唯讀的報表輸出,不會反過來改動 App 裡的帳;同步失敗重試也不能產生重複帳單。

資料不上 GitHub、不進 APK。 帳務、照片、備份都只存在手機;APK 簽署金鑰放在 GitHub Secrets,不寫進程式碼。

技術架構
#

  • App:Android 原生(Java),支援 Android 8.0 以上
  • 測試:25 組單元測試,涵蓋帳務、押金、退租結算、分攤、抄表、備份、同步協定等
  • 報表同步:Google Apps Script 接收 App 送出的資料寫入試算表,附契約測試
  • CI/CD:GitHub Actions 每次推送自動跑測試、Android lint,產出固定簽署的 APK,新版可直接覆蓋安裝、保留資料

開發方式:規格驅動
#

這個專案採用先寫規格、再寫程式的流程,程式實作與 AI 程式助理協作完成,我負責需求、規則確認與驗收:

  1. 需求規格:把租約、押金、收款、支出的業務規則和驗收案例寫成文件
  2. 變更規格:每一批功能在 docs/changes/ 寫清楚要解決的問題、範圍、資料影響、驗收案例
  3. 實作與檢查:程式完成後跑單元測試與 lint,CI 產出 APK
  4. 驗收:裝到手機上照驗收案例操作,再進下一輪

從 2026 年 10 月 3 日開始,4 天內累積 118 次提交、從 0.1 版迭代到 0.32 版,留下 40 多份變更規格文件,每一個功能為什麼這樣設計都查得到。

下載與安裝
#

  1. 用 Android 手機(8.0 以上)點上方「免費下載試用」,下載 rental-manager.apk
  2. 開啟檔案,第一次會詢問是否允許瀏覽器「安裝不明應用程式」,允許後就能安裝
  3. App 沒有上架 Google Play,所以 Play 安全防護可能會跳出提醒,這是正常的

所有資料只存在你的手機裡,不會上傳。

如何確認檔案沒被改過
#

① 簽章憑證:正版 APK 的簽章憑證 SHA-256 指紋固定是:

D0:1B:47:42:C1:9E:72:E4
37:FF:4E:D5:47:F2:4B:58
79:16:DB:6D:E0:46:85:70
0B:F5:4C:40:42:30:12:E3

Android 也會自動把關:簽章不同的 APK 無法覆蓋安裝在正版上,所以別人做不出能蓋掉正版的假更新。

② 檔案指紋:每個版本 APK 的 SHA-256 都公布在 GitHub Release 頁面。下載後在電腦上計算並比對:

sha256sum rental-manager.apk                    # macOS / Linux
certutil -hashfile rental-manager.apk SHA256    # Windows

③ 建置證明:每個 APK 都有 GitHub 簽發的建置證明,證明它是從公開原始碼、在 GitHub 的機器上自動編譯出來的,不是有人手動上傳。安裝 GitHub CLI 後執行:

gh attestation verify rental-manager.apk --repo loyu3c/rental-management-app

接下來
#

  • 完成 Google 端部署,實際驗證房東月報同步
  • 每位租客一份獨立報表,只能看到自己的租期、押金與帳款
  • 背景自動同步,以及帳務更正流程