{"id":13630737,"url":"https://github.com/jakubgarfield/expenses","last_synced_at":"2025-05-16T04:03:38.598Z","repository":{"id":39707635,"uuid":"93477553","full_name":"jakubgarfield/expenses","owner":"jakubgarfield","description":"💰Expense tracker using Google Sheets 📉 as a storage written in React","archived":false,"fork":false,"pushed_at":"2024-02-23T13:42:22.000Z","size":7247,"stargazers_count":1248,"open_issues_count":36,"forks_count":179,"subscribers_count":32,"default_branch":"master","last_synced_at":"2025-04-08T14:06:28.677Z","etag":null,"topics":["expense-manager","expense-tracker","expenses","google-api","google-sheets","material-design","material-ui","progressive-web-app","react","react-components","reactjs","service-worker"],"latest_commit_sha":null,"homepage":"https://demo-expenses.chodounsky.net/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jakubgarfield.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-06-06T04:53:58.000Z","updated_at":"2025-04-02T09:33:52.000Z","dependencies_parsed_at":"2024-11-07T01:11:22.384Z","dependency_job_id":null,"html_url":"https://github.com/jakubgarfield/expenses","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakubgarfield%2Fexpenses","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakubgarfield%2Fexpenses/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakubgarfield%2Fexpenses/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakubgarfield%2Fexpenses/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jakubgarfield","download_url":"https://codeload.github.com/jakubgarfield/expenses/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254464891,"owners_count":22075570,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["expense-manager","expense-tracker","expenses","google-api","google-sheets","material-design","material-ui","progressive-web-app","react","react-components","reactjs","service-worker"],"created_at":"2024-08-01T22:01:57.923Z","updated_at":"2025-05-16T04:03:38.580Z","avatar_url":"https://github.com/jakubgarfield.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","📦 Legacy \u0026 Inactive Projects"],"sub_categories":[],"readme":"💰Expenses is a [progressive web application](https://developers.google.com/web/progressive-web-apps/) on top of [Google Sheets](https://developers.google.com/sheets/) 📉 written in [React](https://facebook.github.io/react/) ⚛️. It is only a static HTML that works great on mobile 📱 and can be deployed anywhere.\n\nCheck out the [demo](https://demo-expenses.chodounsky.net) but please be considerate and don't break it for others.\n\n![Delete expense](doc/delete-expense.gif)\n\nIt was inspired by the [expense-manager](https://github.com/mitul45/expense-manager) by mitul45 and it uses the [material web components](https://material.io/components/) and [material icons](https://material.io/icons/).\n\n## Features\n\n* Multiple accounts\n  * Checking, savings, joint, etc.\n* Categories\n* [Google Sheet](https://docs.google.com/spreadsheets/d/1Lz1_gHIgCKPKhJpFerq9PoNy-TIst7eLZ5plQi5Prv0/edit?usp=sharing) as a backend\n  * Great privacy and access control.\n  * Don't share sensitive data with 3rd party.\n  * Unlimited analysis up to your sheet skill.\n* Works great on mobile\n  * Progressive Web App. Loads quickly and works as a standalone app.\n* Beautiful material design\n  * Better than native ;)\n* Recurring expenses\n  * Totally doable with [Zapier](http://zapier.com/).\n* Monthly summary\n  * This month. Last month. You immediately know how you doing.\n\n## Get started\n\nYou will need a somewhat recent version of [Node](https://nodejs.org/en/) and a place to deploy static HTML under a custom domain (doesn't have to be top level). To get the full offline support with service workers you'll need HTTPS – [CloudFlare](cloudflare.com) works fine or you can use your own certificate.\n\n1) make a copy of [Expense Sheet](https://docs.google.com/spreadsheets/d/1Lz1_gHIgCKPKhJpFerq9PoNy-TIst7eLZ5plQi5Prv0/edit?usp=sharing) to your drive `File -\u003e Make a copy...`\n2) note the id of your new sheet (it's part of the URL)\n3) clone, install dependencies and build the app:\n\n\n```\nnpm i \u0026\u0026 REACT_APP_SHEET_ID=\u003creplace with your sheet id\u003e npm run build\n```\n\n4) copy the content of `build` folder to your server\n\n### Recurring Expenses\n\nZapier is a service for connecting apps and automating your workflows. And it can be used to add recurring expenses with the [Google Sheets Integrations](https://zapier.com/zapbook/google-sheets/).\n\nSelect a trigger – it could be every month, week, or based on anything else.\n\nUse the `Create Spreadsheet Row` integration and select your expense sheet and fill it with the desired values. Easy.\n\n![Zapier setup for recurring expenses](doc/zapier.png)\n\n### Sharing\n\nAdding another person (for example your partner) to the app is easy – you just give them access to the expense sheet in Google Sheets.\n\nAfter that, they have the same access as you are and can add expenses through the same URL.\n\n---\n\nIf you like this project – you might also enjoy [React Digest](https://reactdigest.net/) newsletter 🗞. Subscribe to get the top 5 news from React community every week.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakubgarfield%2Fexpenses","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjakubgarfield%2Fexpenses","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakubgarfield%2Fexpenses/lists"}