[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-8233":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":16,"starSnapshotCount":16,"syncStatus":36,"lastSyncTime":37,"discoverSource":38},8233,"Wallos","ellite\u002FWallos","ellite","Wallos: Open-source, self-hostable personal subscription tracker. Visualize your recurring expenses, manage your budget, and save money.","https:\u002F\u002Fwallosapp.com",null,"PHP",8051,374,19,56,0,4,27,172,18,38.72,"GNU General Public License v3.0",false,"main",true,[27,28,29,30,31,32],"budgeting","docker","finance","php","self-hosted","subscription-tracker","2026-06-12 02:01:50","\u003Cdiv align=\"center\">\r\n  \u003Cpicture>\r\n    \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\".\u002Fimages\u002Fsiteicons\u002Fwalloswhite.png\">\r\n    \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\".\u002Fimages\u002Fsiteicons\u002Fwallos.png\">\r\n    \u003Cimg alt=\"Wallos\" src=\".\u002Fimages\u002Fsiteicons\u002Fwallos.png\">\r\n  \u003C\u002Fpicture>\r\n\r\n  \u003Cp>Wallos: Open-Source Personal Subscription Tracker\u003C\u002Fp>\r\n\r\n  [![Stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fellite\u002FWallos?style=flat-square)](https:\u002F\u002Fgithub.com\u002Fellite\u002FWallos)\r\n  [![Docker](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fpulls\u002Fbellamy\u002Fwallos?style=flat-square)](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fbellamy\u002Fwallos)\r\n  [![GitHub contributors](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fcontributors\u002Fellite\u002FWallos?style=flat-square)](https:\u002F\u002Fgithub.com\u002Fellite\u002FWallos\u002Fgraphs\u002Fcontributors)\r\n  [![GitHub Sponsors](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fsponsors\u002Fellite?style=flat-square)](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fellite)\r\n  [![Discord](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1237073478910214235?logo=discord&style=flat-square)](https:\u002F\u002Fdiscord.gg\u002Fanex9GUrPW)\r\n\u003C\u002Fdiv>\r\n\r\n\r\n## Table of Contents\r\n\r\n- [Introduction](#introduction)\r\n- [Features](#features)\r\n- [Demo](#demo)\r\n- [Getting Started](#getting-started)\r\n  - [Prerequisites](#prerequisites)\r\n    - [Baremetal](#baremetal)\r\n    - [Docker](#docker)\r\n  - [Installation](#installation)\r\n    - [Baremetal](#baremetal-1)\r\n      - [Updating](#updating)\r\n    - [Docker](#docker-1)\r\n    - [Docker-Compose](#docker-compose)\r\n- [Usage](#usage)\r\n- [Screenshots](#screenshots)\r\n- [OIDC](#oidc)\r\n- [API Documentation](#api-documentation)\r\n- [Contributing](#contributing)\r\n  - [Contributors](#contributors)\r\n  - [Translations](#translations)\r\n- [License](#license)\r\n- [Links](#links)\r\n\r\n## Introduction\r\n\r\nWallos is a powerful, open-source, and self-hostable web application designed to empower you in managing your finances with ease. Say goodbye to complicated spreadsheets and expensive financial software – Wallos simplifies the process of tracking expenses and helps you gain better control over your financial life.\r\n\r\n## Features\r\n\r\n- Subscription Management: Keep track of your recurring subscriptions and payments, ensuring you never miss a due date.\r\n- Category Management: Organize your expenses into customizable categories, enabling you to gain insights into your spending habits.\r\n- Multi-Currency support: Wallos supports multiple currencies, allowing you to manage your finances in the currency of your choice.\r\n- Currency Conversion: Integrates with the Fixer API so you can get exchange rates and see all your subscriptions on your main currency.\r\n- Data Privacy: As a self-hosted application, Wallos ensures that your financial data remains private and secure on your own server.\r\n- Customization: Tailor Wallos to your needs with customizable categories, currencies, themes and other display options.\r\n- Sorting Options: Allowing you to view your subscriptions from different perspectives.\r\n- Logo Search: Wallos can search the web for the logo of your subscriptions if you don't have them available for upload.\r\n- Mobile view: Wallos on the go.\r\n- Statistics: Another perspective into your spendings.\r\n- Notifications:  Wallos supports multiple notification methods (email, discord, pushover, telegram, gotify and webhooks). Get notified about your upcoming payments.\r\n- Multi Language support.\r\n- OIDC with OAuth\r\n- AI Recommendations with ChatGPT, Gemini or Local Ollama\r\n\r\n## Demo\r\n\r\nIf you want to try Wallos, a demo is available at [https:\u002F\u002Fdemo.wallosapp.com](https:\u002F\u002Fdemo.wallosapp.com).  \r\nThe database is reset every 2 hours.  \r\nTo access the demo use the following credentials:\r\n\r\n```python\r\nUsername: demo  \r\nPassword: demo\r\n```\r\n\r\n## Getting Started\r\n\r\nSee instructions to run Wallos below.\r\n\r\n### Prerequisites\r\n\r\n#### Baremetal\r\n\r\n- NGINX or APACHE websever running\r\n- PHP 8.3 with the following modules enabled:\r\n    - curl\r\n    - dom\r\n    - gd\r\n    - imagick\r\n    - intl\r\n    - openssl\r\n    - sqlite3\r\n    - zip\r\n    - mbstring\r\n    - fpm\r\n\r\n#### Docker\r\n\r\n- Docker\r\n\r\n### Installation\r\n\r\n#### Baremetal\r\n\r\n1. Download or clone this repo and move the files into your web root - usually `\u002Fvar\u002Fwww\u002Fhtml`\r\n2. Rename `\u002Fdb\u002Fwallos.empty.db` to `\u002Fdb\u002Fwallos.db`\r\n3. Run `http:\u002F\u002Fdomain.example\u002Fendpoints\u002Fdb\u002Fmigrate.php` on your browser\r\n4. Add the following scripts to your cronjobs with `crontab -e`\r\n\r\n```bash\r\n0 1 * * * php \u002Fvar\u002Fwww\u002Fhtml\u002Fendpoints\u002Fcronjobs\u002Fupdatenextpayment.php >> \u002Fvar\u002Flog\u002Fcron\u002Fupdatenextpayment.log 2>&1\r\n0 2 * * * php \u002Fvar\u002Fwww\u002Fhtml\u002Fendpoints\u002Fcronjobs\u002Fupdateexchange.php >> \u002Fvar\u002Flog\u002Fcron\u002Fupdateexchange.log 2>&1\r\n0 8 * * * php \u002Fvar\u002Fwww\u002Fhtml\u002Fendpoints\u002Fcronjobs\u002Fsendcancellationnotifications.php >> \u002Fvar\u002Flog\u002Fcron\u002Fsendcancellationnotifications.log 2>&1\r\n0 9 * * * php \u002Fvar\u002Fwww\u002Fhtml\u002Fendpoints\u002Fcronjobs\u002Fsendnotifications.php >> \u002Fvar\u002Flog\u002Fcron\u002Fsendnotifications.log 2>&1\r\n*\u002F2 * * * * php \u002Fvar\u002Fwww\u002Fhtml\u002Fendpoints\u002Fcronjobs\u002Fsendverificationemails.php >> \u002Fvar\u002Flog\u002Fcron\u002Fsendverificationemail.log 2>&1\r\n*\u002F2 * * * * php \u002Fvar\u002Fwww\u002Fhtml\u002Fendpoints\u002Fcronjobs\u002Fsendresetpasswordemails.php >> \u002Fvar\u002Flog\u002Fcron\u002Fsendresetpasswordemails.log 2>&1\r\n0 *\u002F6 * * * php \u002Fvar\u002Fwww\u002Fhtml\u002Fendpoints\u002Fcronjobs\u002Fcheckforupdates.php >> \u002Fvar\u002Flog\u002Fcron\u002Fcheckforupdates.log 2>&1\r\n30 1 * * 1 php \u002Fvar\u002Fwww\u002Fhtml\u002Fendpoints\u002Fcronjobs\u002Fstoretotalyearlycost.php >> \u002Fvar\u002Flog\u002Fcron\u002Fstoretotalyearlycost.log 2>&1\r\n30 3 * * 1 php \u002Fvar\u002Fwww\u002Fhtml\u002Fendpoints\u002Fcronjobs\u002Fgeneraterecommendations.php weekly >> \u002Fvar\u002Flog\u002Fcron\u002Fgeneraterecommendations.log 2>&1\r\n0 4 1 * * php \u002Fvar\u002Fwww\u002Fhtml\u002Fendpoints\u002Fcronjobs\u002Fgeneraterecommendations.php monthly >> \u002Fvar\u002Flog\u002Fcron\u002Fgeneraterecommendations.log 2>&1\r\n```\r\n\r\n5. If your web root is not `\u002Fvar\u002Fwww\u002Fhtml\u002F` adjust the cronjobs above accordingly.\r\n\r\n#### Updating\r\n\r\n1. Re-download the repo and move the files into the correct folder or do `git pull` (if you used git clone before)\r\n2. Check the [Prerequisites](#baremetal) and install \u002F enable the missing ones, if any.\r\n3. Run `http:\u002F\u002Fdomain.example\u002Fendpoints\u002Fdb\u002Fmigrate.php`\r\n\r\n#### Docker\r\n\r\n```bash\r\ndocker run -d --name wallos -v \u002Fpath\u002Fto\u002Fconfig\u002Fwallos\u002Fdb:\u002Fvar\u002Fwww\u002Fhtml\u002Fdb \\\r\n-v \u002Fpath\u002Fto\u002Fconfig\u002Fwallos\u002Flogos:\u002Fvar\u002Fwww\u002Fhtml\u002Fimages\u002Fuploads\u002Flogos \\\r\n-e TZ=Europe\u002FBerlin -p 8282:80 --restart unless-stopped \\\r\nbellamy\u002Fwallos:latest\r\n```\r\n\r\nDisable healthcheck (optional, e.g., for Docker \u003C25 or faster startup reporting):\r\n\r\n```bash\r\ndocker run -d --name wallos -v \u002Fpath\u002Fto\u002Fconfig\u002Fwallos\u002Fdb:\u002Fvar\u002Fwww\u002Fhtml\u002Fdb \\\r\n-v \u002Fpath\u002Fto\u002Fconfig\u002Fwallos\u002Flogos:\u002Fvar\u002Fwww\u002Fhtml\u002Fimages\u002Fuploads\u002Flogos \\\r\n-e TZ=Europe\u002FBerlin -p 8282:80 --restart unless-stopped \\\r\n--health-cmd=NONE \\\r\nbellamy\u002Fwallos:latest\r\n```\r\n\r\n### Docker Compose\r\n\r\n```\r\nservices:\r\n  wallos:\r\n    container_name: wallos\r\n    image: bellamy\u002Fwallos:latest\r\n    ports:\r\n      - \"8282:80\u002Ftcp\"\r\n    environment:\r\n      TZ: 'America\u002FToronto'\r\n    # Volumes store your data between container upgrades\r\n    volumes:\r\n      - '.\u002Fdb:\u002Fvar\u002Fwww\u002Fhtml\u002Fdb'\r\n      - '.\u002Flogos:\u002Fvar\u002Fwww\u002Fhtml\u002Fimages\u002Fuploads\u002Flogos'\r\n    restart: unless-stopped\r\n```\r\n\r\nDisable healthcheck (optional, e.g., for Docker \u003C25 or faster startup reporting):\r\n\r\n```\r\nservices:\r\n  wallos:\r\n    container_name: wallos\r\n    image: bellamy\u002Fwallos:latest\r\n    ports:\r\n      - \"8282:80\u002Ftcp\"\r\n    environment:\r\n      TZ: 'America\u002FToronto'\r\n    volumes:\r\n      - '.\u002Fdb:\u002Fvar\u002Fwww\u002Fhtml\u002Fdb'\r\n      - '.\u002Flogos:\u002Fvar\u002Fwww\u002Fhtml\u002Fimages\u002Fuploads\u002Flogos'\r\n    restart: unless-stopped\r\n    healthcheck:\r\n      test: [\"NONE\"]\r\n```\r\n\r\n## Usage\r\n\r\nJust open the browser and open `ip:port` of the machine running wallos.  \r\nOn the first time you run wallos a user account must be created.  \r\nGo to settings and personalise your Avatar and add members of your household. While there add \u002F remove any categories and currencies.  \r\nGet a free API Key from [Fixer](https:\u002F\u002Ffixer.io\u002F#pricing_plan) and add it in the settings.  \r\nIf you want to trigger an Update of the exchange rates, change your main currency after adding the API Key, and then change it back to your preferred one.  \r\n\r\n## Screenshots\r\n\r\n![Screenshot](screenshots\u002Fwallos-subscriptions-light.png)\r\n\r\n![Screenshot](screenshots\u002Fwallos-subscriptions-dark.png)\r\n\r\n![Screenshot](screenshots\u002Fwallos-stats.png)\r\n\r\n![Screenshot](screenshots\u002Fwallos-calendar.png)\r\n\r\n![Screenshot](screenshots\u002Fwallos-form.png)\r\n\r\n![Screenshot](screenshots\u002Fwallos-subscriptions-mobile-light.png) ![Screenshot](screenshots\u002Fwallos-subscriptions-mobile-dark.png)\r\n\r\n![Screenshot](screenshots\u002Fwallos-dashboard-mobile-light.png) ![Screenshot](screenshots\u002Fwallos-dashboard-mobile-dark.png)\r\n\r\n## OIDC\r\n\r\nOIDC can be enabled on the Admin page and can be used with providers that support OAuth.\r\n\r\n## API Documentation\r\n\r\nWallos provides a comprehensive API that allows you to interact with the application programmatically. The API documentation is available at [https:\u002F\u002Fapi.wallosapp.com\u002F](https:\u002F\u002Fapi.wallosapp.com\u002F).\r\n\r\n## Contributing\r\n\r\nFeel free to open Pull requests with bug fixes and features. I'll do my best to keep an eye on those.  \r\nFeel free to open issues with bug reports or feature requests. Bug fixes will take priority.  \r\nI welcome contributions from the community and look forward to working with you to improve this project.\r\n\r\n### Contributors\r\n\r\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fellite\u002Fwallos\u002Fgraphs\u002Fcontributors\">\r\n  \u003Cimg src=\"https:\u002F\u002Fcontrib.rocks\u002Fimage?repo=ellite\u002Fwallos\" \u002F>\r\n\u003C\u002Fa>\r\n\r\n### Translations\r\n\r\nIf you want to contribute with a translation of wallos:\r\n- Add your language code to `includes\u002Fi18n\u002Flanguages.php` in the format `\"en\" => [\"name\" => \"English\", \"dir\" => \"ltr\"],`. Please use the original language name and not the english translation.\r\n- Create a copy of the file `includes\u002Fi18n\u002Fen.php` and rename it to the language code you used above. Example: pt.php for \"pt\" => [\"name\" => \"Português\", \"dir\" => \"ltr\"],.\r\n- Translate all the values on the language file to the new language. (Incomplete translations will not be accepted).\r\n- Create a copy of the file `scripts\u002Fi18n\u002Fen.js` and rename it to the language code you used above. Example: pt.js for \"pt\" => [\"name\" => \"Português\", \"dir\" => \"ltr\"],.\r\n- Translate all the values on the language file to the new language. (Incomplete translations will not be accepted).\r\n\r\n## License\r\n\r\nThis project is licensed under the [GNU General Public License, Version 3](LICENSE.md) - see the [LICENSE.md](LICENSE.md) file for details.\r\n\r\n### Why GPLv3?\r\n\r\nI chose the GNU General Public License version 3 (GPLv3) for this project because it ensures that the software remains open source and freely available to the community. GPLv3 mandates that any derivative works or modifications must also be released under the same license, promoting the principles of software freedom.\r\n\r\nI strongly believe in the importance of open source software and the collaborative nature of development, and I invite contributors to help improve this project.\r\n\r\n## Links\r\n\r\n- The author: [henrique.pt](https:\u002F\u002Fhenrique.pt)\r\n- Wallos Landingpage: [wallosapp.com](https:\u002F\u002Fwallosapp.com)\r\n- Join the conversation: [Discord Server](https:\u002F\u002Fdiscord.gg\u002Fanex9GUrPW)\r\n\r\n","Wallos 是一个开源的个人订阅跟踪器，支持自托管。它能够帮助用户可视化定期支出、管理预算并节省开支。核心功能包括订阅管理和分类管理，支持多货币和货币转换，通过与Fixer API集成提供实时汇率查询。此外，Wallos 提供了数据隐私保护，确保财务数据在用户的服务器上保持私密和安全。用户还可以根据需要自定义类别、货币、主题等显示选项。适用于希望更好地控制个人财务、避免错过付款日期，并且注重数据隐私的用户。",2,"2026-06-11 03:16:54","top_language"]