Coder Social home page Coder Social logo

budgetapp's Introduction

Hello!

I am a full-time software engineer at Cerner and a part-time graduate student at West Chester University of Pennsylvania

  • ๐Ÿ”ญ I am currently working on: Many side projects, a Master's degree, and a fulfilling career.
  • ๐Ÿ‘ฏ I am always on the look-out for new ideas and projects that inspire me.
  • ๐Ÿ’ฌ Ask me about: Anything! I am always excited to discuss new technologies and industry trends.
  • ๐Ÿ“ซ How to reach me: [email protected]
  • โšก Fun fact: I began coding around age 12 and I knew from that point forward that software engineering was the career for me.

A few of my favorite topics:

  • IOT and Embedded Systems
  • Hardware Acceleration
  • Cloud Application Development
  • Android Development
  • Computer Science Theory
  • New Ideas of all Kinds!

budgetapp's People

Contributors

tylermoser avatar

Stargazers

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

budgetapp's Issues

Predictive descriptions

Display commonly used descriptions on the add new expense fragment for the user to select.

  • Make these descriptions hide-able
  • Remember whether the user wants these descriptions visible or hidden
  • Allow the user to pin descriptions that they always want visible here

Improve app load time

Improve the app so that it takes less time from clicking on the app launcher icon to seeing the add new expense fragment so that the user can add an expense without having to wait at all.

Add ability to create new spreadsheets

Add the option to create a new spreadsheet to the change spreadsheets dialog fragment. This spreadsheet should have only a single sheet to start with a filled in empty budget sheet layout.

Improve Sign Out

Currently, when the user signs out of the app, the app is closed so that they have to re-enter the app. Change this so that the app handles an unauthenticated user without and spreadsheet or data.

Allow the user to rearrange elements on the Google Sheet

In the app I have assumed a sheet layout matching that which I use for my current budgets. Other users may not like this layout. Add the ability to the app settings screen (or maybe even individually for each sheet) to rearrange where these elements should be in the Google Sheet being created. This requires that the sheet coordinates be variable to match those set by the user.

Port this app

Port this app to IOS, desktop, and create a webapp. This really isn't that necessary, as all relevant platforms allow using Google Sheets, but it would be a good activity.

Switching back to old spreadsheet when setting sheet to open on load

When switching the app to use a new spreadsheet (likely for a new year) and then setting the sheet to open on startup, the app switches back to using the old spreadsheet.

Clearing the app storage & data does not fix this.
Attempted to fix by reinstalling the app at the beginning of 2020 to get around this issue.

Support for expenses with decimal amounts

Add support to the app for expenses with a decimal amount. While I only mark down expenses in whole dollar amounts, other users may want more detailed control. Add this feature, and allow the user to switch between decimal and whole value amounts on the app settings page.

Advanced new budget UI (copying, splitting, rolling over)

Create a more advanced UI for adding new budgets/sheets in addition to the existing one.

  • Allow the user to enter an amount, and split that amount up between sheets by percentages and set amounts
  • Allow the user to set these split up amounts as either new negative expenses on existing sheets or as the rollover amount for new sheets.

Refresh enhancement

See onRefreshButtonClick in BudgetActivity

Comment in code:

In the future, refresh should be reworked.
In some cases, refresh as used in the code should just reload the sheet from the server,
while the true refresh logic should also reload the navigation drawer. A manager to
manage the speed and number of requests should be implemented at this point. In
addition, for this true refresh logic, the requests should be sent and processed
concurrently. The refresh UI indicator icons/wheels should not stop spinning until all
responses have been received and processed.

Add support for additional notes or details to expenses

In my existing budgets, some expenses have notes off to the right hand side on the normal expense entry. Add support for this to the app.

The UI elements for adding notes to a new expense should initially be hidden unless expanded. In addition, once the app supports editing existing expenses, the option should be available to add, remove, and edit theses notes/details.

Improve expenses list UI

Make basic adjustments to the UI for the expense list fragment so that it is more visually pleasing.

  • Add separators between each expense
  • Allow descriptions to wrap if they are too long to be displayed normally
  • Consider the potential for more interactive expense elements in the UI

