<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Building Money Actually]]></title><description><![CDATA[Building Money Actually]]></description><link>https://moneyactually.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6ae9223de3e543bc6f82643c/5e1d6e94-cea4-45ac-96ba-79097c92ba36.png</url><title>Building Money Actually</title><link>https://moneyactually.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Fri, 13 Nov 2026 22:28:12 GMT</lastBuildDate><atom:link href="https://moneyactually.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Why my budgeting app tracks profit per car, rental or client]]></title><description><![CDATA[Notes from building Money Actually by myself: profit per car, rental or client, no transfer button, and how the assistant's figures are checked.]]></description><link>https://moneyactually.hashnode.dev/why-my-budgeting-app-tracks-profit-per-car-rental-or-client</link><guid isPermaLink="true">https://moneyactually.hashnode.dev/why-my-budgeting-app-tracks-profit-per-car-rental-or-client</guid><category><![CDATA[fintech]]></category><category><![CDATA[personal finance]]></category><category><![CDATA[side project]]></category><dc:creator><![CDATA[Rashed Alfarra]]></dc:creator><pubDate>Tue, 03 Nov 2026 00:46:17 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6ae9223de3e543bc6f82643c/8ed31c18-357c-4be6-b7a9-1517fc4f5ec8.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I host a car on Turo and I'm a developer, and I built Money Actually by myself. It's a budget and net worth app, but it also shows whether a car you rent out made anything after the loan, the insurance and the fees.</p>
<h2>Each car, rental or client gets its own numbers</h2>
<p>Every car, rental or freelance client gets its own profit, break-even and year report, grouped the way Schedule C and E group them. The budget and net worth are still there. The car and client numbers sit next to them, not buried inside. Net worth counts every debt: the car loan sits next to the car.</p>
<h2>What it won't do</h2>
<p>It's read-only. There is no transfer button anywhere in the app. Bank sign-in goes through Plaid, so your bank password never reaches my server. Data is encrypted with AES-256 at rest, and the Plaid access tokens get a second AES-256-GCM layer. No ads, no data selling, and you can delete everything from inside the app or on the web. Details are on the <a href="https://moneyactually.app/security?ref=hashnode">security page</a>.</p>
<h2>It says when a total is incomplete</h2>
<p>If transactions from the last 90 days aren't assigned to a car, rental or client, the business page says so right under the total: every figure is only as complete as what is tagged.</p>
<h2>How it's built</h2>
<ul>
<li>The web app is Next.js on Vercel, with Postgres on Neon and Drizzle. Bank data comes through Plaid.</li>
<li>The iPhone and Android apps are one Expo app that talks to the same API.</li>
<li>Money is stored and added up as integer cents, in one package of pure functions with tests.</li>
<li>Slip, the in-app assistant, is AI only when you ask. Every dollar figure in a reply is checked against the figures that were sent, and a reply quoting any other amount is thrown away before you see it.</li>
</ul>
<p>Google Play rejected the first submission because the reviewer couldn't sign in. Apple rejected it under 3.1.1 (in-app purchase), 3.1.2 (the EULA), 3.1.2(c) (how prominently the price showed) and 2.1(b) (the reviewer account). Play approved it on Oct 5 and Apple on Oct 14.</p>
<p>US banks only, through Plaid, up to five banks. Web, iPhone and Android. The demo runs on sample data with no signup: <a href="https://moneyactually.app/demo/business?ref=hashnode">moneyactually.app/demo/business</a></p>
<p>If you've built on Plaid, did you keep it read-only too?</p>
]]></content:encoded></item></channel></rss>