Coder Social home page Coder Social logo

austinkregel / finance Goto Github PK

View Code? Open in Web Editor NEW
391.0 16.0 45.0 24.4 MB

A self hosted app to help you get a better understanding of your personal finances.

PHP 67.02% Vue 27.06% Dockerfile 0.27% Shell 0.16% Blade 5.48%
personal-finance finance finance-tracker bank laravel php7 hacktoberfest

finance's Introduction

πŸ‘‹ Hello! I'm Austin.

My favorite type of projects to work on are interal automations and tooling. I also like tackling complex problems, I've got a lot of experience refactoring old code, and writing metric based reporting systems πŸ““πŸ‘€

🌱 Currently learning how to programmatically manipulate PHP to refactor code en masse to accelerate developmentπŸ‘€. As my work team has fluctuated from 5 developers, to 12 developers, to 3, back to 11 devs, and down to 2 devs over the last 5 years; I've grown increaslingly more concerned with maintainability and managing complexity with large code bases.

πŸ—οΈ I spent the first 3 years of my career building a glorafied excel sheet for tracking RMA requests, now I work in the automotive industry helping automate dynamic ad creation for an internal team.

🏠 Outside of work, I love to tinker with microelectronics, hyrdoponics, home-automation, and tracking my own data. I've used Arduino, Particle Photon, ESP32, and ESP01 devices as well as custom circuit design through EasyEDA. I also built a finance tracking tool that uses the Plaid API to fetch transactions, and issue webhook notifications.

πŸ’¬ Ask me about... anything? :D My inbox is open please use [email protected] to contact me... No soliciting, I don't want to buy your services, but if you need help with one of my projects or want to chat, please send me an email.

Tech I've used

Docker IntelliJ IDEA Git MySQL Redis Arduino GitHub Actions Ubuntu PHP

Loosely maintained side projects

  • aut.hair an OAuth server that uses Laravel Passport and Socialite to enable a light central authentication portal. Open sourced on Github
  • Lazy.Build is an open source collection of scripts meant to be run on a newly installed operating system for convenience.
  • Helpful Information intended to be a collection of websites to provide quick and easy access to various information.
  • Laravel Flight the easiest way to secure Laravel applications without needing to write any additional code. Run migrations, add a few env variables, and grab some Oauth2 credentials from your favorite provider, and you can secure your apps; even if it's just a horizon queue.
  • Re:base a passion projection heavily inspired by the now defunct koding 😒 a lightweight but heavy handed code editor written in Vue and NodeJS
  • Michigan Cannabis Club an consumer information hub for cannabis related alerts in Michigan. Open sourced, it scans the Michigan website for newly released recalls and sends alerts to anyone who reported having purchased an infected product; assuming the MRA lists all of the infected products.
  • ChangeLager a project to automate the building of release logs for projects that use logical git commits.
  • Laravel Nova Failed Jobs Tool and the non-Laravel specific package it's based on php-exception-probe. The nova package provides an interface to rerun failed jobs, and to inspect the exception from Nova with code context. php-exception-probe is how the interface gets the code context from the exceptions produced by the failed jobs.
  • Spork a personal everything project that allows me to test ideas and expiriment with configurations, servers, coordinating external services, code generation and dynamic editing, and so much more. πŸš§πŸ”¨ This app is under frequent and heavy construction...

Recent tunes

My recent spotify plays! I saw this on another profile and loved it so much I wanted to do it too

Austin's recently played

finance's People

Contributors

austinkregel avatar braceyourself avatar dependabot[bot] avatar fredjiles 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  avatar  avatar  avatar  avatar  avatar

finance's Issues

The "total spends" query on the budgets page shows duplicate value

It seems that the query is duplicating the value, instead of debugging it I think I should just change how that's calculated. A dedicated route for all budgets probably won't be that expensive with time plus if needed I could stagger our the loading to make it seem like it loads quicker...

Docs and PHP >7.4

In docs we have:

### Requirements
  - MySql
  - PHP >7.4
  - Redis (for queues and caching)

So proper PHP version is 7.5 and greater?
Confiused.

Improve the documentation!