Allow deleting expenses

Improve the expense list fragment UI to allow expenses to be deleted from active budget

  • This should remove the row and update the sheet to move all expenses below the deleted one up so that there is no empty spot in the Google Sheet.

Remove dependency on sheet title

The Google API takes the sheet ID as the identifying parameter for a sheet sometimes, and the sheet title at other times. This results in a number of difficulties keeping the sheet name up to date in the app at all times, and makes the code less clean.

The sheet title should be removed from the BudgetFragment classes and each time an action is taken that needs a sheet title, that title should be looked up with a separate call.

The sheet title can still be cached and updated when it is obtained, but the app logic will not depend on this title being up to date for api calls.

Cache usability improvements

Wherever possible, remove direct cache use in the code and instead use it in the API or abstractions so that the effort spent managing the cache is abstracted enough that developers do not always have to consider the cache.

Integrate with financial company API's (Discover card transaction integration)

At this point the user has to manually enter each of their expenses into the app. Currently, there do not seem to be sufficient API's available from banks / credit card companies to allow for complex integration, but if any are added, it would be very helpful to have the app check for charges on all of the user's accounts and then suggest expenses to add to sheets/spreadsheets based off of these charges.

Create alternative cache implementations

Currently the app cache uses Android's shared preferences feature. Using this feature for a cache sort of mangles its purpose, as it is intended to only really store settings. Currently, this implementation works very well for the current use cases and it is easy to implement, but ultimately other implementations should be added.

Different uses of the cache may require different cache implementations, so potentially a new decendent of the Cache interface may mix the user of shared preferences with other methods of implementing a cache.

Change App Icon

The current generated app icon is very simple and clean, but it may be desired to have a more original, intricate, or informative icon for the app. In addition, not all users may use USD, and the reference to the dollar sign should be removed.

Duplicating Google Spreadsheet Makes Metadata Immutable

When a Google Spreadsheet has been duplicated in Google Drive, and the duplicate is opened in the app, it appears as though its metadata can not be changed. While it is a heavy accusation that I do not make lightly, I believe this to be a bug in Google Drive/Google Sheets. I have stepped through and I am sending identical requests as with the original, but the metadata does not change.

I do not currently intend to spend effort on fixing this. Instead users should create new spreadsheets instead of duplicating old ones. Copying the data in a sheet to the new spreadsheet to match the original seems to work fine.

Sheet Renaming

Allow the user to rename budgets (and sheets) in the app.

App UI overhaul

The app itself has a very standard material design UI. Consider improving this UI to be more modern/unique.

Add a request manager

Google allows 100 requests per 100 seconds per user of an app and 500 requests per 100 seconds for all users under their free plan. Add a request manager to ensure that the user does not exceed this limit.

  • Count the number of requests being executed and delay or flat out stop some near the upper limit of this 100 request cap so that the user does not go over it.
  • Allow the cap being used by the app to be adjusted in case Google changes this amount or to allow more than 5 users of the app at once.

Allow editing expenses

Enhance the expense list fragment for active budgets so that the user can change the date, description, and amount on existing expenses.

Delayed request posting for when no network is available

Allow the app to let the user add expenses and complete some other actions when they are not connected to the internet. Keep a record of these actions and then execute each of these requests once the device is connected to a network again, notifying the user on the result of these requests.

  • The app should likely display that it is in a limited offline mode when the user is not connected to a network
  • Use a notification / series of notifications to update the user on their deferred / delayed requests.
  • Add a fragment to the app allowing the user to manage / cancel / see the status of each of their delayed requests

Open sheet on load UI improvements

Currently users can mark a sheet to open when the app loads using a button in the sheet settings tab. This change should also allow the user to set the sheet to open on load using a star icon for each sheet listed in the navigation drawer and a long press menu action.

Add recent spreadsheets list

Add a drop down for recent spreadsheets to the change spreadsheet dialog fragment. This list should display the most recently opened spreadsheets in the app.

Deleting sheets

Allow the user to delete sheets in the navigation drawer, likely through an 'X' icon or a long press menu action.

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.