[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81270":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":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":13,"stars7d":15,"stars30d":16,"stars90d":14,"forks30d":14,"starsTrendScore":17,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":19,"topics":21,"createdAt":10,"pushedAt":10,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":14,"starSnapshotCount":14,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},81270,"lumina-finance","Lumina-Finance\u002Flumina-finance","Lumina-Finance","A feature rich, self hostable alternative for managing your personal finances","",null,"Python",83,1,0,27,34,14,56.8,false,"main",[],"2026-06-12 04:01:32","# Lumina Finance\n\n\u003C!-- markdownlint-disable MD033 -->\n\u003Cdiv style=\"display: flex; flex-wrap: wrap; justify-content: left; align-items: center; column-gap: 16px; row-gap: 0;\">\n  \u003Ca style=\"flex: 0 0 auto;\" href=\"https:\u002F\u002Fgithub.com\u002FLumina-Finance\u002Flumina-finance\u002Factions\u002Fworkflows\u002Fbackend-tests.yml\">\u003Cimg alt=\"Backend Tests\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002FLumina-Finance\u002Flumina-finance\u002Fbackend-tests.yml?branch=main&label=Backend%20Tests&style=flat&logo=githubactions&logoColor=white\">\u003C\u002Fa>\n  \u003Ca style=\"flex: 0 0 auto;\" href=\"https:\u002F\u002Fgithub.com\u002FLumina-Finance\u002Flumina-finance\u002Factions\u002Fworkflows\u002Fbuild-and-push-docker-image.yml\">\u003Cimg alt=\"Docker Image Builds\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002FLumina-Finance\u002Flumina-finance\u002Fbuild-and-push-docker-image.yml?event=release&label=Docker%20Image%20Builds&style=flat&logo=githubactions&logoColor=white\">\u003C\u002Fa>\n  \u003Ca style=\"flex: 0 0 auto;\" href=\"https:\u002F\u002Fhub.docker.com\u002Fr\u002Fluminahq\u002Flumina-finance\">\u003Cimg alt=\"Docker Pulls\" src=\"https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fpulls\u002Fluminahq\u002Flumina-finance?label=Docker%20Pulls&style=flat&logo=docker&logoColor=white&labelColor=2496ED&color=white\">\u003C\u002Fa>\n  \u003Ca style=\"flex: 0 0 auto;\" href=\"https:\u002F\u002Fgithub.com\u002FLumina-Finance\u002Flumina-finance\">\u003Cimg alt=\"GitHub Stars\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FLumina-Finance\u002Flumina-finance?label=GitHub%20Stars&style=flat&logo=github&logoColor=white&labelColor=181717&color=eac54f\">\u003C\u002Fa>\n\u003C\u002Fdiv>\n\n\u003C!-- markdownlint-enable MD033 -->\n\nLumina Finance is a self-hosted personal finance app for managing your finances, track expenses, set budgets, and perform analysis on your spending behaviour.\n\n## DISCLAIMER\n\nTHIS APPLICATION IS PROVIDED “AS IS” AND “AS AVAILABLE,” WITHOUT WARRANTIES OF ANY KIND. THIS APPLICATION IS A SOFTWARE TOOL ONLY AND DOES NOT PROVIDE FINANCIAL, INVESTMENT, TAX, LEGAL, ACCOUNTING, OR OTHER PROFESSIONAL ADVICE. ANY CALCULATIONS, ESTIMATES, PROJECTIONS, SUMMARIES, OR OTHER OUTPUTS MAY BE INACCURATE OR INCOMPLETE AND SHOULD NOT BE RELIED ON AS A SUBSTITUTE FOR PROFESSIONAL JUDGMENT. YOU ARE SOLELY RESPONSIBLE FOR REVIEWING ALL OUTPUTS AND FOR ANY DECISIONS YOU MAKE. USE OF THIS APPLICATION IS AT YOUR OWN RISK.\n\n## Features\n\nLumina Finance gives you one place to track accounts, transactions, budgets, and financial trends while keeping the app under your control.\n\n- **Accounts** - Track cash, credit, savings, and other account types with balance history, detail views, and hide archived accounts\n- **Transactions** - Add or import transactions, then organize them with merchants, categories, tags, and notes\n- **Budgets** - Create recurring or one-off budgets, attach them to categories, and see current and historical utilization at a glance\n- **Dashboard** - Check net worth, credit usage, spending, savings rate, recent activity, and top budgets from one place\n- **Runway** - Choose the accounts that make up your cash cushion and see how many months they could cover based on your recent average spending in the worst case scenario\n- **Insights** - Review cash flow, income and expense breakdowns, net worth trends, savings-rate trends, and merchant patterns\n- **Self-hostable** - You have full control of your data, run it locally with Docker or bare metal\n\n### Roadmap\n\nThis roadmap may change as Lumina Finance evolves based on user feedback, technical constraints, and project priorities.\n\n#### Near Term\n\n- [X] Insights tab for deeper reports and trends\n- [X] UI\u002FUX polish across the main workflows\n- [X] Bug fixes and stability improvements\n- [ ] Multi-currency support\n- [ ] Application security improvements and fixes\n- [ ] OIDC and WebAuthN support\n- [ ] SaaS development and testing\n\n#### Long Term\n\n- [ ] SimpleFIN and Plaid connections for automatic account and transaction syncing\n- [ ] Basic investment tracker (bring your own data)\n- [ ] A few quite ambitious features we're not quite ready to spoil yet :)\n\n## Screenshots\n\nThese pages are now also fully mobile and tablet optimized!\n\n\u003C!-- markdownlint-disable MD033 -->\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fscreenshots\u002Fdashboard_light.png\" alt=\"Screenshot of dashboard in light mode\" width=\"49%\">\n  \u003Cimg src=\"docs\u002Fscreenshots\u002Fdashboard_dark.png\" alt=\"Screenshot of dashboard in dark mode\" width=\"49%\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fscreenshots\u002Faccounts_light.png\" alt=\"Screenshot of accounts page in light mode\" width=\"49%\">\n  \u003Cimg src=\"docs\u002Fscreenshots\u002Faccounts_dark.png\" alt=\"Screenshot of accounts page in dark mode\" width=\"49%\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fscreenshots\u002Finsights_light.png\" alt=\"Screenshot of insights page in light mode\" width=\"49%\">\n  \u003Cimg src=\"docs\u002Fscreenshots\u002Finsights_dark.png\" alt=\"Screenshot of insights page in dark mode\" width=\"49%\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fscreenshots\u002Faccount_details_light.png\" alt=\"Screenshot of account details in light mode\" width=\"49%\">\n  \u003Cimg src=\"docs\u002Fscreenshots\u002Faccount_details_dark.png\" alt=\"Screenshot of account details in dark mode\" width=\"49%\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fscreenshots\u002Ftransactions_light.png\" alt=\"Screenshot of transactions page in light mode\" width=\"49%\">\n  \u003Cimg src=\"docs\u002Fscreenshots\u002Ftransactions_dark.png\" alt=\"Screenshot of transactions page in dark mode\" width=\"49%\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fscreenshots\u002Fbudgets_light.png\" alt=\"Screenshot of budgets page in light mode\" width=\"49%\">\n  \u003Cimg src=\"docs\u002Fscreenshots\u002Fbudgets_dark.png\" alt=\"Screenshot of budgets page in dark mode\" width=\"49%\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fscreenshots\u002Fbudget_details_light.png\" alt=\"Screenshot of budget details in light mode\" width=\"49%\">\n  \u003Cimg src=\"docs\u002Fscreenshots\u002Fbudget_details_dark.png\" alt=\"Screenshot of budget details in dark mode\" width=\"49%\">\n\u003C\u002Fp>\n\n\u003C!-- markdownlint-enable MD033 -->\n\n## Deployment\n\n### Docker\n\nIf you'd like to deploy this with Docker, an example docker compose file is provided in [`docker\u002Fcompose.example.yml`](docker\u002Fcompose.example.yml) with an example [`.env`](docker\u002F.env.example) file containing the required variables and optional `APP_URL` value.\n\n### Bare Metal\n\nIf you'd like to deploy this bare metal, please clone the repo. The frontend is built with vite and you can build it and serve the static files with things like Caddy or Nginx. The backend is built with FastAPI, so you can serve it as a plain ASGI application with uvicorn. All environment variables should be set at the repo's root level. **Note that you will be responsible for generating the required RSA256 private keys as the auto generation currently only works with the Docker deployment as part of the startup process, in additon to configuring the environment variables correctly.**\n\n## Environment Variables\n\n| Variable | Required | Expected Values | Default Value | Purpose |\n| --- | --- | --- | --- | --- |\n| `APP_URL` | No | URL origin | None | Public frontend origin. Automatically included in the backend CORS allowed origins. If unset, CORS allows all origins. |\n| `DB_HOST` | Yes | Hostname or IP | None | PostgreSQL host. |\n| `DB_PORT` | Yes | Port number | None | PostgreSQL port. |\n| `DB_NAME` | Yes | Database name | None | PostgreSQL database name. |\n| `DB_USER` | Yes | Database user | None | PostgreSQL username. |\n| `DB_PASSWORD` | Yes | Database password | None | PostgreSQL password. |\n\n### [JWKS (JSON Web Key Set)](https:\u002F\u002Fauth0.com\u002Fdocs\u002Fsecure\u002Ftokens\u002Fjson-web-tokens\u002Fjson-web-key-sets) and JWT Configs\n\nThese are some advanced variables that you could also set. Lumina Finance provides an endpoint that exposes known RSA public keys used to verify the JWT tokens. However, you should only modify these settings if you set up an API gateway or a reverse proxy that validates JWT token signatures. If you'd like to verify the JWT tokens so that only validated requests go through your API gateway\u002Freverse proxy, you can configure the options below:\n\n| Variable | Required | Expected Values | Default Value | Purpose |\n| --- | --- | --- | --- | --- |\n| `JWT_ACCESS_KID` | No | String | `access-kid` | Key ID written into access-token JWT headers and published in JWKS. It does not need to match the private key filename. |\n| `JWT_REFRESH_KID` | No | String | `refresh-kid` | Key ID written into refresh-token JWT headers and published in JWKS. It does not need to match the private key filename. |\n| `JWT_ACCESS_TOKEN_EXPIRE_SECONDS` | No | Positive integer | `900` | Access-token lifetime in seconds. |\n| `JWT_REFRESH_TOKEN_EXPIRE_SECONDS` | No | Positive integer | `86400` | Refresh-token lifetime in seconds. |\n| `JWT_ISSUER` | No | String | `lumina-finance` | JWT issuer claim. |\n| `JWT_ACCESS_PRIVATE_KEY_PATH` | No | File path | `\u002Fdata\u002Fkeys\u002Faccess_private.pem` | Access token RSA256 private key path inside the container. If a key is not provided, the app will generate one automatically. |\n| `JWT_REFRESH_PRIVATE_KEY_PATH` | No | File path | `\u002Fdata\u002Fkeys\u002Frefresh_private.pem` | Refresh token RSA256 private key path inside the container. If a key is not provided, the app will generate one automatically |\n\n## FAQs\n\n1. **Why are you building Lumina Finance when other personal finance tools already exist?**\n\n    There are already great personal finance tools out there, including some that are self-hostable, but many feel outdated, too simplistic, overly complicated, or too focused on one specific workflow.\n\n    We are building Lumina Finance because we want a modern, feature-rich, and accessible alterantive that helps people understand their finances more clearly without needing to fight the software. Our goal is to combine strong financial tracking, a clean and modern user experience, privacy conscious design, and practical insights in one product. Essentially, we want to bulid something that \"just works.\"\n\n2. **Is this open source, and will self-hosting be free?**\n\n    We are committed to keeping Lumina Finance free to self-host for non-commercial personal use, excluding features and services that require external data, paid APIs, or external compute.\n\n    Our goal is to eventually make Lumina Finance open source, but because we may commercialize the project in the future, we are still evaluating the best licensing structure with legal professionals. We want to choose a license that supports community use while keeping the project sustainable.\n\n    For now, any commercial, organizational, or business related use is not permitted unless explicitly authorized. This includes, but is not limited to, self hosting Lumina Finance for employees, clients, customers, contractors, teams, or business operations.\n\n3. **What data does Lumina Finance collect?**\n\n    For self hosted instances, Lumina Finance collects no data. Your data stays within your own deployment environment and never leaves your site. You are also responsible for securing your own deployment, database, backups, and any connected services.\n\n---\n\n\u003C!-- markdownlint-disable MD033 -->\n\u003Ca href=\"https:\u002F\u002Fwww.star-history.com\u002F?repos=Lumina-Finance%2Flumina-finance&type=date&legend=top-left\">\n \u003Cpicture>\n   \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=Lumina-Finance\u002Flumina-finance&type=date&theme=dark&legend=top-left\" \u002F>\n   \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=Lumina-Finance\u002Flumina-finance&type=date&legend=top-left\" \u002F>\n   \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=Lumina-Finance\u002Flumina-finance&type=date&legend=top-left\" \u002F>\n \u003C\u002Fpicture>\n\u003C\u002Fa>\n","Lumina Finance 是一个功能丰富的个人财务管理应用，支持自托管。它允许用户跟踪账户、交易、预算，并对支出行为进行分析。该应用采用 TypeScript 开发，具备账户管理、交易记录与分类、预算设定及可视化仪表盘等功能，帮助用户全面了解自己的财务状况。特别适合需要在本地环境中安全地管理和分析个人财务数据的用户使用。",2,"2026-06-11 04:04:07","CREATED_QUERY"]