I've noticed that the "documentation" is totally not helpful for someone who would be new to this project (for contributing and just pulling it down and setting it up).

Api routes use web middleware

Maybe we can put the api routes in the api.php file, where they belong.

If we use Laravel Sanctum, I don't think this will be a large refactor. You are already on Laravel 7 so we can just install this. Would you like me to give it a try?

Problem init project

I launched docker with settings default, and in the migrations process , i dont know why i have an error with the migrations. This error ocurred when the connection is not success. But i dont know how fixed this. Because the configuration is default and if i connect with DBGate i can connect to database.

  SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = testing and table_name = migrations and 
table_type = 'BASE TABLE')

pywintypes.error: (2, 'CreateFile', 'The system cannot find the file specified.')

Hi, trying to set this up in Windows,

When I run docker-compose build I'm getting the following

`C:\finance\finance>docker-compose build
Traceback (most recent call last):
  File "docker\api\client.py", line 214, in _retrieve_server_version
  File "docker\api\daemon.py", line 181, in version
  File "docker\utils\decorators.py", line 46, in inner
  File "docker\api\client.py", line 237, in _get
  File "requests\sessions.py", line 543, in get
  File "requests\sessions.py", line 530, in request
  File "requests\sessions.py", line 643, in send
  File "requests\adapters.py", line 439, in send
  File "urllib3\connectionpool.py", line 670, in urlopen
  File "urllib3\connectionpool.py", line 392, in _make_request
  File "http\client.py", line 1255, in request
  File "http\client.py", line 1301, in _send_request
  File "http\client.py", line 1250, in endheaders
  File "http\client.py", line 1010, in _send_output
  File "http\client.py", line 950, in send
  File "docker\transport\npipeconn.py", line 32, in connect
  File "docker\transport\npipesocket.py", line 23, in wrapped
  File "docker\transport\npipesocket.py", line 72, in connect
  File "docker\transport\npipesocket.py", line 52, in connect
pywintypes.error: (2, 'CreateFile', 'The system cannot find the file specified.')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "docker-compose", line 3, in <module>
  File "compose\cli\main.py", line 81, in main
  File "compose\cli\main.py", line 200, in perform_command
  File "compose\cli\command.py", line 60, in project_from_options
  File "compose\cli\command.py", line 152, in get_project
  File "compose\cli\docker_client.py", line 41, in get_client
  File "compose\cli\docker_client.py", line 170, in docker_client
  File "docker\api\client.py", line 197, in __init__
  File "docker\api\client.py", line 221, in _retrieve_server_version
docker.errors.DockerException: Error while fetching server API version: (2, 'CreateFile', 'The system cannot find the file specified.')
[20676] Failed to execute script docker-compose`

Any ideas?

Few errors encountered during installation

After cloning the repository, I built the containers and didn't have any issues so far.

Following the documentation, I encountered this first error:

[root@test finance]# docker exec -it finance-node npm install
Error response from daemon: Container b65ec79cf554773eed9ad238845987547a8133c83b23e053d253d2469f19dc37 is not running

The workaround I used was to run the container using the command:

[root@test finance]# docker-compose run node bash
node@d4ff8d03361a:/$ cd /var/www/html/

But then, I got this second issue:

node@d4ff8d03361a:/var/www/html$ npm install
npm notice
npm notice New minor version of npm available! 7.0.15 -> 7.2.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v7.2.0
npm notice Run npm install -g [email protected] to update!
npm notice
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: undefined@undefined
npm ERR! Found: [email protected]
npm ERR! node_modules/vue
npm ERR!   dev vue@"^2.5.17" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer vue@"^2.6.11" from @vue-responsive-dash/[email protected]
npm ERR! node_modules/@vue-responsive-dash/chartjs
npm ERR!   @vue-responsive-dash/chartjs@"^0.1.3" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
npm ERR! See /home/node/.npm/eresolve-report.txt for a full report.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/node/.npm/_logs/2020-12-18T17_09_43_606Z-debug.log

To workaround this second problem, I used the command:
npm install --force

From the documentation, I have to run the "npm run production" command but I got a third issue:

node@d4ff8d03361a:/var/www/html$ npm run production

