{"id":16790324,"url":"https://github.com/cerivitos/expensetracker","last_synced_at":"2026-05-17T00:55:31.644Z","repository":{"id":38078988,"uuid":"230181468","full_name":"cerivitos/ExpenseTracker","owner":"cerivitos","description":"Simple expense tracker using Svelte","archived":false,"fork":false,"pushed_at":"2023-01-06T00:54:24.000Z","size":4894,"stargazers_count":3,"open_issues_count":18,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-10T18:11:40.226Z","etag":null,"topics":["firebase-auth","firebase-firestore","now","now-sh","rollup","service-worker","svelte","svelte-v3","tailwind-css","workbox"],"latest_commit_sha":null,"homepage":"https://expensetracker.now.sh","language":"HTML","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/cerivitos.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}},"created_at":"2019-12-26T02:32:41.000Z","updated_at":"2023-07-14T20:16:04.000Z","dependencies_parsed_at":"2023-02-05T01:03:11.077Z","dependency_job_id":null,"html_url":"https://github.com/cerivitos/ExpenseTracker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"cerivitos/svelte-pwa-now","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cerivitos%2FExpenseTracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cerivitos%2FExpenseTracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cerivitos%2FExpenseTracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cerivitos%2FExpenseTracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cerivitos","download_url":"https://codeload.github.com/cerivitos/ExpenseTracker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247312093,"owners_count":20918344,"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":["firebase-auth","firebase-firestore","now","now-sh","rollup","service-worker","svelte","svelte-v3","tailwind-css","workbox"],"created_at":"2024-10-13T08:29:28.571Z","updated_at":"2026-05-17T00:55:31.615Z","avatar_url":"https://github.com/cerivitos.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"![icon](https://github.com/cerivitos/ExpenseTracker/blob/master/src/assets/favicon-32x32.png)\nSimple Expense Tracker\n=============\n\n\u003cimg width=\"240\" src=\"https://github.com/cerivitos/ExpenseTracker/blob/master/expensetracker.now.sh__dashboard(iPhone%206_7_8%20Plus).png\"/\u003e|\n\u003cimg width=\"240\" src=\"https://github.com/cerivitos/ExpenseTracker/blob/master/expensetracker.now.sh__dashboard(iPhone%206_7_8%20Plus)%20(1).png\"/\u003e|\n\u003cimg width=\"240\" src=\"https://github.com/cerivitos/ExpenseTracker/blob/master/expensetracker.now.sh__dashboard(iPhone%206_7_8%20Plus)%20(2).png\"/\u003e|\n\u003cimg src=\"https://github.com/cerivitos/ExpenseTracker/blob/master/expensetracker.now.sh_(Laptop%20with%20MDPI%20screen).png\"/\u003e\n\n\n## Features\n- Made with [Svelte](https://svelte.dev)\n- Installable PWA with service worker\n- Responsive layout for mobile and desktop\n- Firestore to store expense entries\n- Firebase Storage for image attachments\n- Ability to add current location as a description tag\n- Firebase authentication using Google sign in\n- Dark mode\n\n\n## Getting started\n\nCreate your own Firebase project following the instructions [here](https://firebase.google.com/docs/web/setup/).\n\nCopy your own Firebase config object\n\n```bash\nvar firebaseConfig = {\n  apiKey: \"api-key\",\n  authDomain: \"project-id.firebaseapp.com\",\n  databaseURL: \"https://project-id.firebaseio.com\",\n  projectId: \"project-id\",\n  storageBucket: \"project-id.appspot.com\",\n  messagingSenderId: \"sender-id\",\n  appId: \"app-id\",\n  measurementId: \"G-measurement-id\",\n};\n```\n\nand replace it [here](https://github.com/cerivitos/ExpenseTracker/blob/master/src/config.js).\n\nMake sure [Node.js](https://nodejs.org) is installed. Clone the repo and\n\n```bash\nnpm install\n```\n\nStart by\n\n```bash\nnpm run dev\n```\n\nand go to [localhost:5000](http://localhost:5000).\n\nBuild for production using\n\n```bash\nnpm run build\n```\n\nand serve the `dist` folder.\n\n\n## Details\n\n### Service Worker\n\n[Workbox](https://developers.google.com/web/tools/workbox) is set up to automatically generate the service worker file in the `dist` folder using the `rollup-plugin-workbox` plugin.\n\nNote that we are using the Rollup bundler hence the relevant docs are [here](https://developers.google.com/web/tools/workbox/guides/using-bundlers). The `rollup-plugin-workbox` plugin can be configured in [rollup.config.js](https://github.com/cerivitos/ExpenseTracker/blob/master/rollup.config.js).\n\n### Now integration\n\nThe [Now hosting service](https://zeit.co/now) is a convenient way to host the app. You can use theire built-in [integrations with Git](https://zeit.co/docs/v2/git-integrations) to automatically stage your app with each push to your repo.\n\n### Changing app bar color in Android\n\nMost of us would know that we can control the app bar color using the `\u003cmeta name=\"theme-color\"/\u003e` element attribute. However, what if the user can switch color themes and you want the app bar color to change dynamically?\n\nSince I don't see this mentioned much, here is a [little trick courtesy of Gordon Lesti](https://gordonlesti.com/change-theme-color-via-javascript/).\n\nBasically you can programatically update change `theme-color`\n\n```bash\nconst metaTheme = document.querySelector(\"meta[name=theme-color]\");\nmetaTheme.setAttribute(\"content\", \"#fdfdfd\");\n```\n\nand Android will update your app bar color on the fly.\n\n### Maskable icon in Android\n\nThere is support for maskable icons for PWAs installed on Android devices. In your `dist/manifest.json` you can specify the maskable icon using `\"purpose\": \"maskable\"`. Ensure that your icon design has sufficient gutter space so that your logo isn't cut off.\n\n```bash\n{\n  ...\n  \"icons\": [\n    ...\n    {\n      \"src\": \"/assets/maskable_icon.png\",\n      \"sizes\": \"512x512\",\n      \"type\": \"image/png\",\n      \"purpose\": \"maskable\"\n    }\n  ],\n}\n```\n\nMore details [here](https://web.dev/maskable-icon/).\n\n### Cypress testing\n\nCurrently there are no tests written but Cypress is built in if required.\n\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcerivitos%2Fexpensetracker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcerivitos%2Fexpensetracker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcerivitos%2Fexpensetracker/lists"}