Skip to content
/ UpBlazor Public

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

License

Notifications You must be signed in to change notification settings

Hona/UpBlazor

Repository files navigation

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

LukeParkerDev/
LukeParkerDev
Andrzej
Andrzej Bakun
Imgbot/
Imgbot