/UpBlazor

🏦 Luke Parker: I built this site to integrate with Up bank (an Australian digital bank), to assist users with budgeting and to gain powerful future insights.

Primary LanguageC#MIT LicenseMIT

UpBlazor

.NET Build + Test UpBlazor

https://upblazor.com

What is this?

🏦 I built this site to integrate with Up bank (an Australian digital bank), to assist users with budgeting and to gain powerful future insights.

Epics

  • ⚡ Leverage the Up API (using Up.NET) to:

    • Fetch existing Transactional and Saver accounts to make selecting which account to save/expense simple
    • Use existing account balances for more accurate insights
    • Track actual vs intended savings
    • Automatically set savings in app when created on the site (this API does not exist on Up yet...)
  • 💲 Track incomes

    • Exact ($)
    • Allow multiple
  • 🧾 Track expenses

    • Exact ($) or Relative (%) cost
    • Source from Income streams/Up accounts
    • One off + Recurring
  • 🪣 Create savings plans

    • Create multiple, per income
    • Exact ($) or Relative (%) cost
    • Choose which Saver account to put the amount into
  • 📈 Insights + analytics

    • Show a breakdown of how the calculations work (relative -> absolute), rolling totals, etc

    • Forecast graphs

      • Income (in each Up account) - account for all income streams
      • Expenses (aggregate recurring and one offs)
      • Net Balances (Income - Expenses, in each account)
    • Suggested Budgetting

    • Daily Breakdown

    • Actual vs Intended

    • Reports

Examples

Layout + Notifications

Layout + Notifications

Graph

Graph

Responsive Sider

Form

Form

Result

Result

Table

Table

Code Architecture

This project follows a simplistic take on Clean Architecture.

UpBlazor.Core

  • Contains the core models that are stored in the database/not dependent on anything
  • Repository interfaces to abstract the infrastructure layer
  • Helper methods/extensions
  • Services

UpBlazor.Infrastructure

  • Contains repository implementations using Marten DB

UpBlazor.Web

  • Frontend is Blazor server-side
  • Authentication is using Microsoft OAuth2
  • UI Framework is AntBlazor, with AntBlazor Charts (based on G2Plot)

Getting Started

Development

  1. Install a local instance of Postgres
  2. Create a database called upblazor, and a user with access
  3. Update the Marten connection string in appsettings.json
  4. Build and run UpBlazor.Web

Production

  1. Install Docker and docker-compose
  2. Run docker-compose up -d --build
  3. The program is exposed on port 9994, so reverse proxy your domain to that port

Acknowledgments

Contributors

Luke
Luke Parker [SSW]
Andrzej
Andrzej Bakun
Imgbot/
Imgbot