> production
> cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js

Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema.
 - configuration has an unknown property 'optimization'. These properties are valid:
   object { amd?, bail?, cache?, context?, dependencies?, devServer?, devtool?, entry, externals?, loader?, module?, name?, node?, output?, parallelism?, performance?, plugins?, profile?, recordsInputPath?, recordsOutputPath?, recordsPath?, resolve?, resolveLoader?, stat
s?, target?, watch?, watchOptions? }
   For typos: please correct them.
   For loader options: webpack 2 no longer allows custom properties in configuration.
     Loaders should be updated to allow passing options via loader options in module.rules.
     Until loaders are updated one can use the LoaderOptionsPlugin to pass these options to the loader:
     plugins: [
       new webpack.LoaderOptionsPlugin({
         // test: /\.xxx$/, // may apply this only for some modules
         options: {
           optimization: ...
         }
       })
     ]
 - configuration.stats should be one of these:
   object { all?, context?, hash?, version?, timings?, performance?, depth?, assets?, env?, colors?, maxModules?, chunks?, chunkModules?, modules?, children?, cached?, cachedAssets?, reasons?, source?, warnings?, errors?, warningsFilter?, excludeAssets?, excludeModules?,
 exclude?, entrypoints?, errorDetails?, chunkOrigins?, modulesSort?, moduleTrace?, chunksSort?, assetsSort?, publicPath?, providedExports?, usedExports?, optimizationBailout? } | boolean | "none" | "errors-only" | "minimal" | "normal" | "detailed" | "verbose"
   -> Used by the webpack CLI program to pass stats options.
   Details:
    * configuration.stats has an unknown property 'builtAt'. These properties are valid:
      object { all?, context?, hash?, version?, timings?, performance?, depth?, assets?, env?, colors?, maxModules?, chunks?, chunkModules?, modules?, children?, cached?, cachedAssets?, reasons?, source?, warnings?, errors?, warningsFilter?, excludeAssets?, excludeModule
s?, exclude?, entrypoints?, errorDetails?, chunkOrigins?, modulesSort?, moduleTrace?, chunksSort?, assetsSort?, publicPath?, providedExports?, usedExports?, optimizationBailout? }
    * configuration.stats should be a boolean.
    * configuration.stats should be one of these:
      "none" | "errors-only" | "minimal" | "normal" | "detailed" | "verbose"
npm ERR! code 1
npm ERR! path /var/www/html
npm ERR! command failed
npm ERR! command sh -c cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/node/.npm/_logs/2020-12-18T17_17_13_359Z-debug.log

And after all these steps and workaround, it doesn't work.
I am not sure what I've done wrong.

