Personal Finance App Backend
Personal Finance App Technical Design Diagram
Backend (boxed in white)
💾 Source Code
* the source code is not a working solution but a reference to help you get started
🧩 Components
* Please note that Heroku is no longer free starting 11/28/2022. You can use Google Firebase as a free alternative.
API Server (Node.js)
Use Node and Express for the backend API framework (JavaScript)
Run on Google Firebase
Other Web Framework Options
C#: ASP.NET Core
Java: Spring
PHP: Laravel
Plaid (Financial Data Provider)
Free for the first 100 financial accounts
Plaid-Node - The official node.js client library
Transactions API - expense tracking
Balance API - net worth tracking
Quick Start - documentation
Database (MongoDB)
NoSQL Database
You can use a relational database, but a NoSQL database is sufficient for small projects
Mongoose JS - JavaScript-based Object Data Modeling (ODM) Library for MongoDB
Other NoSQL Database Options
Other Relational Database Options
Data Synchronizer (Background Job)
Run on Google Firebase
Run periodically on a set schedule (e.g. at least once every day, every 3 hours, etc.)
Implement it using any programming language.
Other Options
Run on Jenkins
🛠 Development
* This guide assumes an intermediate level of JavaScript and coding in general
Use Node with Express for developing the backend.
Implement REST APIs for your expenses and balances.
GET/POST/PUT/DELETE Expense API
GET/POST/PUT/DELETE Balance API
Use their official node client Plaid-Node or implement your own.
Use MongooseJS for communicating with MongoDB.
Create at least two tables: transactions and balances.
Design your background job to periodically request financial data from Plaid and store them in your database.
Run the backend server and jobs on Google Firebase.
Bonus
Implement authentication and authorization (aka AuthN & AuthZ).
Design idempotent APIs.
Implement Unit Tests using Jest.
▶️ YouTube Tutorials
JavaScript Crash Course by Traversy Media
JavaScript ES6, ES7, ES8 by freeCodeCamp.org
NodeJS Crash Course by Traversy Media
ExpressJS Crash Course by Traversy Media
MongoDB Crash Course by Traversy Media
MongoDB & Mongoose by Traversy Media
Firebase Hosting Tutorial by The Net Ninja
Optional
JWT Authentication by Traversy Media
Jest Crash Course (Unit Testing) by Traversy Media
TypeScript Crash Course by Traversy Media
🚀 Utilities
Plaid-Node - The official node.js client library for the Plaid API
Lodash - JavaScript Utilities
Mongoose JS - JavaScript-based Object Data Modeling (ODM) Library for MongoDB
🛸 Resources
Personal Finance App Frontend - Client Side Implementation
Learn to Code for Free - PK’s Bookkeeping App
Plaid - Financial Data API Provider
Visual Studio Code - Code Editor