Minimalistic bill tracker for those who despise tracking microtransactions.

Overview

🏑 Home Bills

Minimalistic bill tracker for those who despise tracking microtransactions.

Building Open Source Tip me

Cover

Netlify Status


πŸ† Goals & Milestones

Goals

  1. πŸ” Track important data. Tracking microtransactions is extremely time consuming, especially when you have a lot of them spread out across multiple credit cards.

  2. πŸ” Keep your data local and private. Why should you have to worry about privacy policies that you're never gonna read? Who knows what these crazy people are doing with your data.

  3. πŸ“Š Useful reports. Here's the thing: I want to know how much my household owes these credit card companies. And I want it in a nice UI β€” not some table-like, hard-to-use five-clicks-to-add-a-single-transaction app.

  4. ⚑️ Shortcuts and hotkeys. Come on, you're a developer. Why should you click on your finance app to do things? Let's make tracking finances easier with quick keystrokes.

Milestones

01. The Minimum Viable Code.

  • Design a friendly and minimal interface.
  • Code interface for desktop.
  • Code the entire interface reponsively.
  • Add empty states
    • Transaction List empty state
    • Overview empty states
  • Open "Add Bills" pop-up.
    • Add "Control + N" hotkey to add new bills.
    • Add "Escape" hotkey to close bills modal.
    • Add confirmation pop-up when closing modal and has data.
  • Data handling with localStorage (MVP).
    • Add Bills: to transaction list and localStorage
    • Remove Bill
    • Toggle Paid
    • Edit Bill Values
  • Generate overview reports with JS.
  • Open Source it: add a license, make repo public, and document.

02. Better Data Management

  • Handle data with a local JSON file that you can store and sync with your iCloud, or GDrive.
  • Ability to visualize your bills from your computer, phone, or tablet.

03. Mobile App: I can see...

  • iOS App (read-only).
  • iOS Widgets for previewing data on the Home Page.

04. Mobile App: Permission to edit.

  • iOS App: manage your data on the app

πŸƒ Run the project on your machine (or deploy it somewhere only you know πŸ–οΈ )

01. First Install all dependencies by running:

yarn

Or npm install if you're not into the amazingness of yarn. πŸ‘€

02. If you want to develop and make changes to it:

yarn dev

Or npm run dev... Whatever. πŸ™„

03. If you want to deploy it yourself, the build command is:

yarn build

Or, again, npm run build. Gosh, you're weird.

