Code Monkey home page Code Monkey logo

money's Introduction

Money

Money is an outcome logging application written as UAP (UWP) to target both desktop and mobile Windows devices.
Get it from Microsoft Store.

Preview in large window size

Also, we have an implementation using Blazor.

Preview in web

Running the Blazor version locally

The Blazor version is a typical SPA web app with backend api. So you need to run two projects Money.Api & Money.Blazor.Host. We typically do it from cmd/pwsh:

Api

dotnet watch run --project .\src\Money.Api\Money.Api.csproj

Blazor

dotnet watch run --project .\src\Money.Blazor.Host\Money.Blazor.Host.csproj

Blog posts

money's People

Contributors

dependabot[bot] avatar maraf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

money's Issues

Outcome navigation behavior

  • OutcomeCreate will not be part of navigation history.
  • After saving Frame.GoBack() will be invoked. This should be wrapped in something like ICloseable.
  • On desktop this could be created using new window or modal-like panel.

Originally posted on #2.

Caching summary state

When selecting an item from main menu, there is no need for processing a whole navigation.

Super-fast/temporal outcomes

#20. This wizard should support kind of "temporal" / not completely filled outcomes which can be later shown somewhere and completed to standard outcomes.

Speed up loading

Try these features to measure loading time of bar/pie summary.

  • Build better projections for summary view.
  • Replace EF core with local file-based store for projections.
  • Try memory caching of data.

Page title

Every page should have a title.

On medium and large view it should be shown at the top, beside hamburger menu, all the time.

On small/mobile view we can think about hiding it in the main/hamburger menu.

System support for wizards

Wizards should be more integrated to the navigator.
They should respond to forward / backward navigation.

Introduce tags

We should change semantics a bit.

  • Every outcome will be placed in exactly one category.
  • On the other, there will be tags which can be assigned multiply.

Category is a logical classification of outcome. On the other hand, tag is like a sub-category. This way can for example mark outcomes made by credit card.

Navigation

  • All navigation should be done in the Template page content frame.
  • GroupPage should be transformed to kind of control with content, which will replace current frame.
  • Summary page should be one. Because on larger displays, both graphs will be shown side-by-side.
  • IParameterDecorator should be replaced with kind of parameter factory from parameter type or something. I'm not sure in this, but we need to pass a selected month/year from current group page, if any.

Fast outcome creation

Add second tile which directly opens New outcome page.

After saving outcome, a dialog with timeout should be opened. The dialog will contain buttons for closing application (which will be executed after countdown is finished) or navigating to summary view.

Also, in this mode, no data should be loaded, so the application should start as quickly as possible.

Category with black color

Foreground color of color should be taken dynamically based of background color.

For now, we can compute gray-scale version of background and decide whether is "more black" or "more white" and based on this decision take white or black as foreground.

Data shown in overview

Category overview should be also working without specific category key. In this mode it will simply show all outcomes from a specified period.

Add support for currencies

We have a very basic support.

  • UI for managing currencies.
  • Event for updates.
  • Update symbol.
  • Support for exchange rates.
  • Removing exchange rate.
  • Drop price factory.
  • Selecting a currency as default to display amounts in it where possible (has exchange rates).
  • To support exchange rates, we need a price with date everywhere.

Features

  • Introduce tags.
  • No edit page for outcome. Instead use "Entity List" with action button for editing each property.
  • Add icons for categories. It could be FA if there is a lib.
  • Instead of deleting used category, it could be marked is "obsolete/hidden" and so displayed only in a managing page.

Summary period switcher

There should be some kind of switch between shown periods.
This switch should be part of the page, not the Template.

Originally posted on #2.

Diagnostics & development utils

  • Exception logging.
  • Standart messagebox after exception when the apllication is built in debug.
  • View last exception in settings.

Summary pivots

All content must be placed in the PivotItem content to fix scrolling to touch devices.

Creating outcomes

Refactor OutcomeCreate to control, which works like a wizard. Also this control can be used for editing existing outcomes. #8

Full page loading control

A full page loading control should be part of the Template and when navigation starts inside content frame, this control should be shown before navigation in started (inner navigation, calling Navigate on Frame).

In some cases sorting on summary crashes

Go to the summary and randomly start clicking on sorting buttons.
You will got an exception saying the SummaryTotalViewModel can't be casted to the SummaryCategoryViewModel.

Editing existing outcomes

No edit page for outcome. Instead use "Entity List" with action button for editing each property.

  • Amount.
  • Description.
  • When.
  • Categories.
  • Delete.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.