The custom budget query with the variables seems to break the app when using MySQL 8 :(

So oddly enough, this seems to be a problem with me personally running this project on a different prod server than what I have locally. My prod server is a DO managed database running MySQL 8 vs the local containers in this project running mysql 5.7. :(

Needs to be investigated as it seg-faults the database. Need to figure out what the compatibility issue is (probs the variables).

Issues setting up the app on Docker

Hi, I'm following the documentation here: https://github.com/austinkregel/finance/wiki/Setting-up-the-app-(docker)

I'm having trouble with some of the commands:

[...]\finance>docker-compose build
mysql uses an image, skipping
redis uses an image, skipping
web uses an image, skipping
node uses an image, skipping
Building php
failed to get console mode for stdout: The handle is invalid.
[+] Building 3.2s (16/16) FINISHED
 => [internal] load build definition from Dockerfile                       0.1s
 => => transferring dockerfile: 32B                                        0.0s
 => [internal] load .dockerignore                                          0.1s
 => => transferring context: 2B                                            0.0s
 => [internal] load metadata for docker.io/library/php:7.4-fpm             2.6s
 => [ 1/11] FROM docker.io/library/php:7.4-fpm@sha256:67d3dba316f44f40924  0.0s
 => [internal] load build context                                          0.1s
 => => transferring context: 91B                                           0.0s
 => CACHED [ 2/11] WORKDIR /var/www/html                                   0.0s
 => CACHED [ 3/11] ADD . /var/www/html                                     0.0s
 => CACHED [ 4/11] RUN DEBIAN_FRONTEND=noninteractive adduser user         0.0s
 => CACHED [ 5/11] RUN DEBIAN_FRONTEND=noninteractive chown -R user:user   0.0s
 => CACHED [ 6/11] RUN DEBIAN_FRONTEND=noninteractive apt-get update   &&  0.0s
 => CACHED [ 7/11] RUN docker-php-ext-install pcntl bcmath                 0.0s
 => CACHED [ 8/11] RUN apt-get update   && DEBIAN_FRONTEND=noninteractive  0.0s
 => CACHED [ 9/11] COPY ./xdebug.ini /usr/local/etc/php/conf.d/            0.0s
 => CACHED [10/11] RUN usermod -a -G user root                             0.0s
 => CACHED [11/11] RUN usermod -a -G root user                             0.0s
 => exporting to image                                                     0.2s
 => => exporting layers                                                    0.0s
 => => writing image sha256:9326e9e7fccd7bb75169ba1c0ad87e26340c54d0150a2  0.0s
 => => naming to docker.io/library/finance_php                             0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
Successfully built 9326e9e7fccd7bb75169ba1c0ad87e26340c54d0150a2628d6a4e0c2905a6ecb
Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them

[...]\finance>docker exec -it finance-php composer install
Error: No such container: finance-php

[...]\finance>docker exec -it finance_php composer install
Error: No such container: finance_php

[...]\finance>docker run -it -v "`pwd`:/app" -w /app node yarn
docker: Error response from daemon: create `pwd`: "`pwd`" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path.
See 'docker run --help'.

Any advice on what I should do next or what I'm doing wrong? Thanks!

Absolute value the graphs and metrics page?

I've been mulling over the idea for a while, but I finally want to commit to it because I think it decreases page complexity and the time it takes the user to digest the information on the page.

As a user, I want to be able to "group" transactions together

This will require a UI component which allows our users to create groups.

When creating a group, the user should have the ability to add conditionals to the group to try and establish automated rules.

The user should be able to add single transactions to groups, or have the "apply to all transactions with this transaction name".

Example: If the transaction was a $5 charge for Mcdonalds and the transaction title was "McDonald's", applying the group to all transactions with that name, will automatically move any transaction for that user with that exact name into that group. It will also create a condition to automatically apply future transactions to that group as well.

Cannot see transactions

My list of transactions is always empty. While the transactions.account_id matches my account key.

What can cause this kind of problems?
image

I'm running the app on a default forge server with php7.4 And a Redis cache (because file cache is not taggable)

I want to be able to set budgets on specific groups.

Features being requested

  • Have a set dollar amount be attached to a group.
  • Trigger alert when the sum total of all the transactions in that group go over/under/equal the dollar amount set.
  • Conditions should only be set on the group, not on the budget. I believe that if a transaction is added to a group you want budgeted, then you should always include that transactions amount.
  • Have a new card added as an option on the metrics page. The card should show you how much of the budget has been spent (or how much is left?). Instead of adding a card, there's a dedicated budgets page with simple digestible metrics.

The documentation is pretty out of date

Due to all the re-writing that's been happening, the instructions on how to set up this app, and all the configuration options aren't documented anywhere.

Setting up a discord or slack hook via winging it is definitely not user friendly.

Rewrite?

This project still feels kinda jank.

  • Store my transactions
  • Automatically fetch new transactions
  • Allow me to create alerts/notifications based on conditions related to the transactions. (Conditions such as the vendor, dollar amount, account charged, etc...)
  • Allow me to create "groups" of transactions, and allow transactions to be in multiple groups.
  • Allow me to create "rules" which would auto apply groups to transactions based on the conditions of the group. (Ie. If a transaction's vendor is "McDonalds" give it the groups "fast food", "restaurants", "food budget", etc...)
  • Allow me to create graphs based on the transactions in groups. Generally speaking, these graphs will be the credit, and debits graphed over an x of time with a y of the amount.
  • Allow me to fetch transactions for a given set of dates. (Used for historically syncing data so it doesn't have to be done via command line, or to attempt and correct for missing transactions)

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.