{"id":16347133,"url":"https://github.com/zenithclown/finfolio","last_synced_at":"2026-02-04T07:06:16.103Z","repository":{"id":268249362,"uuid":"861873791","full_name":"ZenithClown/finfolio","owner":"ZenithClown","description":"A Personal Finance Management Tool for the Developers, by the Developer","archived":false,"fork":false,"pushed_at":"2024-11-23T18:02:03.000Z","size":103,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-02T21:15:00.595Z","etag":null,"topics":["data-analysis","data-science","finance","finance-application","finance-management","good-habits","personal-finance","portfolio"],"latest_commit_sha":null,"homepage":"","language":"PLpgSQL","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/ZenithClown.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},"funding":{"github":["ZenithClown"]}},"created_at":"2024-09-23T16:48:14.000Z","updated_at":"2024-11-23T18:02:06.000Z","dependencies_parsed_at":"2024-12-15T15:17:30.991Z","dependency_job_id":"adfd425c-a9ac-4c6b-b20a-09fdc189ee75","html_url":"https://github.com/ZenithClown/finfolio","commit_stats":null,"previous_names":["zenithclown/finfolio"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ZenithClown/finfolio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZenithClown%2Ffinfolio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZenithClown%2Ffinfolio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZenithClown%2Ffinfolio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZenithClown%2Ffinfolio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ZenithClown","download_url":"https://codeload.github.com/ZenithClown/finfolio/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZenithClown%2Ffinfolio/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264756502,"owners_count":23659301,"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":["data-analysis","data-science","finance","finance-application","finance-management","good-habits","personal-finance","portfolio"],"created_at":"2024-10-11T00:39:53.308Z","updated_at":"2026-02-04T07:06:16.098Z","avatar_url":"https://github.com/ZenithClown.png","language":"PLpgSQL","funding_links":["https://github.com/sponsors/ZenithClown"],"categories":[],"sub_categories":[],"readme":"\u003ch1 align = \"center\"\u003e\n  Personal Portfolio Management Tool \u003cimg src = \"./static/images/favicon.png\" height = \"190\" width = \"175\" align = \"right\" /\u003e\u003cbr\u003e\n  \u003ccode\u003efinfolio\u003c/code\u003e\u003cbr\u003e\n  \u003ca href = \"https://dbdocs.io/dpramanik.official/finfolio\"\u003e\u003cimg src=\"https://img.shields.io/badge/DBDocs-Documentation-darkgreen?style=plastic\u0026logo=docker\"/\u003e\u003c/a\u003e\n  \u003ca href = \"https://dbdiagram.io/d/finfolio-66f1c03ca0828f8aa6cc7e4d\"\u003e\u003cimg src=\"https://img.shields.io/badge/DBDocs-Schema_Explore-darkgreen?style=plastic\u0026logo=databricks\"/\u003e\u003c/a\u003e\n\u003c/h1\u003e\n\n\u003cdiv align = \"justify\"\u003e\n\n**Project `finfolio`** is a personal finance management and analysis system that helps individuals track income, expenses, savings, and\ninvestments with **Python**, **PostgreSQL**, and interactive **NextJS Admin Dashboard**.\n\n## 📜 Project Objective\n\nMost personal finance tools in the market depend on **third-party integrations** such as email parsing, SMS reading, or\nautomatic syncing with bank accounts. While convenient, these approaches often come at the cost of **privacy** — data is shared\nacross multiple platforms, leaving users with little to no control over how their financial information is stored or used. In\naddition, most of these apps share personal information which leads to unnecessary telemarketing calls and may trigger other\nfradulent activities.\n\nTo resolve this, meet **`finfolio`** a project designed with a **privacy-first approach**, ensuring that users maintain complete\nownership of their data. The robust database design makes the application suitable for personal usage that let's you track\nexpenses, incomes and even plugins added for tracking share market investments (like stocks, mutual funds) and generate summary\nnotes with LLM powered third-party applications (optional) and other paid tools built on top of the project as an extensions.\n\n### 🔑 Key Objectives\n\nThe project has the following key objectives and development stages, complexity (user-friendly), and other important details\nare as follows:\n\n\u003cdiv align = \"center\"\u003e\n\n| MVP Feature | Feature Note | Development Status |\n| --- | --- | :---: |\n| ✅ **Fully Offline Operation** | Data is Stored and Managed by End-User. | 🚧 |\n| ✅ **Zero Third-Party Data Sharing** | No Data Sharing/Third-Party Integration. | ✅ |\n| ✅ **Flexible Data Entry** | Manual/Import Flat Files | 🚧 |\n| ✅ **Essential Financial Dashboards** | Intercative NextJS Admin Dashboard | 🚧 |\n\n\u003c/div\u003e\n\n## 📜 Getting Started\n\nThis is now a [NextJS](https://nextjs.org) project using [PostgREST](https://docs.postgrest.org/en/v13/) that automatically\nprovides RESTful API for the underlying tables and data. Since the data is hosted in a secured cloud of choice by the end user,\nso any new changes in the database can automatically reflect in the RESTful API design without updating the underlying ORM\nmodels giving the felxibility and reducing coding dependency when the underying is updated.\n\n```shell\nnpm install # install dependencies with npm\nnpm run dev # run the development server in http://localhost:3000\n\n# create suitable environment variables that hosts your database\n# and this is referenced in the shell script to initialize and host service\n# check https://docs.postgrest.org/en/v13/ for more information\nexport ORACLE_POSTGRES_HOST=localhost\nexport ORACLE_POSTGRES_PORT=5432\n\nexport ORACLE_POSTGRES_USERNAME=webanon\nexport ORACLE_POSTGRES_PASSWORD=password\n\n# run the postgrest using the ./postgrest.sh\n# the configuration is defined under the postgrest.conf\n# not the shell script name is same as the service, so ./ is used\n./postgrest.sh # API server runs in http://localhost:3100\n```\n\nIn addition, if you are using a windows machine, then the same can be done by installing PostgREST ZIP file from\n[source code](https://github.com/PostgREST/postgrest) and then adding the unzipped file under environment variables. The\nscript can be run as below:\n\n```powershell\nset PGRST_DB_URI=postgres://postgres:password@localhost:port/finfolio\npostgrest postgrest.conf\n```\n\nThe project uses the [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) and is configured\nglobally with the constant `defaultFont` to switch between fonts easily as per user's preferences.\n\n### RESTful API \u0026 Swagger UI Documentation\n\nThe PostgREST comes in-built with Swagger UI 2.0 and is available in the root path as per the configuration file. The\nfile is designed to handle all the necessary schemas that are required currently defined under the `./database` directory\nand all the tables have `GET, POST, UPDATE` defined along with.\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzenithclown%2Ffinfolio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzenithclown%2Ffinfolio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzenithclown%2Ffinfolio/lists"}