Giter Club home page Giter Club logo

onbudget's Introduction

banner

Buy Me A Coffee

codecov Build PRs Welcome

About

This project was heavily influenced by the amazing work done by Lana Noda and is also a budgeting tool hence why the name is similar. The main difference is that, it's being hosted on a digitalocean server for the static content and Google Firebase for all of the database and authentication logic. You can absolutely self host this (I will describe that later, however) it's currently accessible at onbudget.app.

Why?

I was using Lana's app ontrack for a couple of months and fell in love with it, but I'm not a ruby developer and I found the process of development within that project a bit challenging and so I decided to build my own version with all the features I wanted.

Table of Contents

Features

Dashboard

Currently, the dashboard is an overview of the current month, it gives you how much in bills and expenses you have spent, how much total revenue is coming into your account, breaksdown the monthly spending by category and gives a look back of the last year of spending in a stacked graph.

dashboard

User Account

Signing in allows multiple users to use this on the same machine

sign in

Request Access

Requesting Access is a temporary feature for me to see how much I (dis)like firebase usage

request access

Forgot Password

Allows the user to receive an email from firebase if you forgot your password

forgot password

Loading States

Sometimes the app is slow, this is just some consistent loading states for the application

loading state

Importing CSVs

Since this app does not make any requests to your actual bank, this allows you to import a statement you can download from you bank account

importing csv

Add Transaction

A simple modal to quickly add an individual expense/transaction

add transaction

Add & Edit Category

Another modal to create categories for your spending add category

Running Locally

Prerequisites

  • Node and npm installed on your machine
  • A Firebase project setup in order to get the configuration
  • A Firebase billable account in order to deploy functions
  • Initialization of firebase cloud firestore and functions

Once you have all of that in place, place your firebase configuration into the appropriate .env file so that it can be used by the application

Local Development

Given the commands within the package.json you can do one of two things 1. npm start Run locally and point to the firebase production instance 2. npm run start:emulate Run locally and point to the firebase local emulator you have set up

Available Scripts

npm start

Run locally and point to the firebase production instance

npm run start:emulate

Run locally and point to the firebase local emulator you have set up

npm run build

Builds the app for production to the build folder. The build is minified and the filenames include the hashes.

npm run eject

Ejects the CRA application in order for you to have access to the webpack instance for further customization

npm run firebase

Spins up a fresh firebase emulator for local development without any saved data TODO: Add concurrently in order to put start:emulate and firebase together

npm run firebase:deploy

Takes the functions folder and uploads them to firebase functions

npm run firebase:populate

Spins up a firebase emulator with any previously stored data

npm test

Launches the test runner in the interactive watch mode.
See the section about running tests for more information.

npm run test:watch

Runs all unit tests in watch mode for file changes

npm run test:coverage

Runs all unit tests and generates a coverage report

npm run create-component

ex: npm run create-component -- -c Test A script that creates a component with appropriate scaffolding for scss files, tests and the component

Dependencies

Package Details
canvas chartjs utilized canvases and jest cannot natively test that api, this package allows jest to render canvas elements
carbon components Carbon design system brings most of the application to life so that I didnt have to write components from scratch
sentry Sentry is an application error monitoring platform
testing library Simple and complete testing utilities that encourage good testing practices
jest Jest is a delightful JavaScript Testing Framework with a focus on simplicity
chart.js Simple yet flexible JavaScript charting for designers & developers
date-fns Provides the most comprehensive, yet simple and consistent toolset for manipulating JavaScript dates in a browser & Node.js.
firebase THE BREAD AND BUTTER, it provides a database, authentication and serverless functions for my application

NOTES TO MYSELF


Using Sentry for error tracking

If solving a sentry bug, include the issue # within the commit

onbudget's People

Contributors

ty-lerscott avatar dependabot[bot] avatar

Stargazers

Roman avatar

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.