diff --git a/.gitignore b/.gitignore index 219036f..c6b561b 100644 --- a/.gitignore +++ b/.gitignore @@ -47,3 +47,6 @@ next-env.d.ts apps/mcp/dist/ apps/mcp/node_modules/ supabase/.temp/ + +# Generated build artifacts +/GeneratedAssets/ diff --git a/CLAUDE.md b/CLAUDE.md index 1aeaedd..ed8568d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -7,7 +7,7 @@ Built with Next.js + TypeScript. Formerly QuietLedger. **Current Release:** v0.11.1 (2026-07-03) **Live domain:** https://ledger.kovina.org -**Deploy status:** Local (v0.11.1 committed, deploy pending) +**Deploy status:** ✅ Live — deployed 2026-07-04 (deploy ID `dpl_FiZA8FZnwU95FR576GjpM8HVTCzz`) Releases: v0.11.1 — Open Product Family Branding (header lockup redesign, icon pipeline, OpenPalette alignment, full icon suite) diff --git a/public/kovina-wordmark.svg b/public/kovina-wordmark.svg new file mode 100644 index 0000000..d763579 --- /dev/null +++ b/public/kovina-wordmark.svg @@ -0,0 +1,10 @@ + + diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx index bf1c3fb..ca80e86 100644 --- a/src/app/about/page.tsx +++ b/src/app/about/page.tsx @@ -5,7 +5,8 @@ import Link from "next/link"; export const metadata: Metadata = { title: "About", - description: "About OpenLedger — a private, editorial personal finance ledger.", + description: + "About OpenLedger — a straightforward tool for keeping track of your money, without the noise.", }; export default function AboutPage() { @@ -43,9 +44,9 @@ export default function AboutPage() { marginBottom: 16, }} > - OpenLedger is a personal finance ledger designed for clarity, privacy, and calm. - It is not a budgeting app. It is not accounting software. It is a place to record - where your money came from, where it went, and what that means to you. + OpenLedger is a straightforward tool for keeping track of your money. It helps you + record what you earn and spend, review your transactions, and understand your + financial habits — without the noise, notifications, or upsells.
- In a world of financial dashboards, push notifications, and gamified savings - challenges, OpenLedger steps back. It gives you a clean page, a running balance, - and the tools to make sense of your financial life on your own terms. + Think of it as a simple notebook for your finances. You write down each transaction, + organise it by account and category, and come back later to see the full picture. + There are no graphs fighting for your attention, no "you could save more" + nudges, and no charts trying to sell you something. +
++ Just a clear, calm record of where your money went. +
+ + ++ + Record transactions + {" "} + — Add income and expenses manually or import them from a CSV file. Each entry + goes into an account and a category so you can find it later. +
++ + Organise by account + {" "} + — Set up accounts for your checking, credit card, savings, loans, crypto, or + anything else. See balances at a glance and keep everything separate. +
++ + Review your spending + {" "} + — See a monthly report of income vs. expenses, explore category breakdowns, and + compare months side by side. The numbers are always yours to interpret. +
++ + Set budgets and goals + {" "} + — Create spending plans for categories you care about and track progress. + Set savings milestones and contribute to them over time. +
++ + Search and find + {" "} + — Search across all your transactions, filter by date range or account, and + save frequent searches. Your history is always a few keystrokes away.
- Your data lives on your device. In guest mode, nothing ever leaves your browser. - If you sign in with Google, you can optionally back up your ledger to the cloud — - but every upload and deletion is manually triggered. No automatic sync, no - background data collection, no analytics. + You can use OpenLedger without creating an account. In guest mode, everything you + enter stays on your own device — it never touches the internet. If you later decide + to sign in with Google, you can optionally save a backup to the cloud. Every backup + and every deletion is something you trigger yourself. Nothing happens automatically. + No data is collected. No analytics run in the background.
@@ -104,8 +198,17 @@ export default function AboutPage() { color: "var(--text-secondary)", }} > - OpenLedger is free software released under the AGPL-3.0 license. The source - code is available on{" "} + OpenLedger is free software — you can use it, read the code, modify it, and share + it. It is released under the{" "} + + AGPL-3.0 license + + . The source code is published on{" "} GitHub - . Built with Next.js, TypeScript, and Supabase. + . diff --git a/src/app/page.tsx b/src/app/page.tsx index fcc2aaa..b259726 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -124,20 +124,25 @@ function PrincipleBlock({ title: string; text: string; }) { + const icon = PRINCIPLE_ICONS[number as keyof typeof PRINCIPLE_ICONS]; + return (Last updated: June 21, 2026
+Last updated: July 4, 2026
- OpenLedger is built from the ground up with privacy as a core principle. Your financial data belongs to you - and stays under your control. We do not collect, sell, rent, or share your personal information or financial - transactions with any third party. + OpenLedger is designed so that your financial data remains yours — always. We + do not collect, sell, rent, or share your personal information or financial + records. This policy explains what information is handled, how, and what + choices you have.
- In default guest mode, all data — accounts, transactions, budgets, goals, and settings — is stored exclusively
- in your browser's localStorage. No data is sent to any server. You can export a JSON backup at
- any time from Settings → Local data → Export JSON.
+ OpenLedger is developed and maintained by Sparsh Sam. As the data controller
+ for any personal information processed through the optional cloud backup
+ feature, your data is handled in accordance with applicable privacy laws,
+ including the General Data Protection Regulation (GDPR) and the California
+ Consumer Privacy Act (CCPA) where they apply.
+
+ In its default guest mode, OpenLedger stores all data — accounts,
+ transactions, budgets, goals, categories, and settings — exclusively in your
+ browser's localStorage. No data is transmitted to any server.
+ You can export a complete JSON backup at any time from Settings.
- If you choose to sign in (via Google OAuth), you may optionally back up your ledger to Supabase, - a hosted PostgreSQL database. This backup is manually triggered — it is never automatic. Only the data you - explicitly upload is stored. You may delete your cloud backup at any time from the Cloud Backup panel. + If you sign in with Google OAuth, you may optionally back up your ledger to + Supabase, a SOC 2-compliant hosted PostgreSQL database. Key details:
+- Nothing. OpenLedger does not include analytics, telemetry, tracking pixels, or crash - reporting. The app does not make network requests except: + None. OpenLedger does not include analytics, telemetry, + tracking pixels, heatmaps, session recording, or crash reporting. The + application makes network requests only in these specific circumstances:
+ For users in the European Economic Area, the legal basis for processing + personal data through the optional cloud backup feature is your consent. + You give consent by choosing to sign in and manually initiating a backup. + You may withdraw consent at any time by deleting your cloud backup and + ceasing use of the feature. +
+- OpenLedger is deployed on Vercel. Vercel may process standard HTTP request logs (IP address, user agent, - request path) as part of their hosting service. We do not access or analyse these logs. See{" "} + OpenLedger is deployed on Vercel. Vercel processes standard HTTP request + metadata (IP address, user agent, request path, timestamp) as part of their + hosting service. We do not access, store, or analyse these logs. See{" "} Vercel's Privacy Policy {" "} for details.
- Supabase is used as an optional cloud backup provider. If you sign in and use backup features, data is stored - on Supabase infrastructure. See{" "} + Supabase provides the optional cloud backup infrastructure. If you choose to + use cloud backup, your data is stored on Supabase's SOC 2-compliant + infrastructure in the United States. See{" "} Supabase's Privacy Policy {" "} for details.
++ Google OAuth is used solely for authentication. No financial data is shared + with Google through this integration. See{" "} + + Google's Privacy Policy + {" "} + for details. +
+ If you use the optional cloud backup feature, your data may be stored and + processed in the United States. For users in the European Economic Area or + the United Kingdom, we rely on Standard Contractual Clauses or equivalent + safeguards to ensure an adequate level of data protection. +
++ Depending on your jurisdiction, you may have the following rights regarding + your personal data: +
+ To exercise these rights, email{" "} + sparshsam@gmail.com. We will + respond within 30 days. You also have the right to lodge a complaint with + your local data protection authority. +
- You can export your full ledger as a JSON file at any time from the Settings panel. This export includes all - accounts, transactions, budgets, goals, and import metadata. No additional requests are necessary. + You can export your complete ledger as a JSON file at any time from Settings + → Local data → Export JSON. The export includes all accounts, + transactions, budgets, goals, categories, and import metadata. No additional + requests are necessary — your data never leaves your device during export.
- If this policy changes materially, the “Last updated” date at the top will be revised. We will - never reduce your privacy rights without notice. + If this policy is updated materially, the “Last updated” date + will be revised. Material changes will be communicated through the + application. We will never reduce your privacy rights under this policy + without your explicit consent.
- For privacy questions or data deletion requests, email{" "} - sparshsam@gmail.com. + For privacy questions, data deletion requests, or to exercise any of your + data rights, contact: +
+
+ Sparsh Sam
+ Email:{" "}
+ sparshsam@gmail.com
+
+ GitHub:{" "}
+
+ github.com/sparshsam
+
Last updated: June 21, 2026
+Last updated: July 4, 2026
- By using OpenLedger, you agree to these terms. If you do not agree, do not use the application. + By accessing or using OpenLedger (“the Application”), you agree + to be bound by these Terms of Service. If you do not agree to all of these + terms, do not access or use the Application. +
++ OpenLedger is a personal finance ledger that runs in your browser. It allows + you to record transactions, organise accounts, set budgets and goals, and + review your financial records. The Application is provided as free, + open-source software and may be self-hosted independently.
- OpenLedger is a tool for tracking and organising your financial records. It does not provide financial, - investment, legal, or tax advice. You are solely responsible for your financial decisions. + OpenLedger is a tool for recording and organising financial records. It does + not provide financial, investment, legal, accounting, or tax advice of any + kind. Nothing in the Application constitutes a recommendation or solicitation + to buy, sell, or hold any financial instrument. You are solely responsible + for your financial decisions and should consult qualified professionals for + personalised advice. +
++ The Application is provided “as is” and “as available” + without any warranty of any kind, express or implied, including but not limited + to the warranties of merchantability, fitness for a particular purpose, and + non-infringement. The developer makes no representation or warranty that: +
++ No advice or information obtained from the Application shall create any + warranty not expressly stated in these terms.
- OpenLedger is provided “as is” without warranty of any kind, express or implied. The authors - are not liable for any damages arising from its use. You use the software at your own risk. + To the maximum extent permitted by applicable law, in no event shall the + developer be liable for any indirect, incidental, special, consequential, or + punitive damages, including but not limited to loss of profits, data, use, + goodwill, or other intangible losses, arising out of or in connection with + your use of the Application. This limitation applies whether the alleged + liability is based on contract, tort, negligence, strict liability, or any + other legal theory, even if the developer has been advised of the possibility + of such damages.
- You are responsible for maintaining backups of your data. OpenLedger provides JSON export/import tools and - optional cloud backup, but these are convenience features, not guarantees. The authors are not responsible - for data loss resulting from browser storage clearing, failed backups, or user error. + You are solely responsible for maintaining copies of your data. The Application + provides JSON export and optional cloud backup as convenience features, but + these are not guarantees against data loss. The developer is not responsible for:
+- OpenLedger runs primarily in your browser. The hosted version on Vercel may experience downtime for - maintenance or unforeseen issues. No uptime guarantee is provided. The open-source codebase can be - self-hosted independently at any time. + The hosted version of OpenLedger at{" "} + + ledger.kovina.org + {" "} + is provided on a best-effort basis. We do not guarantee uninterrupted + availability. The Application may be unavailable for maintenance, updates, or + due to unforeseen issues with hosting infrastructure. Because the software + is open-source, you may self-host it independently at any time.
You agree to:
+- You agree not to use OpenLedger for any unlawful purpose or in violation of any applicable laws or - regulations. + The optional cloud backup feature relies on Supabase, a third-party platform. + If you choose to use cloud backup, your data is subject to{" "} + + Supabase's Terms of Service + + . The Application is hosted on Vercel, subject to{" "} + + Vercel's Terms of Service + + . We are not responsible for the operation, security, or availability of + these third-party services. +
++ These terms shall be governed by and construed in accordance with the laws of + the Province of Ontario and the federal laws of Canada applicable therein, + without regard to its conflict of law provisions. Any disputes arising out of + these terms shall be resolved in the courts of Toronto, Ontario.
- These terms may be updated from time to time. Continued use after changes constitutes acceptance of the - revised terms. Material changes will be noted by updating the “Last updated” date. + We reserve the right to update these terms at any time. Changes will be + effective immediately upon posting the revised terms. Continued use of the + Application after changes constitutes acceptance of the new terms. Material + changes will be communicated through the Application. We encourage you to + review these terms periodically. +
++ If any provision of these terms is found to be unenforceable or invalid under + applicable law, the remaining provisions shall continue in full force and + effect.
- For questions about these terms, email{" "} - sparshsam@gmail.com. + For questions about these terms, please contact: +
+
+ Sparsh Sam
+ Email:{" "}
+ sparshsam@gmail.com
+
+ GitHub:{" "}
+
+ github.com/sparshsam
+