Launch broke and Plan Your Money
Launch broke locally, import sandbox bank data, and create a first money plan.
Introduction
30 Second Summary
Bank statements show where your money went. Turning rows of transactions into a clear next move takes much more work.
In this project, you will launch broke on your Mac. You will use sandbox bank data to generate spending summaries, budgets, recurring-cost insights, and an ordered money plan.
What You'll Build
Your finished app displays made-up accounts across a private dashboard before turning the transactions into a prioritized money plan you can explain.
By the end of this project, you'll have:
- A local broke app that opens its Setup page on your Mac and restarts whenever you want to continue.
- A passwordless sign-in that opens your private dashboard through Supabase, with Row Level Security protecting each user's financial data.
- A Plaid Sandbox test bank whose accounts and transactions populate spending categories, budgets, recurring charges, country-appropriate suggestions, and a deterministic money plan.
- Secret Mission: Correct one repeated merchant and create a reusable categorization rule that updates every matching transaction.
Are there any prerequisites?
You need a Mac, internet access, an email inbox, and permission to install software. Every required developer tool and account is set up during the project.
Before We Start
Before any setup begins, this is your moment to commit to a safe version of broke. Your project stays local with Supabase Free plus Plaid Sandbox data while every real bank connection, Production credential, paid feature, and AI provider stays outside it.
Install broke on Your Mac
Your local broke app uses Git to download its source. Node.js runs the app on your Mac.
First, you'll check both tools from Terminal. The broke installer then prepares the local app for you.
In this step, get ready to:
- Verify Git in Terminal.
- Install Node.js 26.13.0 LTS.
- Install broke and confirm its Setup page.
Check Git and Node.js
The installer depends on Git to fetch broke. It also needs a compatible Node.js runtime.
- Press Cmd+Space to open macOS search.
- Type Terminal and press Enter.
- Check whether Git is available by running this command:
command -v git
This command searches for the git executable. A returned file path confirms Git is available.
✔️ Git returns a path
Git is ready for the broke installer.
ⓧ Git returns no output
Git is missing from Terminal. Apple's developer tools provide the Git installation this project needs.
- Start the Apple installer by running this command:
xcode-select --install
This command opens the installation dialog for Apple Command Line Tools for Xcode.
- Complete the Apple installation dialog.
- Return to Terminal after the installation finishes.
- Run the Git check above again.
You should now see a file path for Git.
broke requires Node.js 22.18 or newer. This project uses the current LTS release of 26.13.0 LTS.
- Check the installed Node.js major version by running this command:
node -p 'process.versions.node.split(".")[0]'
The command prints only the major version. An output of 26 confirms the pinned LTS release is available.
✔️ I see the required major version
The check returns 26. Node.js is ready to run broke.
ⓧ I see an older version
Your Mac has an older Node.js release. Install 26.13.0 LTS so your local runtime matches this project.
The macOS installer may ask for administrator approval. That approval only allows Node.js to be installed on your Mac.
- Open the official Node.js download page in your browser.
- Download the macOS installer for 26.13.0 LTS.
- Run the downloaded installer.
- Complete the installer with its default options.
- Close Terminal after the installation finishes.
- Press Cmd+Space to reopen macOS search.
- Type Terminal and press Enter.
- Verify the new major version by running this command:
node -p 'process.versions.node.split(".")[0]'
You should now see 26.
ⓧ Command not found
Node.js is missing from your Mac. The official LTS installer adds Node.js to Terminal.
The macOS installer may ask for administrator approval. That approval only allows Node.js to be installed on your Mac.
- Open the official Node.js download page in your browser.
- Download the macOS installer for 26.13.0 LTS.
- Run the downloaded installer.
- Complete the installer with its default options.
- Close Terminal after the installation finishes.
- Press Cmd+Space to reopen macOS search.
- Type Terminal and press Enter.
- Verify the installed major version by running this command:
node -p 'process.versions.node.split(".")[0]'
You should now see 26.
Still Missing a Tool?
- Close Terminal if it was open during an installation.
- Reopen Terminal through macOS search.
- Repeat the check for the tool that was missing.
Ask for help with the exact result you see: Why does Terminal still fail to find Git or Node.js after I installed it?
Install broke
The installer handles the local setup in one pass. It clones broke into ~/broke.
It installs the project's locked dependencies. It starts the local server when those dependencies are ready.
Your browser opens the Setup page after the server starts.
This is the slowest part of the step, so allow a few minutes for the dependency download on a slower connection.
- Install broke by running this command:
curl -fsSL https://raw.githubusercontent.com/nextwork-projects/broke/main/install.sh | sh
What Does This Command Do?
- The curl command securely downloads the installer from the broke repository.
- The sh command runs the downloaded installer.
- The installer creates ~/broke with the local application files.
- The installer prepares the dependencies before starting the app.
- Keep Terminal open while the installer works.
- Wait for Terminal to print broke is running at.
That message confirms the local server is available. The installer also opens the app in your browser.
Installer Stopped Early?
- Check that your Mac still has an internet connection.
- Confirm the Git check returns a file path.
- Confirm the Node.js check returns 26.
- Run the installer command above again after fixing the failed check.
Share the final lines from Terminal when asking for help: Why did the broke installer stop before starting the local server?
Confirm the Setup page
The Setup page is broke's connection checklist. Seeing it proves the local app is running before any cloud resources exist.
Before you refresh, do you expect the local setup checklist or a browser connection error?
- Switch back to the browser tab opened by the installer.
- Enter http://localhost:3000/setup in the browser address bar if no tab opened.
- Refresh the Setup page.
You'll see Create your free database. You'll also see Turn on your database.
The third required section is Connect banks. Together, these sections confirm the local installation is ready.
- Leave the connection checklist unchanged.
- Leave the optional AI section unchanged.
✔️ The Setup page is ready
You got the local stack running. broke can now guide the database setup from its own checklist.
ⓧ I'd like to double check the setup
Compare your Mac with this installation checkpoint.
- Confirm Terminal returns a file path for git.
- Confirm Node.js 26.13.0 LTS is installed.
- Confirm the installer created the local app in ~/broke.
- Confirm the browser loads http://localhost:3000/setup.
No Supabase project or Plaid account exists at this checkpoint.
Your local broke installation is running. Next up, you'll connect a private Supabase database and reach onboarding.
Connect Your Private Database
Your local broke app is running. It still has nowhere private to remember users or money.
Supabase gives broke passwordless authentication. It also provides a private database protected by Row Level Security.
Plaid Sandbox prepares safe test-bank access. You will finish at onboarding with no linked account, which makes the next step's import easy to see.
In this step, get ready to:
- Connect a Supabase Free project to broke.
- Apply the database migrations that protect each user's data.
- Reach onboarding through a configured Plaid Sandbox connection.
Create your Supabase project
The Create your free database section connects broke to a database owned by you. The Supabase Free plan costs $0/month for this project.
This setup includes a database password plus a secret key. Keep both credentials private while you move them between Supabase and your local broke app.
- Return to the browser tab showing http://localhost:3000/setup.
- Use the account link inside Create your free database to reach Supabase.
- Create your Supabase account through the sign-up flow.
- Create a Supabase project on the Free plan.
- Enter broke as the project name.
- Create a strong database password.
- Store the database password in your password manager.
- Complete the project form to start provisioning.
Supabase may spend a little time provisioning the project. This pause means the database is being prepared for its first connection.
- Select Project Settings in the Supabase sidebar.
- Select Data API.
- Copy the Project URL.
- Switch back to the broke Setup page.
- Paste the Project URL into the matching field under Create your free database.
- Switch back to Supabase.
- Select API Keys.
Why keep the secret key private?
The publishable key supports browser requests that follow your database policies. The secret key can bypass Row Level Security, so it must stay on the server side.
Avoid screenshots while either key is visible. Your final checkpoint uses the onboarding page instead.
- Copy the publishable key from Supabase.
- Switch back to broke.
- Paste the publishable key into its matching field.
- Switch back to Supabase.
- Copy the secret key.
- Switch back to broke.
- Paste the secret key into its matching field.
- Click Save.
Good progress. Broke now knows which Supabase project belongs to your local app.
Can't save the Supabase details?
- Copy the Project URL again from Data API to remove any missing characters.
- Confirm the publishable key is in the publishable-key field.
- Confirm the secret key is in the secret-key field.
Ask for help without sharing either key: Why won't broke save my Supabase Project URL and keys?
Apply broke's database migrations
The Session pooler URI gives broke a direct database connection. Broke uses that connection to apply database migrations that create its tables plus security policies.
The copied URI contains YOUR-PASSWORD between square brackets. You will edit a temporary copy in TextEdit so you can replace that entire placeholder without changing the rest of the connection.
- Switch back to the Supabase dashboard.
- Click Connect.
- Select the Session pooler connection option.
- Copy the Session pooler URI.
- Press Cmd+Space to open Spotlight.
- Type TextEdit and press Enter.
- Create a blank, unsaved document in TextEdit.
- Paste the Session pooler URI into the document.
Finding the exact placeholder is a little fiddly. Select YOUR-PASSWORD plus the square bracket immediately before it and the square bracket immediately after it.
- Select the entire password placeholder, including both square brackets.
- Copy your saved database password from your password manager.
- Paste the password over the selected placeholder.
- Check that the placeholder and both square brackets are gone.
- Copy the entire completed URI from TextEdit.
- Switch back to the broke Setup page.
- Paste the completed URI into SUPABASE_DB_URL.
- Save the database connection.
Broke can now reach the private database. The waiting migrations can create the schema it expects.
- Return to the temporary TextEdit document.
- Close the document without saving it so the database password is not stored in a notes file.
- Use the migration action under Turn on your database to apply the next waiting migration.
- Repeat the migration action until broke reports that the database is up to date.
That is the database foundation finished. Broke now has its application schema plus user-scoped security policies.
How does Row Level Security help?
Row Level Security adds user ownership checks whenever the database reads or changes protected rows. Broke's policies compare each row's user identifier with the signed-in user.
The migrations also limit browser access to the operations that the app needs. This keeps Plaid access tokens plus synchronization cursors away from browser requests.
🙋♀️ Are migrations still waiting?
- Copy a fresh Session pooler URI from Connect.
- Confirm you replaced only the password placeholder.
- Confirm the Supabase project has finished provisioning.
Ask for help without sharing the URI or password: Why can't broke apply its Supabase migrations?
Configure Plaid Sandbox and sign in
Plaid Sandbox provides made-up institutions plus accounts for development. It is free for testing, so this project never needs Production credentials or a real bank login.
- Expand Connect banks on the broke Setup page.
- Use broke's account link to reach the Plaid sign-up flow.
- Create your Plaid developer account.
- Complete the account flow until the Plaid developer dashboard opens.
- Locate the client ID plus Sandbox secret for your developer account.
The Sandbox secret is still a credential even though its data is fictional. Keep it private while you copy it into broke.
- Copy the client ID from Plaid.
- Switch back to broke.
- Paste the client ID into PLAID_CLIENT_ID.
The client ID field now identifies your Plaid developer application.
- Switch back to the Plaid developer dashboard.
- Copy the Sandbox secret.
- Switch back to broke.
- Paste the Sandbox secret into PLAID_SECRET.
Both Plaid credential fields are now filled with Sandbox account details.
- Confirm PLAID_ENV remains set to sandbox.
- Save the Plaid configuration.
Broke is now prepared to create a safe test-bank connection. No financial account has been linked yet.
Can't save the Plaid configuration?
- Confirm the client ID came from your Plaid developer dashboard.
- Confirm you copied the Sandbox secret instead of a Production credential.
- Confirm PLAID_ENV contains sandbox.
Ask for help without sharing either credential: Why won't broke accept my Plaid Sandbox configuration?
Supabase Magic Links are one-time sign-in links. The local broke origin must be allowed as the Site URL before the link can return you to the app.
Project URL or Site URL?
Earlier, you copied the Supabase Project URL into broke. Paste that address in full. It normally ends in .supabase.co.
The Site URL below is different. If your browser shows http://localhost:3000/login, use http://localhost:3000. Keep http:// and remove /login or anything else after the port number.
- Open broke's sign-in page from the local app.
- Find the address shown after Set Site URL to.
- Record that exact address here: your displayed local broke origin.
- Switch back to the Supabase dashboard.
- Open URL Configuration.
- Set Site URL to your displayed local broke origin.
- Click Save.
- Return to broke's sign-in page.
- Enter the email address you want to use for broke.
- Click Send link.
The sign-in email can take a short while to arrive. Supabase is creating a one-time link for the address you entered.
- Open your email inbox in the same browser.
- Open the newest Supabase sign-in email.
- Follow its one-time sign-in link back to broke.
Before you continue, do you expect broke to show a linked financial account already?
- Select the country that fits your demo profile.
- Continue onboarding to the bank step.
You will see the onboarding bank step with no linked account. That empty state is intentional because the next step supplies safe Sandbox transactions.
Did the email link return to sign-in?
- Confirm the Supabase Site URL matches the origin displayed by broke.
- Request a new link with Send link because each Magic Link works once.
- Open the new link in the same browser that is running broke.
Ask for help without sharing the email link: Why does my Supabase Magic Link return me to broke without signing me in?
Your private foundation is working. Next, you will import a made-up bank plus its transactions without exposing real financial information.
Import a Test Bank
Your private Supabase database is ready. Your passwordless authentication session has carried you to broke's onboarding bank step.
The app can identify you. It still has no money to analyze.
Plaid Sandbox fills that gap with made-up accounts. It also supplies test transactions.
In this step, get ready to:
- Link a Plaid Sandbox test institution.
- Complete onboarding with demo goals.
- Confirm the dashboard shows imported Sandbox money.
Link a Sandbox test bank
Your saved sandbox environment unlocks broke's dedicated test-bank path. This path never asks for credentials from a real financial institution.
Before you click, do you expect this Sandbox path to ask for credentials from your real bank?
- Click Use a test bank on the onboarding bank step.
- Keep the broke browser tab open during the import.
- Wait until broke reports a linked test institution.
You'll see a linked test institution. The result summarizes the imported accounts plus the imported transactions.
That is the crucial handoff complete because your private database now holds safe test money.
What just happened?
broke asked Plaid Sandbox for a test institution. Plaid returned made-up account records.
broke imported the transaction history into Supabase for your signed-in user. The existing Row Level Security policies scope those rows to your user ID.
🙋♀️ Test bank not linking?
- Switch back to Connect banks on the setup page from earlier.
- Confirm PLAID_ENV still shows sandbox.
- Save the Sandbox configuration again if broke shows an incomplete Plaid setup.
Help me fix the Sandbox test-bank import.
Complete demo onboarding
Onboarding now has enough data to derive an initial result. Your goals provide context for that first interpretation.
- Continue to the goal step in onboarding.
- Select the goals that best fit your demo learner.
- Continue to the result step.
- Review the first result derived from the imported Sandbox data.
You'll see an initial result built from the test accounts and transactions you imported.
Verify the populated dashboard
Finishing onboarding opens the clearest proof that the import worked. The dashboard turns the raw test data into visible account information.
Before you finish onboarding, do you expect the dashboard to stay empty after the Sandbox import?
- Use the final onboarding control to finish the flow.
- Confirm the dashboard shows at least one account tile.
- Inspect Spent in, Coming up, or Latest spending for populated content.
You now have a working money demo powered entirely by safe Sandbox data.
Dashboard still empty?
- Refresh the broke browser tab once.
- Confirm the local server is still running in the Terminal window from earlier.
- Return to the saved onboarding flow if the browser sends you back there.
Help me find why my imported Sandbox data is missing from the dashboard.
Your test money is in place. Next, you'll trace it through spending categories, individual activity, budgets, and recurring charges.
Explore Your Sandbox Money
Your populated broke dashboard proves the Plaid Sandbox import worked. A dashboard total alone cannot explain where the money went.
You’ll follow the test money from account balances into spending categories. Then you’ll connect one category to its individual transactions.
In this step, get ready to:
- Explore the views that explain your imported spending.
- Save a monthly budget that survives a browser refresh.
- Check the guidance available for your selected country.
Read the story behind the totals
Home gives you a quick summary of your imported money. Spending groups those transactions into categories that are easier to compare.
- Review each account tile on the populated Home dashboard from earlier.
- Read the current-month total under Spent in.
- Review the expected charges under Coming up.
- Scan the recent merchants under Latest spending.
- Select Spending in the primary navigation.
- Identify the largest category in Overview.
- Record the largest category here: your largest spending category.
- Choose one frequent or large merchant from the spending data.
- Record the chosen merchant here: your chosen merchant.
That first pass gives the dashboard a story. One category now leads to a specific merchant.
Trace one merchant in Activity
A category total compresses many transaction rows into one number. Activity exposes the individual entries behind that summary.
- Select Activity in the primary navigation.
- Use the merchant search to find your chosen merchant.
- Review each matching transaction.
- Compare the matching amounts with the total shown for your largest spending category.
You’ll see the Sandbox transaction rows that support the broader category summary. This connection makes the dashboard total easier to trust.
Can’t find the merchant?
- Copy the merchant spelling from Latest spending.
- Clear any category filters that could hide matching transactions.
- Search for a shorter distinctive part of the merchant name.
Ask for help with the search if the imported rows still seem missing: Why can’t I find my chosen merchant in broke Activity?
Complete your money tour
A monthly budget turns spending history into a limit you can revisit. Recurring reveals the charges that may keep affecting future months.
How are suggested budgets calculated?
Suggested budgets use the last three full months of imported history.
broke rounds each suggestion up. A suggestion never falls below the current month’s spending.
- Return to Spending in the primary navigation.
- Select the Budgets tab.
- Choose one category that shows a suggested amount.
- Use the category’s budget control to save its suggested monthly amount.
- Record the budget category here: your monthly budget category.
- Record the saved amount here: your saved monthly amount.
You should see the selected category display its saved monthly amount.
- Select the Recurring tab.
- Review the displayed monthly total.
- Inspect the upcoming or active recurring charges.
The Cards view changes according to the country saved during onboarding. Use the matching path below to confirm what broke provides for your profile.
United States
- Select More in the primary navigation.
- Select Cards.
- Confirm the page shows card estimates based on the imported spending.
The visible estimates confirm that the Cards view supports your saved country.
Outside the United States
- Select More in the primary navigation.
- Select Cards.
- Confirm the page reports Cards are US-only for now.
This message confirms that broke intentionally hides the US-only comparison for your saved country.
Before the refresh, consider whether the saved budget amount stays or resets.
- Return to Spending in the primary navigation.
- Select the Budgets tab.
- Refresh the browser page.
- Confirm your monthly budget category still shows your saved monthly amount.
- Select Activity in the primary navigation.
- Use the merchant search to find your chosen merchant.
- Confirm the matching Sandbox transaction rows remain visible.
Your selected budget amount remains saved after the refresh. The Activity search still returns the imported transaction evidence.
You have now proved that your budget survives a refresh while your Sandbox evidence stays intact.
Budget not staying saved?
- Confirm you are still signed in to the same local broke session.
- Save the amount again in Budgets.
- Wait for the budget editor to finish saving before refreshing.
Get targeted help if the amount still resets: Why does my broke budget disappear after I refresh the page?
Your Sandbox money now connects balances to categories, transactions, budgets, recurring costs, and country-specific guidance. Next up, you’ll turn that evidence into an ordered money plan.
Generate Your Money Plan
Your saved budget already proves that broke can turn Plaid Sandbox transactions into a choice that persists after a refresh.
Separate totals and recurring charges still leave you deciding what matters first. This step turns that evidence into a summary and numbered plan.
A deterministic money plan builds recommendations from your stored sandbox data. It works without an AI provider.
In this step, get ready to:
- Write a money plan from your imported sandbox data.
- Open step 2 in Next steps and review its checklist.
- Review guidance that fits your selected country and profile.
Write your money plan
The summary sentence at the top of the Money plan page gives you the planner's starting point. Once you write a plan, numbered Next steps turn that summary into an order you can follow.
- Select Money plan in broke's navigation.
- Read the summary sentence at the top of the page.
- Compare the summary with the spending pattern you reviewed earlier.
Before you write the plan, which pattern from your saved budget or recurring charges do you think broke will place first?
Writing the plan can take one or two minutes while broke checks the sandbox data. You can leave the page while it works.
- Click Write my plan.
- Wait for the button label to change to Redo my plan.
You'll see Redo my plan, a summary sentence, and numbered Next steps.
- Open the first numbered step under Next steps.
You'll see why broke included the step. You'll also see its checklist.
How does the plan work without AI?
With no AI provider selected, broke creates a plan from the financial patterns stored in your database. It saves the recommendations as numbered Next steps.
Your existing Supabase Row Level Security policies keep the saved plan scoped to your signed-in user.
That's the core result working. Broke has turned test money into a summary and numbered Next steps without sending it to an AI provider.
Open step 2 in Next steps
Each numbered step opens to show why it matters and what to do. Step 2 gives you a second recommendation to trace back to your sandbox data.
- Open step 2 under Next steps.
- Review each checklist item.
- Identify the evidence type named in step 2's reason.
Where should you check the evidence?
- Use Spending for category totals or overspending evidence.
- Use Recurring for repeated charges or upcoming costs.
- Use Home for account balances or savings evidence.
- Use Activity for individual transaction evidence.
- Select the broke view that contains the supporting evidence.
- Locate the category total or transaction that supports step 2.
- Return to Money plan.
- Open step 2 under Next steps.
- Compare its reason with the evidence you located.
Step 2 now has a traceable source in your sandbox data. That connection helps you judge why it appears second in your plan.
Review country-appropriate guidance
Optimize selects topics using the country saved in your profile. Bonuses evaluates offers against your profile and imported data.
- Select Optimize in the plan navigation.
- Read the suggestions that apply to your selected country.
- Choose one Optimize suggestion that fits your situation.
- Select Bonuses in the plan navigation.
- Review which results fit your saved profile.
- Choose one Bonuses result that is appropriate for your profile.
Keep the guidance in context
The Optimize and Bonuses results are general education. They do not provide financial or tax advice.
Use the results as prompts for further research. Consult a qualified professional before making decisions that depend on your personal circumstances.
Before you return to the plan, do you expect your summary and numbered Next steps to remain available after visiting the other views?
- Return to Money plan.
- Confirm that Redo my plan is visible.
- Read the summary sentence at the top of the page.
- Confirm that numbered Next steps still appear.
- Open one numbered step.
- Review its checklist.
You'll see Redo my plan, the summary sentence, and numbered Next steps. Open a step to see its checklist.
That closes the loop. Your sandbox data now supports a private money plan with an ordered checklist you can explain from evidence.
Secret mission
Fix a Category and Automate It
One corrected transaction improves a single row. A reusable rule fixes the full pattern. In this mission, you will correct a repeated Sandbox merchant and automate its category for existing matches and future synced transactions.
Clean Up Your Resources
Clean Up Your Resources
Supabase Free and Plaid Sandbox cost $0 for this project. Choose whether to keep the setup, pause it for later, or delete it.
Resources you used:
- The local ~/broke folder contains the broke app plus Start broke.command.
- Your Supabase Free project stores the signed-in user's private app data behind Row Level Security policies.
- Your Plaid Sandbox connection contains the linked test institution plus its made-up financial data.
Keep everything running
No deletion is needed. Choose this if you want to keep using broke with the same sandbox data.
- Stop the local broke server from the Terminal window that is running it.
- Keep the Supabase project on the Free plan.
- Leave PLAID_ENV set to sandbox.
- Restart broke later by double-clicking Start broke.command inside ~/broke.
Your private app data stays ready for your next session.
Pause - I'll come back to this later
Pause the running services while preserving the project for later. Your local files remain on your Mac.
- Stop the local broke server from the Terminal window that is running it.
- Switch back to the Supabase dashboard from earlier.
- Select Settings.
- Select General.
- Select Project availability.
- Click Pause Project.
- Complete the confirmation.
Supabase now shows the project as paused. Your cloud database is safely parked for later.
- Resume the project later from the Supabase dashboard before using broke.
- Restart broke by double-clicking Start broke.command inside ~/broke.
Plaid Sandbox stays free while idle.
Delete - I don't want to use this again
Deleting these resources is permanent. This gives you a clean reset when you no longer need the app.
- Switch back to the local broke app from earlier.
- Select Settings.
- Choose Database.
- Click Clear my data.
- Complete the confirmation.
Your imported Sandbox money is now cleared from broke. Your sign-in profile remains in Supabase until you delete the cloud project.
- Switch back to the Supabase dashboard from earlier.
- Select Settings.
- Select General.
- Open Delete project.
- Click Delete Project.
- Enter the exact Supabase project name.
- Complete the confirmation.
The Supabase project is now permanently removed.
- Return to the Terminal window running broke.
- Stop the local broke server.
- Use Finder to locate the broke folder inside your Mac home folder.
- Remove the broke folder through Finder.
- Confirm that ~/broke no longer appears in your home folder.
Your cleanup is complete. The local app, cloud database, and imported Sandbox data are gone.
Nice Work!
Nice Work!
You did it! Your locally running broke app now turns safe Plaid Sandbox transactions into private spending insights. It also produces a prioritized money plan.
You've learned how to:
- Connect passwordless authentication to a learner-owned Supabase project. Protect each user's financial records with user-scoped Row Level Security.
- Trace imported transactions from Home into Spending. Confirm the underlying rows in Activity. Save a persistent monthly budget. Inspect recurring charges.
- Generate a deterministic money plan from the Sandbox data without connecting an AI provider. Compare its first move with the evidence already visible in broke.
- Secret Mission: Corrected a repeated merchant's transaction category. Created a narrow categorization rule for matching transactions. Verified the rule against past rows. Prepared the rule for future synced matches.
Ready to quiz yourself?