Comments
  • Create the SVG Progress Pies

    Create the SVG Progress Pies

    Progress Pies will serve to indicate paid/unpaid bills, or to visualize the percentage of spendings in each category (credit card, home, etc) or spenders (the family member, "owner" of the bill).

    To-do

    • [x] Function to create the SVG progress pie
    • [x] Function to update the percentage in a specific pie
    • [x] Function to get an Array of all pies in the DOM
    • [x] Add pies to the overview section
    • [x] Style the pies
    • [x] Use a default value for the percentage β€” real values will be defined when the Overview calculations are done.
    opened by pixelsbyeryc 1
  • Make the UI responsive

    Make the UI responsive

    Description

    • Navigation is not as important, so it could be hidden behind a "burger" menu.
    • It's important to tell what day it is.
    • Actions are most important: Add new bills + filter

    Questions:

    • Should Overview become a new "page" or a "tab" on mobile to mimic app behavior?
    • Should "Add Bills" modal become full-page, kinda like a pwa-like app? With a "Back" button?

    To-do:

    • [ ] optional Design the responsive layout
    • [x] Code the responsive design:
    enhancement good first issue ui design 
    opened by pixelsbyeryc 0
  • Improve the rendering from localStorage: currently re-renders everything on the page

    Improve the rendering from localStorage: currently re-renders everything on the page

    The project is currently re-rendering the transaction list when a new one is added, or when you update a bill to "paid".

    This is because I wrote it based on some articles I found about handling data and the DOM with localStorage and vanilla JS.

    There is a better way:

    • Use an Array as a middleman to both: add/remove/update information in localStorage, and also to push, pop, or update information from the DOM.
    • This requires a more functional code, broken into parts that will handle each specific task: DOM, and Storage.

    Here's how I envision this working...

    Adding bills:

    billsList: The element which holds all the bill elements in the DOM
    allBillsArray: An array with all the bills, as JSON Objects
    allBillsDOM: An array of all the current bills present in the DOM, as elements (Object)
    
    addBill(formData) -> adds bill to allBillsArray -> stores allBillsArray in localStorage -> checks allBillsDOM and adds new bill to the top of the list -> appends to the billsList element
    
    removeBill(key) -> finds the bill with that key in the allBillsDOM -> pops that bill from the array -> syncs with allBillsArray -> updates localStorage -> removes element from billsList element
    
    updateBill(key, data) -> finds the bill with that key in the allBillsDOM -> opens pop-up form with all the data filled from current bill -> checks what's been updated on submit -> updates that bill in allBillsArray -> syncs with allBillsDOM -> updates localStorage -> update specific information on the DOM
    

    We probably have to grab identifiers for each child element (that has data) of the .tx elements to update the data individually.

    Maybe this will require to break it down into small bits of functions, like: updateAmount(amount), which is called within the updateBill() function conditionally if the data has been updated.

    If you've got a better idea on how to handle this, feel free to share.


    PS:

    Yes, I know this would all be easier if we used a library that can handle states, like React, or Vue... I am personally not willing to move into a library like that, mostly because I am not comfortable coding with these libraries.

    It would slow me down, and I want the tool to work. I really want to be able to use it.

    But you're free to fork it and do it! I would love that, and would use it to learn a new skill. ❀️

    LMK if you do.

    enhancement help wanted 
    opened by pixelsbyeryc 0
  • build(deps): bump decode-uri-component from 0.2.0 to 0.2.2

    build(deps): bump decode-uri-component from 0.2.0 to 0.2.2

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • [Data] Update Spenders and Categories via Javascript

    [Data] Update Spenders and Categories via Javascript

    In the latest updates made on PR #18, the expected data format for both spenders and categories is an Object with key and name attributes:

    let categories = {
      creditcard: {
        name: 'Credit Card',
        key: 1651056654886
      },
      home: {
        name: 'Home',
        key: 1651056656009
      }
    };
    
    let spenders = [
      {
        name: 'Spender One',
        key: 1651056656974
      },
      {
        name: 'Spender Two',
        key: 1651056657897
      }
    ];
    

    The app needs to initialize with the Spenders and Categories as an Object and then:

    • [ ] Render the select options according to the data available.
    • [ ] Have the option to Add/Update/Remove spenders and categories dynamically.
      • [ ] Update transactions(bills) when removing a spender or category
    • [ ] Update the calculations accordingly
    • [ ] Update the way transactions are rendered
    enhancement 
    opened by pixelsbyeryc 0
Owner
ERYC
DIGITAL DESIGNER. πŸ€
ERYC
Hemsida fΓΆr personer i Sverige som kan och vill erbjuda boende till mΓ€nniskor pΓ₯ flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo fΓΆr kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
Please do not use this tracker to scam anyone! This is free and will be forever free. This tracking will never ask for seed phrases nor private keys. Keep safe!

CryptoBlades Tracker Related modules express - web application framework for node pug - template engine stylus - pre-processor CSS mongoose - nodejs o

null 355 Oct 13, 2022
Webb-tracker-api - James Webb Space Telescope (JWST) tracking REST API

James Webb Telescope tracking REST API Public REST API to track JWST's current status API data source: https://www.jwst.nasa.gov/content/webbLaunch/wh

Aslan Vatsaev 67 Nov 22, 2022
Finance-Tracker - A basic finance-tracker application built using Next.js, React Hooks and Context API

Next.js + Tailwind CSS Example This example shows how to use Tailwind CSS (v3.0) with Next.js. It follows the steps outlined in the official Tailwind

Osemwengie Benjamin 1 Jan 2, 2022
375 DSA Tracker helps you build your confidence in solving any coding related question and helps you prepare for your placements. It is your personal web-based progress tracker based on 375 DSA Sheet by Aman Dhattarwal & Shradha Didi

