{"id":13431057,"url":"https://github.com/Hona/UpBlazor","last_synced_at":"2025-03-16T06:32:07.980Z","repository":{"id":41560923,"uuid":"401575912","full_name":"Hona/UpBlazor","owner":"Hona","description":"🏦 I built this site to integrate with Up bank (an Australian digital bank), to assist users with budgeting and to gain powerful future insights.","archived":false,"fork":false,"pushed_at":"2024-05-18T07:11:35.000Z","size":3379,"stargazers_count":61,"open_issues_count":17,"forks_count":17,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-08-01T02:27:39.564Z","etag":null,"topics":["ant-blazor","ant-design","antblazor","api","blazor","blazor-server","c-sharp","csharp","g2plot","graph","up","up-banking"],"latest_commit_sha":null,"homepage":"https://upblazor.com","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Hona.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null},"funding":{"github":"Hona"}},"created_at":"2021-08-31T04:49:52.000Z","updated_at":"2024-07-31T21:24:54.000Z","dependencies_parsed_at":"2024-01-22T05:49:35.842Z","dependency_job_id":null,"html_url":"https://github.com/Hona/UpBlazor","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hona%2FUpBlazor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hona%2FUpBlazor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hona%2FUpBlazor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hona%2FUpBlazor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hona","download_url":"https://codeload.github.com/Hona/UpBlazor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221656503,"owners_count":16858784,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ant-blazor","ant-design","antblazor","api","blazor","blazor-server","c-sharp","csharp","g2plot","graph","up","up-banking"],"created_at":"2024-07-31T02:01:00.160Z","updated_at":"2024-10-27T09:31:33.435Z","avatar_url":"https://github.com/Hona.png","language":"C#","funding_links":["https://github.com/sponsors/Hona"],"categories":["Sample Projects"],"sub_categories":["Others"],"readme":"\u003cdiv align=\"center\"\u003e\n\n  ![UpBlazor](./_docs/img/logo.png)\n\n  ![.NET Build + Test](https://github.com/Hona/UpBlazor/actions/workflows/dotnet.yml/badge.svg)\n  [![UpBlazor](https://img.shields.io/badge/License-MIT-blue?style=flat-square)](https://github.com/Hona/UpBlazor/blob/master/LICENSE)\n  \n  \n  https://upblazor.com\n  \n\u003c/div\u003e\n\n## What is this?\n\n🏦 I built this site to integrate with [Up bank](https://up.com.au) (an Australian digital bank), to assist users with **budgeting** and to gain **powerful future insights**.\n\n### Epics\n\n - [ ] ⚡ Leverage the [Up API](https://developer.up.com.au) (using [Up.NET](https://github.com/Hona/Up.NET)) to:\n\n     - [x] Fetch existing Transactional and Saver accounts to make selecting which account to save/expense simple\n     - [x] Use existing account balances for more accurate insights\n     - [ ] Track actual vs intended savings\n     - [ ] Automatically set savings in app when created on the site (this API does not exist on Up yet...)\n    \n - [x] 💲 Track incomes\n\n     - [x] Exact ($)\n     - [x] Allow multiple\n\n - [x] 🧾 Track expenses\n \n     - [x] Exact ($) or Relative (%) cost\n     - [x] Source from Income streams/Up accounts\n     - [x] One off + Recurring\n\n - [x] 🪣 Create savings plans\n \n     - [x] Create multiple, per income\n     - [x] Exact ($) or Relative (%) cost\n     - [x] Choose which Saver account to put the amount into\n\n - [ ] 📈 Insights + analytics\n\n     - [x] Show a breakdown of how the calculations work (relative -\u003e absolute), rolling totals, etc\n     - [x] Forecast graphs\n\n        - [x] Income (in each Up account) - account for all income streams\n        - [x] Expenses (aggregate recurring and one offs)\n        - [x] Net Balances (Income - Expenses, in each account)\n\n     - [ ] Suggested Budgetting\n     - [ ] Daily Breakdown\n     - [ ] Actual vs Intended\n     - [ ] Reports\n     \n\u003cdiv align=\"center\"\u003e\n     \n## Examples\n\n#### Layout + Notifications\n\n![Layout + Notifications](./_docs/img/notifications.png)\n\n#### Graph\n\n![Graph](./_docs/img/graph.png)\n\n#### Responsive Sider\n\n\u003cimg src=\"./_docs/img/responsive-sider.png\" width=\"50%\" /\u003e\n\n#### Form\n\n![Form](./_docs/img/form-components.png)\n\n#### Result\n\n![Result](./_docs/img/status-with-form.png)\n\n#### Table\n\n![Table](./_docs/img/table.png)\n\n\u003c/div\u003e\n\n## Code Architecture\n\nThis project follows a simplistic take on Clean Architecture.\n\n#### UpBlazor.Core\n\n* Contains the core models that are stored in the database/not dependent on anything\n* Repository interfaces to abstract the infrastructure layer\n* Helper methods/extensions\n* Services\n\n#### UpBlazor.Infrastructure\n\n* Contains repository implementations using [Marten DB](https://martendb.io/)\n\n#### UpBlazor.Web\n\n* Frontend is Blazor server-side\n* Authentication is using Microsoft OAuth2\n* UI Framework is AntBlazor, with AntBlazor Charts (based on G2Plot)\n\n## Getting Started\n\n### Development\n\n1. Install a local instance of Postgres\n2. Create a database called upblazor, and a user with access\n3. Update the Marten connection string in appsettings.json\n4. Build and run UpBlazor.Web\n\n### Production\n\n1. Install Docker and docker-compose\n2. Run `docker-compose up -d --build`\n3. The program is exposed on port 9994, so reverse proxy your domain to that port\n\n## Acknowledgments\n\n* [AntBlazor](https://github.com/ant-design-blazor/ant-design-blazor)\n* [Up bank](https://up.com.au)\n\n## Contributors\n\n\u003ctable\u003e\n\u003ctr\u003e\n    \u003ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\"\u003e\n        \u003ca href=https://github.com/Hona\u003e\n            \u003cimg src=https://avatars.githubusercontent.com/u/10430890?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=LukeParkerDev/\u003e\n            \u003cbr /\u003e\n            \u003csub style=\"font-size:14px\"\u003e\u003cb\u003eLukeParkerDev\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\"\u003e\n        \u003ca href=https://github.com/anddrzejb\u003e\n            \u003cimg src=https://avatars.githubusercontent.com/u/6518006?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Andrzej Bakun/\u003e\n            \u003cbr /\u003e\n            \u003csub style=\"font-size:14px\"\u003e\u003cb\u003eAndrzej Bakun\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\"\u003e\n        \u003ca href=https://github.com/ImgBotApp\u003e\n            \u003cimg src=https://avatars.githubusercontent.com/u/31427850?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Imgbot/\u003e\n            \u003cbr /\u003e\n            \u003csub style=\"font-size:14px\"\u003e\u003cb\u003eImgbot\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHona%2FUpBlazor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FHona%2FUpBlazor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHona%2FUpBlazor/lists"}