375-DSA Tracker ??‍?? Me and my friend Abhilash Jena made a 375 DSA Tracker website based on 375 DSA Sheet by Aman Dhattarwal & Shradha Didi which hel

null 8 Nov 11, 2022
FakeCommitter is a tool for those who want to be a GITHUB POPSTAR WITH A LOT OF CONTRIBUTIONS DAILY

FakeCommitter is a tool for those who want to be a GITHUB POPSTAR WITH A LOT OF CONTRIBUTIONS DAILY! Or maybe you just want to sync your contribution number across accounts (like me).

Gustavo Henrique 16 Nov 10, 2022
A simple browser extension, intended to get you "Back To Work" when you start slacking off to one of those really addictive sites.

Back to Work A simple browser extension, intended to get you Back To Work when you start slacking off to one of those really addictive sites. What doe

Dheeraj Lalwani 29 Nov 19, 2022
Application that uses the localStorage to keep the information on the activities that are pending to be done and also those that are completed

Application that uses the localStorage to keep the information on the activities that are pending to be done and also those that are completed. It provides an option to edit activities and also delete them. The clear all applies to those that are marked as completed by selecting the checkbox.

Oscar Bermudez 8 Apr 8, 2022
zieeco 12 Jul 8, 2022
Superkeys allow users to add short keys for websites and make search query in those sites.

Superkeys is a browser extension which allow users to add short keys for websites and make search query in those sites. Made with ❀️ @nilooy ??‍?? Dem

Niloy 9 Aug 17, 2022
Application which will allow users to find hotels, hostels and restaurants and feedback about those in whole over of world.

Gatsby minimal TypeScript starter ?? Quick start Create a Gatsby site. Use the Gatsby CLI to create a new site, specifying the minimal TypeScript star

Taron Vardanyan 2 Jul 22, 2022
A web app designed to keep track of activities that are done and those that are and not done. Users can add, delete, mark as completed and update the activities. Built with Javscript, html, css and webpack.e your activites

ToDoListApp A web app designed to help web keep track of activities that are done and those that are still pending. Users can add, delete, mark as com

Francis Wayungi 6 Dec 23, 2022
A work-in-progress HTML sanitizer that strives for: performance like window.Sanitizer, readiness like DOMPurify, and ability to run in a WebWorker like neither of those.

Amuchina A work-in-progress HTML sanitizer that strives for: performance like window.Sanitizer, readiness like DOMPurify, and ability to run in a WebW

Fabio Spampinato 9 Sep 17, 2022
The BrewDog Beer Guide is a web application for beer lovers, in particular those who like the BrewDog brewery.

Brewdog-Beer-Guide The BrewDog Beer Guide is a web application for beer lovers, in particular those who like the BrewDog brewery. Here you find the de

Tiago Lelinski Marin 3 Sep 13, 2022
A Very Good Anti Nuke Bot that is better then those "premium" discord bots.

AntiNuke AntiNuke Bot What is AntiNuke? A Open Source Discord Anti Nuke Bot to stop Raids, Nuking, and Mass Dms. ONLY THE RELEASE VERSION WORKS AT THE

Basic Sellout 1 Dec 29, 2022
@TGMusicfy - Minimalistic Telegram music search bot written in TypeScript and based on Telegraf and Express JS.

@TGMusicfy Go to bot Deployed thanks to Heroku and New-Relic Bots are special Telegram accounts designed to handle messages automatically. Users can i

Saveliy Andronov 5 Sep 13, 2022
Minimalistic portfolio/photography site with masonry grid, page transitions and big images.

Gatsby Starter Portfolio: Emilia Minimalistic portfolio/photography site with masonry grid, page transitions and big images. Themeable with Theme UI.

Cryptob3auty 1 May 20, 2022
πŸ›  Highly customisable, minimalistic input x select field for React.

Insect ?? Highly customisable, minimalistic input x select field for React. ⚑️ Features Tiny size (~4kb Gzip) 100% responsive. Highly customisable. Su

Kadet 32 Oct 29, 2022