Rename frontend brand to Aarthalabs

This commit is contained in:
MOHAN 2026-07-22 19:34:02 +05:30
parent 22e162ae26
commit 20f32ba0de
54 changed files with 158 additions and 158 deletions

View File

@ -11,9 +11,9 @@ import { defaultFaqs } from "../../data/faq";
import { siteInfo } from "../../data/site"; import { siteInfo } from "../../data/site";
export const metadata = { export const metadata = {
title: "About LedgerOne", title: "About Aarthalabs",
description: description:
"Learn how LedgerOne builds audit-ready ledgers for US finance, tax, and operations teams.", "Learn how Aarthalabs builds audit-ready ledgers for US finance, tax, and operations teams.",
keywords: siteInfo.keywords keywords: siteInfo.keywords
}; };
@ -52,9 +52,9 @@ export default function AboutPage() {
{ {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "WebPage", "@type": "WebPage",
name: "About LedgerOne", name: "About Aarthalabs",
description: description:
"Learn how LedgerOne builds audit-ready ledgers for US finance, tax, and operations teams.", "Learn how Aarthalabs builds audit-ready ledgers for US finance, tax, and operations teams.",
url: `${siteInfo.url}/about` url: `${siteInfo.url}/about`
}, },
{ {
@ -80,12 +80,12 @@ export default function AboutPage() {
Our Story Our Story
</div> </div>
<h1 className="text-4xl font-bold tracking-tight text-foreground sm:text-5xl leading-tight"> <h1 className="text-4xl font-bold tracking-tight text-foreground sm:text-5xl leading-tight">
LedgerOne keeps every transaction ready for{" "} Aarthalabs keeps every transaction ready for{" "}
<span className="heading-hero-accent">ready for audits, review, and action.</span> <span className="heading-hero-accent">ready for audits, review, and action.</span>
</h1> </h1>
<div className="space-y-4 text-lg text-muted-foreground"> <div className="space-y-4 text-lg text-muted-foreground">
<p> <p>
We built LedgerOne for teams that manage high volumes of transactions but We built Aarthalabs for teams that manage high volumes of transactions but
still need each decision documented. Our ledger-first workflow keeps the still need each decision documented. Our ledger-first workflow keeps the
raw truth intact while allowing intelligent categorization and rule-driven raw truth intact while allowing intelligent categorization and rule-driven
automation. automation.
@ -119,7 +119,7 @@ export default function AboutPage() {
Built for US operators Built for US operators
</p> </p>
<p className="mt-1 text-sm text-muted-foreground"> <p className="mt-1 text-sm text-muted-foreground">
LedgerOne is built around US accounting workflows, audit readiness, and Aarthalabs is built around US accounting workflows, audit readiness, and
tax reporting cycles. tax reporting cycles.
</p> </p>
</div> </div>
@ -167,7 +167,7 @@ export default function AboutPage() {
</div> </div>
<h2 className="text-3xl font-bold text-foreground">A ledger that holds the full story.</h2> <h2 className="text-3xl font-bold text-foreground">A ledger that holds the full story.</h2>
<p className="text-muted-foreground text-lg"> <p className="text-muted-foreground text-lg">
Traditional tools collapse data into summaries. LedgerOne keeps each raw Traditional tools collapse data into summaries. Aarthalabs keeps each raw
entry intact and layers in decisions, reviews, and approvals. entry intact and layers in decisions, reviews, and approvals.
</p> </p>
</div> </div>

View File

@ -493,7 +493,7 @@ export default function ConnectPage() {
<div className="glass-panel mt-6 p-6 rounded-2xl shadow-sm"> <div className="glass-panel mt-6 p-6 rounded-2xl shadow-sm">
<h2 className="text-lg font-bold text-foreground">Google Sheets ownership</h2> <h2 className="text-lg font-bold text-foreground">Google Sheets ownership</h2>
<p className="mt-2 text-sm text-muted-foreground"> <p className="mt-2 text-sm text-muted-foreground">
Keep a user-owned Google Sheets mirror synced from LedgerOne transaction changes. Keep a user-owned Google Sheets mirror synced from Aarthalabs transaction changes.
</p> </p>
<div className="mt-4 rounded-xl border border-border bg-secondary/30 px-4 py-3 text-sm"> <div className="mt-4 rounded-xl border border-border bg-secondary/30 px-4 py-3 text-sm">
<p className="font-semibold text-foreground"> <p className="font-semibold text-foreground">

View File

@ -145,7 +145,7 @@ export default function BillsPage() {
amount: Number(bill.amount), amount: Number(bill.amount),
scheduledFor: new Date().toISOString(), scheduledFor: new Date().toISOString(),
method: "ach", method: "ach",
memo: `LedgerOne payment for ${bill.name}`, memo: `Aarthalabs payment for ${bill.name}`,
}), }),
}); });
if (res.error) { if (res.error) {

View File

@ -42,7 +42,7 @@ export default function BlogPage() {
{ {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "WebPage", "@type": "WebPage",
name: "LedgerOne Blog", name: "Aarthalabs Blog",
description: "Insights on financial control, audit readiness, and ledger automation.", description: "Insights on financial control, audit readiness, and ledger automation.",
url: `${siteInfo.url}/blog` url: `${siteInfo.url}/blog`
}, },

View File

@ -15,7 +15,7 @@ const inputClass =
export const metadata = { export const metadata = {
title: "Book a Demo", title: "Book a Demo",
description: description:
"Book a LedgerOne demo to see audit-ready ledgering and transparent rules in action.", "Book a Aarthalabs demo to see audit-ready ledgering and transparent rules in action.",
keywords: siteInfo.keywords keywords: siteInfo.keywords
}; };
@ -24,9 +24,9 @@ export default function BookDemoPage() {
{ {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "WebPage", "@type": "WebPage",
name: "Book a LedgerOne Demo", name: "Book a Aarthalabs Demo",
description: description:
"Book a LedgerOne demo to see audit-ready ledgering and transparent rules in action.", "Book a Aarthalabs demo to see audit-ready ledgering and transparent rules in action.",
url: `${siteInfo.url}/book-demo` url: `${siteInfo.url}/book-demo`
}, },
{ {
@ -52,7 +52,7 @@ export default function BookDemoPage() {
Book a demo Book a demo
</div> </div>
<h1 className="text-4xl font-bold tracking-tight text-foreground sm:text-5xl leading-tight"> <h1 className="text-4xl font-bold tracking-tight text-foreground sm:text-5xl leading-tight">
Schedule time with the LedgerOne team. Schedule time with the Aarthalabs team.
</h1> </h1>
<p className="text-lg text-muted-foreground"> <p className="text-lg text-muted-foreground">
We will walk you through account connections, rule automation, and We will walk you through account connections, rule automation, and

View File

@ -6,8 +6,8 @@ import { PageSchema } from "../../../components/page-schema";
import { siteInfo } from "../../../data/site"; import { siteInfo } from "../../../data/site";
export const metadata = { export const metadata = {
title: "LedgerOne vs Copilot", title: "Aarthalabs vs Copilot",
description: "Compare LedgerOne's cross-platform business solution with Copilot's personal finance app.", description: "Compare Aarthalabs's cross-platform business solution with Copilot's personal finance app.",
keywords: siteInfo.keywords keywords: siteInfo.keywords
}; };
@ -16,8 +16,8 @@ export default function CompareCopilotPage() {
{ {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "WebPage", "@type": "WebPage",
name: "LedgerOne vs Copilot", name: "Aarthalabs vs Copilot",
description: "Comparison of LedgerOne and Copilot.", description: "Comparison of Aarthalabs and Copilot.",
url: `${siteInfo.url}/compare/vs-copilot` url: `${siteInfo.url}/compare/vs-copilot`
} }
]; ];
@ -36,14 +36,14 @@ export default function CompareCopilotPage() {
Financial control for everyone. Financial control for everyone.
</h1> </h1>
<p className="text-lg text-muted-foreground"> <p className="text-lg text-muted-foreground">
Copilot is great for iPhone users. LedgerOne is for serious business owners who need access everywhere, on any device. Copilot is great for iPhone users. Aarthalabs is for serious business owners who need access everywhere, on any device.
</p> </p>
</div> </div>
<div className="glass-panel rounded-3xl overflow-hidden shadow-sm border border-border"> <div className="glass-panel rounded-3xl overflow-hidden shadow-sm border border-border">
<div className="grid grid-cols-3 bg-secondary/30 border-b border-border p-6 text-sm font-bold text-muted-foreground uppercase tracking-wider"> <div className="grid grid-cols-3 bg-secondary/30 border-b border-border p-6 text-sm font-bold text-muted-foreground uppercase tracking-wider">
<div className="col-span-1">Feature</div> <div className="col-span-1">Feature</div>
<div className="col-span-1 text-center text-foreground">LedgerOne</div> <div className="col-span-1 text-center text-foreground">Aarthalabs</div>
<div className="col-span-1 text-center">Copilot</div> <div className="col-span-1 text-center">Copilot</div>
</div> </div>

View File

@ -6,9 +6,9 @@ import { PageSchema } from "../../../components/page-schema";
import { siteInfo } from "../../../data/site"; import { siteInfo } from "../../../data/site";
export const metadata = { export const metadata = {
title: "LedgerOne vs Monarch Money", title: "Aarthalabs vs Monarch Money",
description: description:
"Compare LedgerOne's export-first ledger workflow with Monarch Money's household finance platform.", "Compare Aarthalabs's export-first ledger workflow with Monarch Money's household finance platform.",
keywords: siteInfo.keywords keywords: siteInfo.keywords
}; };
@ -17,8 +17,8 @@ export default function CompareMonarchPage() {
{ {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "WebPage", "@type": "WebPage",
name: "LedgerOne vs Monarch Money", name: "Aarthalabs vs Monarch Money",
description: "Comparison of LedgerOne and Monarch Money.", description: "Comparison of Aarthalabs and Monarch Money.",
url: `${siteInfo.url}/compare/vs-monarch` url: `${siteInfo.url}/compare/vs-monarch`
} }
]; ];
@ -46,14 +46,14 @@ export default function CompareMonarchPage() {
Built for ledger control, not just household tracking. Built for ledger control, not just household tracking.
</h1> </h1>
<p className="text-lg text-muted-foreground"> <p className="text-lg text-muted-foreground">
Monarch Money is built around household financial visibility. LedgerOne is built for users who need structured transactions, export control, rules, audit trails, and tax-ready handoff. Monarch Money is built around household financial visibility. Aarthalabs is built for users who need structured transactions, export control, rules, audit trails, and tax-ready handoff.
</p> </p>
</div> </div>
<div className="glass-panel rounded-3xl overflow-hidden shadow-sm border border-border"> <div className="glass-panel rounded-3xl overflow-hidden shadow-sm border border-border">
<div className="grid grid-cols-3 bg-secondary/30 border-b border-border p-6 text-sm font-bold text-muted-foreground uppercase tracking-wider"> <div className="grid grid-cols-3 bg-secondary/30 border-b border-border p-6 text-sm font-bold text-muted-foreground uppercase tracking-wider">
<div className="col-span-1">Feature</div> <div className="col-span-1">Feature</div>
<div className="col-span-1 text-center text-foreground">LedgerOne</div> <div className="col-span-1 text-center text-foreground">Aarthalabs</div>
<div className="col-span-1 text-center">Monarch Money</div> <div className="col-span-1 text-center">Monarch Money</div>
</div> </div>

View File

@ -6,8 +6,8 @@ import { PageSchema } from "../../../components/page-schema";
import { siteInfo } from "../../../data/site"; import { siteInfo } from "../../../data/site";
export const metadata = { export const metadata = {
title: "LedgerOne vs Quicken", title: "Aarthalabs vs Quicken",
description: "Move from legacy desktop software to LedgerOne's modern, cloud-native financial platform.", description: "Move from legacy desktop software to Aarthalabs's modern, cloud-native financial platform.",
keywords: siteInfo.keywords keywords: siteInfo.keywords
}; };
@ -16,8 +16,8 @@ export default function CompareQuickenPage() {
{ {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "WebPage", "@type": "WebPage",
name: "LedgerOne vs Quicken", name: "Aarthalabs vs Quicken",
description: "Comparison of LedgerOne and Quicken.", description: "Comparison of Aarthalabs and Quicken.",
url: `${siteInfo.url}/compare/vs-quicken` url: `${siteInfo.url}/compare/vs-quicken`
} }
]; ];
@ -36,14 +36,14 @@ export default function CompareQuickenPage() {
The modern alternative to Quicken. The modern alternative to Quicken.
</h1> </h1>
<p className="text-lg text-muted-foreground"> <p className="text-lg text-muted-foreground">
Stop syncing desktop files. LedgerOne gives you the power of Quicken with the speed, security, and accessibility of the modern web. Stop syncing desktop files. Aarthalabs gives you the power of Quicken with the speed, security, and accessibility of the modern web.
</p> </p>
</div> </div>
<div className="glass-panel rounded-3xl overflow-hidden shadow-sm border border-border"> <div className="glass-panel rounded-3xl overflow-hidden shadow-sm border border-border">
<div className="grid grid-cols-3 bg-secondary/30 border-b border-border p-6 text-sm font-bold text-muted-foreground uppercase tracking-wider"> <div className="grid grid-cols-3 bg-secondary/30 border-b border-border p-6 text-sm font-bold text-muted-foreground uppercase tracking-wider">
<div className="col-span-1">Feature</div> <div className="col-span-1">Feature</div>
<div className="col-span-1 text-center text-foreground">LedgerOne</div> <div className="col-span-1 text-center text-foreground">Aarthalabs</div>
<div className="col-span-1 text-center">Quicken</div> <div className="col-span-1 text-center">Quicken</div>
</div> </div>

View File

@ -6,8 +6,8 @@ import { PageSchema } from "../../../components/page-schema";
import { siteInfo } from "../../../data/site"; import { siteInfo } from "../../../data/site";
export const metadata = { export const metadata = {
title: "LedgerOne vs Spreadsheets", title: "Aarthalabs vs Spreadsheets",
description: "See why modern businesses are switching from manual spreadsheets to LedgerOne's automated financial platform.", description: "See why modern businesses are switching from manual spreadsheets to Aarthalabs's automated financial platform.",
keywords: siteInfo.keywords keywords: siteInfo.keywords
}; };
@ -16,8 +16,8 @@ export default function CompareSpreadsheetsPage() {
{ {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "WebPage", "@type": "WebPage",
name: "LedgerOne vs Spreadsheets", name: "Aarthalabs vs Spreadsheets",
description: "Comparison of LedgerOne automated platform versus manual spreadsheets.", description: "Comparison of Aarthalabs automated platform versus manual spreadsheets.",
url: `${siteInfo.url}/compare/vs-spreadsheets` url: `${siteInfo.url}/compare/vs-spreadsheets`
} }
]; ];
@ -36,14 +36,14 @@ export default function CompareSpreadsheetsPage() {
Stop breaking your spreadsheets. Stop breaking your spreadsheets.
</h1> </h1>
<p className="text-lg text-muted-foreground"> <p className="text-lg text-muted-foreground">
Spreadsheets are great for scratchpads, but terrible for financial systems. See why LedgerOne is the upgrade your business needs. Spreadsheets are great for scratchpads, but terrible for financial systems. See why Aarthalabs is the upgrade your business needs.
</p> </p>
</div> </div>
<div className="glass-panel rounded-3xl overflow-hidden shadow-sm border border-border"> <div className="glass-panel rounded-3xl overflow-hidden shadow-sm border border-border">
<div className="grid grid-cols-3 bg-secondary/30 border-b border-border p-6 text-sm font-bold text-muted-foreground uppercase tracking-wider"> <div className="grid grid-cols-3 bg-secondary/30 border-b border-border p-6 text-sm font-bold text-muted-foreground uppercase tracking-wider">
<div className="col-span-1">Feature</div> <div className="col-span-1">Feature</div>
<div className="col-span-1 text-center text-foreground">LedgerOne</div> <div className="col-span-1 text-center text-foreground">Aarthalabs</div>
<div className="col-span-1 text-center">Spreadsheets</div> <div className="col-span-1 text-center">Spreadsheets</div>
</div> </div>

View File

@ -6,8 +6,8 @@ import { PageSchema } from "../../../components/page-schema";
import { siteInfo } from "../../../data/site"; import { siteInfo } from "../../../data/site";
export const metadata = { export const metadata = {
title: "LedgerOne vs YNAB", title: "Aarthalabs vs YNAB",
description: "Compare LedgerOne's audit-ready financial platform with YNAB's zero-based budgeting tool.", description: "Compare Aarthalabs's audit-ready financial platform with YNAB's zero-based budgeting tool.",
keywords: siteInfo.keywords keywords: siteInfo.keywords
}; };
@ -16,8 +16,8 @@ export default function CompareYnabPage() {
{ {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "WebPage", "@type": "WebPage",
name: "LedgerOne vs YNAB", name: "Aarthalabs vs YNAB",
description: "Comparison of LedgerOne and YNAB.", description: "Comparison of Aarthalabs and YNAB.",
url: `${siteInfo.url}/compare/vs-ynab` url: `${siteInfo.url}/compare/vs-ynab`
} }
]; ];
@ -36,14 +36,14 @@ export default function CompareYnabPage() {
Beyond Budgeting. Beyond Budgeting.
</h1> </h1>
<p className="text-lg text-muted-foreground"> <p className="text-lg text-muted-foreground">
YNAB is great for personal envelopes. LedgerOne is built for business growth, audit trails, and total financial control. YNAB is great for personal envelopes. Aarthalabs is built for business growth, audit trails, and total financial control.
</p> </p>
</div> </div>
<div className="glass-panel rounded-3xl overflow-hidden shadow-sm border border-border"> <div className="glass-panel rounded-3xl overflow-hidden shadow-sm border border-border">
<div className="grid grid-cols-3 bg-secondary/30 border-b border-border p-6 text-sm font-bold text-muted-foreground uppercase tracking-wider"> <div className="grid grid-cols-3 bg-secondary/30 border-b border-border p-6 text-sm font-bold text-muted-foreground uppercase tracking-wider">
<div className="col-span-1">Feature</div> <div className="col-span-1">Feature</div>
<div className="col-span-1 text-center text-foreground">LedgerOne</div> <div className="col-span-1 text-center text-foreground">Aarthalabs</div>
<div className="col-span-1 text-center">YNAB</div> <div className="col-span-1 text-center">YNAB</div>
</div> </div>

View File

@ -9,7 +9,7 @@ import { siteInfo } from "../../data/site";
export const metadata = { export const metadata = {
title: "Contact Us", title: "Contact Us",
description: "Get in touch with the LedgerOne team for support, sales, or partnerships.", description: "Get in touch with the Aarthalabs team for support, sales, or partnerships.",
keywords: siteInfo.keywords keywords: siteInfo.keywords
}; };
@ -18,8 +18,8 @@ export default function ContactPage() {
{ {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "WebPage", "@type": "WebPage",
name: "Contact LedgerOne", name: "Contact Aarthalabs",
description: "Get in touch with the LedgerOne team for support, sales, or partnerships.", description: "Get in touch with the Aarthalabs team for support, sales, or partnerships.",
url: `${siteInfo.url}/contact` url: `${siteInfo.url}/contact`
}, },
{ {
@ -116,7 +116,7 @@ export default function ContactPage() {
<svg className="h-5 w-5 text-primary" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <svg className="h-5 w-5 text-primary" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" /> <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" />
</svg> </svg>
support@ledgerone.com support@aarthalabs.com
</p> </p>
<p className="flex items-center gap-3"> <p className="flex items-center gap-3">
<svg className="h-5 w-5 text-primary" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <svg className="h-5 w-5 text-primary" fill="none" viewBox="0 0 24 24" stroke="currentColor">

View File

@ -56,7 +56,7 @@ export default function DemoPage() {
<div className="mx-auto max-w-6xl px-6 lg:px-8 space-y-8"> <div className="mx-auto max-w-6xl px-6 lg:px-8 space-y-8">
<header className="space-y-3"> <header className="space-y-3">
<p className="text-xs font-semibold tracking-[0.25em] text-emerald-400 uppercase"> <p className="text-xs font-semibold tracking-[0.25em] text-emerald-400 uppercase">
Demo · LedgerOne Demo · Aarthalabs
</p> </p>
<h1 className="text-3xl sm:text-4xl font-semibold tracking-tight text-slate-50"> <h1 className="text-3xl sm:text-4xl font-semibold tracking-tight text-slate-50">
AI-powered cash control dashboard AI-powered cash control dashboard
@ -246,7 +246,7 @@ export default function DemoPage() {
AI AI
</div> </div>
<div className="text-xs text-slate-300"> <div className="text-xs text-slate-300">
<p className="font-medium">LedgerOne Copilot</p> <p className="font-medium">Aarthalabs Copilot</p>
<p className="text-[11px] text-slate-500">Monitors cash flow in real-time</p> <p className="text-[11px] text-slate-500">Monitors cash flow in real-time</p>
</div> </div>
</div> </div>

View File

@ -19,10 +19,10 @@ type KeyListResponse = { keys: ApiKey[] };
type CreatedKey = ApiKey & { key: string }; type CreatedKey = ApiKey & { key: string };
const apiExample = `curl -H "Authorization: Bearer l1_your_api_key" \\ const apiExample = `curl -H "Authorization: Bearer l1_your_api_key" \\
"https://api.ledgerone.app/api/public/v1/transactions?limit=25"`; "https://api.aarthalabs.com/api/public/v1/transactions?limit=25"`;
const sdkExample = `async function ledgerOne(path, apiKey) { const sdkExample = `async function ledgerOne(path, apiKey) {
const res = await fetch(\`https://api.ledgerone.app/api/public/v1\${path}\`, { const res = await fetch(\`https://api.aarthalabs.com/api/public/v1\${path}\`, {
headers: { Authorization: \`Bearer \${apiKey}\` }, headers: { Authorization: \`Bearer \${apiKey}\` },
}); });
if (!res.ok) throw new Error(await res.text()); if (!res.ok) throw new Error(await res.text());

View File

@ -1,14 +1,14 @@
export default function Head() { export default function Head() {
return ( return (
<> <>
<title>Exports | LedgerOne</title> <title>Exports | Aarthalabs</title>
<meta <meta
name="description" name="description"
content="Generate audit-ready exports with raw and derived ledger data." content="Generate audit-ready exports with raw and derived ledger data."
/> />
<meta <meta
name="keywords" name="keywords"
content="ledgerone exports, csv export, audit-ready export" content="aarthalabs exports, csv export, audit-ready export"
/> />
</> </>
); );

View File

@ -7,7 +7,7 @@ import { siteInfo } from "../../data/site";
export const metadata = { export const metadata = {
title: "FAQ", title: "FAQ",
description: "Common questions about LedgerOne pricing, accounts, and security.", description: "Common questions about Aarthalabs pricing, accounts, and security.",
keywords: siteInfo.keywords keywords: siteInfo.keywords
}; };
@ -16,8 +16,8 @@ export default function FaqPage() {
{ {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "WebPage", "@type": "WebPage",
name: "LedgerOne FAQ", name: "Aarthalabs FAQ",
description: "Common questions about LedgerOne pricing, accounts, and security.", description: "Common questions about Aarthalabs pricing, accounts, and security.",
url: `${siteInfo.url}/faq` url: `${siteInfo.url}/faq`
}, },
{ {
@ -46,7 +46,7 @@ export default function FaqPage() {
Common questions, clear answers. Common questions, clear answers.
</h1> </h1>
<p className="mt-4 text-lg text-muted-foreground"> <p className="mt-4 text-lg text-muted-foreground">
Find pricing, account, export, and security answers for LedgerOne. Find pricing, account, export, and security answers for Aarthalabs.
</p> </p>
</div> </div>

View File

@ -7,7 +7,7 @@ import { PageSchema } from "../../../components/page-schema";
import { siteInfo } from "../../../data/site"; import { siteInfo } from "../../../data/site";
export const metadata = { export const metadata = {
title: "Cash Flow Management - LedgerOne", title: "Cash Flow Management - Aarthalabs",
description: "Visualize your income and expenses in real-time. Forecast future cash flow and make smarter business decisions.", description: "Visualize your income and expenses in real-time. Forecast future cash flow and make smarter business decisions.",
keywords: siteInfo.keywords keywords: siteInfo.keywords
}; };
@ -39,7 +39,7 @@ export default function CashFlowPage() {
<span className="heading-hero-accent">money is going.</span> <span className="heading-hero-accent">money is going.</span>
</h1> </h1>
<p className="text-lg text-muted-foreground mb-8"> <p className="text-lg text-muted-foreground mb-8">
Stop guessing. LedgerOne gives you a crystal-clear view of your income versus expenses across all your accounts. Spot trends, identify leaks, and plan for the future. Stop guessing. Aarthalabs gives you a crystal-clear view of your income versus expenses across all your accounts. Spot trends, identify leaks, and plan for the future.
</p> </p>
<ul className="space-y-4 mb-10"> <ul className="space-y-4 mb-10">
{[ {[

View File

@ -7,7 +7,7 @@ import { PageSchema } from "../../../components/page-schema";
import { siteInfo } from "../../../data/site"; import { siteInfo } from "../../../data/site";
export const metadata = { export const metadata = {
title: "Custom Reporting - LedgerOne", title: "Custom Reporting - Aarthalabs",
description: "Build custom financial reports and export audit-ready data for your accountant.", description: "Build custom financial reports and export audit-ready data for your accountant.",
keywords: siteInfo.keywords keywords: siteInfo.keywords
}; };
@ -51,7 +51,7 @@ export default function ReportsPage() {
<span className="heading-hero-accent">accountant smile.</span> <span className="heading-hero-accent">accountant smile.</span>
</h1> </h1>
<p className="text-lg text-muted-foreground mb-8"> <p className="text-lg text-muted-foreground mb-8">
Don't scramble at tax time. LedgerOne keeps your data organized and audit-ready year-round. Build custom reports and export them in seconds. Don't scramble at tax time. Aarthalabs keeps your data organized and audit-ready year-round. Build custom reports and export them in seconds.
</p> </p>
<ul className="space-y-4 mb-10"> <ul className="space-y-4 mb-10">
{[ {[

View File

@ -53,7 +53,7 @@ export default function ForgotPasswordPage() {
className="h-12 w-12 rounded-full flex items-center justify-center text-white font-bold text-xl shadow-[0_12px_30px_var(--gradient-glow)]" className="h-12 w-12 rounded-full flex items-center justify-center text-white font-bold text-xl shadow-[0_12px_30px_var(--gradient-glow)]"
style={{ background: "linear-gradient(to right, var(--gradient-start), var(--gradient-mid), var(--gradient-end))" }} style={{ background: "linear-gradient(to right, var(--gradient-start), var(--gradient-mid), var(--gradient-end))" }}
> >
L1 A
</div> </div>
</div> </div>
<h2 className="mt-6 text-center text-3xl font-bold tracking-tight text-foreground"> <h2 className="mt-6 text-center text-3xl font-bold tracking-tight text-foreground">

View File

@ -9,8 +9,8 @@ const space = Space_Grotesk({ subsets: ["latin"], variable: "--font-space" });
export const metadata: Metadata = { export const metadata: Metadata = {
title: { title: {
default: "LedgerOne", default: "Aarthalabs",
template: "%s | LedgerOne" template: "%s | Aarthalabs"
}, },
description: siteInfo.description, description: siteInfo.description,
keywords: siteInfo.keywords keywords: siteInfo.keywords

View File

@ -1,14 +1,14 @@
export default function Head() { export default function Head() {
return ( return (
<> <>
<title>Login | LedgerOne</title> <title>Login | Aarthalabs</title>
<meta <meta
name="description" name="description"
content="Sign in to LedgerOne to access your audit-ready ledger and exports." content="Sign in to Aarthalabs to access your audit-ready ledger and exports."
/> />
<meta <meta
name="keywords" name="keywords"
content="ledgerone login, audit-ready ledger, finance dashboard, transaction ledger" content="aarthalabs login, audit-ready ledger, finance dashboard, transaction ledger"
/> />
</> </>
); );

View File

@ -220,8 +220,8 @@ export default function LoginPage() {
{ {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "WebPage", "@type": "WebPage",
name: "LedgerOne Login", name: "Aarthalabs Login",
description: "Sign in to LedgerOne to access your audit-ready ledger.", description: "Sign in to Aarthalabs to access your audit-ready ledger.",
url: `${siteInfo.url}/login`, url: `${siteInfo.url}/login`,
}, },
{ {
@ -246,7 +246,7 @@ export default function LoginPage() {
className="h-12 w-12 rounded-full flex items-center justify-center text-white font-bold text-xl shadow-[0_12px_30px_var(--gradient-glow)]" className="h-12 w-12 rounded-full flex items-center justify-center text-white font-bold text-xl shadow-[0_12px_30px_var(--gradient-glow)]"
style={{ background: "linear-gradient(to right, var(--gradient-start), var(--gradient-mid), var(--gradient-end))" }} style={{ background: "linear-gradient(to right, var(--gradient-start), var(--gradient-mid), var(--gradient-end))" }}
> >
L1 A
</div> </div>
</div> </div>
<h2 className="mt-6 text-center text-3xl font-bold tracking-tight text-foreground"> <h2 className="mt-6 text-center text-3xl font-bold tracking-tight text-foreground">

View File

@ -152,7 +152,7 @@ export default function NotificationsPage() {
<div className="grid gap-4 lg:grid-cols-3"> <div className="grid gap-4 lg:grid-cols-3">
<section className="rounded-xl border border-border bg-secondary/10 p-6"> <section className="rounded-xl border border-border bg-secondary/10 p-6">
<p className="text-sm font-bold text-foreground">SMTP Email</p> <p className="text-sm font-bold text-foreground">SMTP Email</p>
<p className="mt-1 text-xs text-muted-foreground">Send important LedgerOne alerts through the configured SMTP transport.</p> <p className="mt-1 text-xs text-muted-foreground">Send important Aarthalabs alerts through the configured SMTP transport.</p>
<label className="mt-4 flex items-center gap-2 text-sm text-foreground"> <label className="mt-4 flex items-center gap-2 text-sm text-foreground">
<input <input
type="checkbox" type="checkbox"

View File

@ -9,7 +9,7 @@ import { LandingFuture } from "../components/landing-future";
import { LandingCta } from "../components/landing-cta"; import { LandingCta } from "../components/landing-cta";
export const metadata = { export const metadata = {
title: "LedgerOne - The Financial Control Platform for Modern Business", title: "Aarthalabs - The Financial Control Platform for Modern Business",
description: "Connect all your accounts, automate your bookkeeping, and get audit-ready financials in real-time.", description: "Connect all your accounts, automate your bookkeeping, and get audit-ready financials in real-time.",
keywords: siteInfo.keywords keywords: siteInfo.keywords
}; };
@ -19,7 +19,7 @@ export default function LandingPage() {
{ {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "WebSite", "@type": "WebSite",
name: "LedgerOne", name: "Aarthalabs",
url: siteInfo.url, url: siteInfo.url,
potentialAction: { potentialAction: {
"@type": "SearchAction", "@type": "SearchAction",
@ -30,12 +30,12 @@ export default function LandingPage() {
{ {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "Organization", "@type": "Organization",
name: "LedgerOne", name: "Aarthalabs",
url: siteInfo.url, url: siteInfo.url,
logo: `${siteInfo.url}/logo.png`, logo: `${siteInfo.url}/logo.png`,
sameAs: [ sameAs: [
"https://twitter.com/ledgerone", "https://twitter.com/aarthalabs",
"https://linkedin.com/company/ledgerone" "https://linkedin.com/company/aarthalabs"
] ]
} }
]; ];

View File

@ -13,7 +13,7 @@ import { PricingAction } from "./pricing-actions";
export const metadata = { export const metadata = {
title: "Pricing", title: "Pricing",
description: description:
"LedgerOne pricing: Free includes two accounts, Pro includes ten accounts, and Elite includes unlimited accounts.", "Aarthalabs pricing: Free includes two accounts, Pro includes ten accounts, and Elite includes unlimited accounts.",
keywords: siteInfo.keywords keywords: siteInfo.keywords
}; };
@ -79,9 +79,9 @@ export default function PricingPage() {
{ {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "WebPage", "@type": "WebPage",
name: "LedgerOne Pricing", name: "Aarthalabs Pricing",
description: description:
"LedgerOne pricing: Free includes two accounts, Pro includes ten accounts, and Elite includes unlimited accounts.", "Aarthalabs pricing: Free includes two accounts, Pro includes ten accounts, and Elite includes unlimited accounts.",
url: `${siteInfo.url}/pricing` url: `${siteInfo.url}/pricing`
}, },
{ {

View File

@ -7,7 +7,7 @@ import { siteInfo } from "../../data/site";
export const metadata = { export const metadata = {
title: "Privacy Policy", title: "Privacy Policy",
description: "How LedgerOne collects, uses, and protects your data.", description: "How Aarthalabs collects, uses, and protects your data.",
keywords: siteInfo.keywords keywords: siteInfo.keywords
}; };
@ -26,7 +26,7 @@ export default function PrivacyPage() {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "WebPage", "@type": "WebPage",
name: "Privacy Policy", name: "Privacy Policy",
description: "How LedgerOne collects, uses, and protects your data.", description: "How Aarthalabs collects, uses, and protects your data.",
url: `${siteInfo.url}/privacy-policy` url: `${siteInfo.url}/privacy-policy`
} }
]; ];
@ -104,8 +104,8 @@ export default function PrivacyPage() {
<h2 className="text-foreground font-bold text-xl mb-3">6. Contact Us</h2> <h2 className="text-foreground font-bold text-xl mb-3">6. Contact Us</h2>
<p> <p>
If you have any questions about this Privacy Policy, please contact us at{" "} If you have any questions about this Privacy Policy, please contact us at{" "}
<a href="mailto:privacy@ledgerone.com" className="text-primary hover:underline font-medium"> <a href="mailto:privacy@aarthalabs.com" className="text-primary hover:underline font-medium">
privacy@ledgerone.com privacy@aarthalabs.com
</a>{" "} </a>{" "}
or visit our{" "} or visit our{" "}
<Link href="/contact" className="text-primary hover:underline font-medium"> <Link href="/contact" className="text-primary hover:underline font-medium">

View File

@ -1,14 +1,14 @@
export default function Head() { export default function Head() {
return ( return (
<> <>
<title>Profile | LedgerOne</title> <title>Profile | Aarthalabs</title>
<meta <meta
name="description" name="description"
content="Complete your LedgerOne profile after signing in." content="Complete your Aarthalabs profile after signing in."
/> />
<meta <meta
name="keywords" name="keywords"
content="ledgerone profile, finance workspace, audit-ready ledger setup" content="aarthalabs profile, finance workspace, audit-ready ledger setup"
/> />
</> </>
); );

View File

@ -69,7 +69,7 @@ export default function ProfilePage() {
return ( return (
<AppShell title="Profile" subtitle="Keep your ledger profile current for exports."> <AppShell title="Profile" subtitle="Keep your ledger profile current for exports.">
<div className="app-card p-10"> <div className="app-card p-10">
<p className="text-xs uppercase tracking-[0.3em] text-muted">LedgerOne</p> <p className="text-xs uppercase tracking-[0.3em] text-muted">Aarthalabs</p>
<h2 className="mt-4 text-2xl font-semibold">Complete your profile</h2> <h2 className="mt-4 text-2xl font-semibold">Complete your profile</h2>
<p className="mt-2 text-sm text-muted"> <p className="mt-2 text-sm text-muted">
Add the details we need to personalize your ledger workspace. Add the details we need to personalize your ledger workspace.

View File

@ -1,14 +1,14 @@
export default function Head() { export default function Head() {
return ( return (
<> <>
<title>Create Account | LedgerOne</title> <title>Create Account | Aarthalabs</title>
<meta <meta
name="description" name="description"
content="Create a LedgerOne account and start with two free connected accounts." content="Create a Aarthalabs account and start with two free connected accounts."
/> />
<meta <meta
name="keywords" name="keywords"
content="ledgerone signup, create account, finance ledger, audit-ready ledger" content="aarthalabs signup, create account, finance ledger, audit-ready ledger"
/> />
</> </>
); );

View File

@ -47,8 +47,8 @@ export default function RegisterPage() {
{ {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "WebPage", "@type": "WebPage",
name: "LedgerOne Create Account", name: "Aarthalabs Create Account",
description: "Create a LedgerOne account and start with two free accounts.", description: "Create a Aarthalabs account and start with two free accounts.",
url: `${siteInfo.url}/register`, url: `${siteInfo.url}/register`,
}, },
{ {
@ -127,7 +127,7 @@ export default function RegisterPage() {
className="w-full max-w-md mx-auto text-center" className="w-full max-w-md mx-auto text-center"
> >
<h1 className="text-2xl font-bold tracking-tight text-foreground sm:text-3xl"> <h1 className="text-2xl font-bold tracking-tight text-foreground sm:text-3xl">
Create your LedgerOne account Create your Aarthalabs account
</h1> </h1>
<p className="mt-2 text-muted-foreground"> <p className="mt-2 text-muted-foreground">
Get AI-powered financial clarity in minutes. Get AI-powered financial clarity in minutes.

View File

@ -122,7 +122,7 @@ export default function ResetPasswordPage() {
className="h-12 w-12 rounded-full flex items-center justify-center text-white font-bold text-xl shadow-[0_12px_30px_var(--gradient-glow)]" className="h-12 w-12 rounded-full flex items-center justify-center text-white font-bold text-xl shadow-[0_12px_30px_var(--gradient-glow)]"
style={{ background: "linear-gradient(to right, var(--gradient-start), var(--gradient-mid), var(--gradient-end))" }} style={{ background: "linear-gradient(to right, var(--gradient-start), var(--gradient-mid), var(--gradient-end))" }}
> >
L1 A
</div> </div>
</div> </div>
<h2 className="mt-6 text-center text-3xl font-bold tracking-tight text-foreground"> <h2 className="mt-6 text-center text-3xl font-bold tracking-tight text-foreground">

View File

@ -1,14 +1,14 @@
export default function Head() { export default function Head() {
return ( return (
<> <>
<title>Rules Engine | LedgerOne</title> <title>Rules Engine | Aarthalabs</title>
<meta <meta
name="description" name="description"
content="Manage transparent automation rules and audit-ready workflows in LedgerOne." content="Manage transparent automation rules and audit-ready workflows in Aarthalabs."
/> />
<meta <meta
name="keywords" name="keywords"
content="ledgerone rules, automation rules, audit-ready workflows" content="aarthalabs rules, automation rules, audit-ready workflows"
/> />
</> </>
); );

View File

@ -119,7 +119,7 @@ export default function ProfilePage() {
const url = URL.createObjectURL(blob); const url = URL.createObjectURL(blob);
const anchor = document.createElement("a"); const anchor = document.createElement("a");
anchor.href = url; anchor.href = url;
anchor.download = `ledgerone-personal-data-${new Date().toISOString().slice(0, 10)}.json`; anchor.download = `aarthalabs-personal-data-${new Date().toISOString().slice(0, 10)}.json`;
document.body.appendChild(anchor); document.body.appendChild(anchor);
anchor.click(); anchor.click();
anchor.remove(); anchor.remove();
@ -128,7 +128,7 @@ export default function ProfilePage() {
}; };
const deleteAccount = async () => { const deleteAccount = async () => {
const confirmed = window.confirm("Delete this LedgerOne account and associated personal data? This cannot be undone."); const confirmed = window.confirm("Delete this Aarthalabs account and associated personal data? This cannot be undone.");
if (!confirmed) return; if (!confirmed) return;
setPrivacyStatus("Deleting account..."); setPrivacyStatus("Deleting account...");
setPrivacyError(false); setPrivacyError(false);

View File

@ -1,14 +1,14 @@
export default function Head() { export default function Head() {
return ( return (
<> <>
<title>Tax Workspace | LedgerOne</title> <title>Tax Workspace | Aarthalabs</title>
<meta <meta
name="description" name="description"
content="Prepare tax returns and export audit-ready tax packages in LedgerOne." content="Prepare tax returns and export audit-ready tax packages in Aarthalabs."
/> />
<meta <meta
name="keywords" name="keywords"
content="ledgerone tax, tax export, audit-ready tax package" content="aarthalabs tax, tax export, audit-ready tax package"
/> />
</> </>
); );

View File

@ -7,7 +7,7 @@ import { siteInfo } from "../../data/site";
export const metadata = { export const metadata = {
title: "Terms of Service", title: "Terms of Service",
description: "Terms and conditions for using LedgerOne.", description: "Terms and conditions for using Aarthalabs.",
keywords: siteInfo.keywords keywords: siteInfo.keywords
}; };
@ -26,7 +26,7 @@ export default function TermsPage() {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "WebPage", "@type": "WebPage",
name: "Terms of Service", name: "Terms of Service",
description: "Terms and conditions for using LedgerOne.", description: "Terms and conditions for using Aarthalabs.",
url: `${siteInfo.url}/terms` url: `${siteInfo.url}/terms`
} }
]; ];
@ -65,21 +65,21 @@ export default function TermsPage() {
<section id="acceptance"> <section id="acceptance">
<h2 className="text-foreground font-bold text-xl mb-3">1. Acceptance of Terms</h2> <h2 className="text-foreground font-bold text-xl mb-3">1. Acceptance of Terms</h2>
<p> <p>
By accessing and using LedgerOne, you accept and agree to be bound by the terms and provisions of this agreement. By accessing and using Aarthalabs, you accept and agree to be bound by the terms and provisions of this agreement.
</p> </p>
</section> </section>
<section id="service"> <section id="service">
<h2 className="text-foreground font-bold text-xl mb-3">2. Service Description</h2> <h2 className="text-foreground font-bold text-xl mb-3">2. Service Description</h2>
<p> <p>
LedgerOne provides financial data aggregation, ledger management, and reporting tools. We are not a bank or financial advisor. Aarthalabs provides financial data aggregation, ledger management, and reporting tools. We are not a bank or financial advisor.
</p> </p>
</section> </section>
<section id="accounts"> <section id="accounts">
<h2 className="text-foreground font-bold text-xl mb-3">3. User Accounts</h2> <h2 className="text-foreground font-bold text-xl mb-3">3. User Accounts</h2>
<p> <p>
You are responsible for maintaining the security of your account and password. LedgerOne cannot and will not be liable for any loss or damage from your failure to comply with this security obligation. You are responsible for maintaining the security of your account and password. Aarthalabs cannot and will not be liable for any loss or damage from your failure to comply with this security obligation.
</p> </p>
</section> </section>
@ -97,7 +97,7 @@ export default function TermsPage() {
<section id="governing"> <section id="governing">
<h2 className="text-foreground font-bold text-xl mb-3">5. Governing Law</h2> <h2 className="text-foreground font-bold text-xl mb-3">5. Governing Law</h2>
<p> <p>
These Terms shall be governed by and construed in accordance with the laws of the United States and Canada. LedgerOne Inc. and you irrevocably consent that the courts of the United States and Canada shall have exclusive jurisdiction to resolve any dispute which may arise in connection with these terms. These Terms shall be governed by and construed in accordance with the laws of the United States and Canada. Aarthalabs Inc. and you irrevocably consent that the courts of the United States and Canada shall have exclusive jurisdiction to resolve any dispute which may arise in connection with these terms.
</p> </p>
</section> </section>

View File

@ -1,14 +1,14 @@
export default function Head() { export default function Head() {
return ( return (
<> <>
<title>Transactions | LedgerOne</title> <title>Transactions | Aarthalabs</title>
<meta <meta
name="description" name="description"
content="Review raw transactions and layered categories in LedgerOne." content="Review raw transactions and layered categories in Aarthalabs."
/> />
<meta <meta
name="keywords" name="keywords"
content="ledgerone transactions, transaction ledger, audit-ready transactions" content="aarthalabs transactions, transaction ledger, audit-ready transactions"
/> />
</> </>
); );

View File

@ -462,10 +462,10 @@ export default function TransactionsPage() {
}); });
if (res.error) { setStatus(res.error.message ?? "Unable to save edits."); return; } if (res.error) { setStatus(res.error.message ?? "Unable to save edits."); return; }
setEditingRef(null); setEditingRef(null);
setStatus("Transaction updated.");
await load(); await load();
await loadSummary(); await loadSummary();
await loadInsights(); await loadInsights();
setStatus("Transaction updated.");
}; };
const inputCls = "mt-2 w-full rounded-md border border-border bg-background/50 px-3 py-2 text-sm text-foreground focus:border-primary focus:ring-primary focus:outline-none"; const inputCls = "mt-2 w-full rounded-md border border-border bg-background/50 px-3 py-2 text-sm text-foreground focus:border-primary focus:ring-primary focus:outline-none";

View File

@ -100,7 +100,7 @@ export default function VerifyEmailPage() {
className="h-12 w-12 rounded-full flex items-center justify-center text-white font-bold text-xl shadow-[0_12px_30px_var(--gradient-glow)]" className="h-12 w-12 rounded-full flex items-center justify-center text-white font-bold text-xl shadow-[0_12px_30px_var(--gradient-glow)]"
style={{ background: "linear-gradient(to right, var(--gradient-start), var(--gradient-mid), var(--gradient-end))" }} style={{ background: "linear-gradient(to right, var(--gradient-start), var(--gradient-mid), var(--gradient-end))" }}
> >
L1 A
</div> </div>
</div> </div>
<h2 className="mt-6 text-center text-3xl font-bold tracking-tight text-foreground"> <h2 className="mt-6 text-center text-3xl font-bold tracking-tight text-foreground">

View File

@ -123,9 +123,9 @@ export function AppShell({ title, subtitle, children }: AppShellProps) {
<div className="h-16 flex items-center px-6 border-b border-border"> <div className="h-16 flex items-center px-6 border-b border-border">
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<div className="h-6 w-6 rounded bg-primary flex items-center justify-center text-primary-foreground font-bold text-xs shadow-glow-teal"> <div className="h-6 w-6 rounded bg-primary flex items-center justify-center text-primary-foreground font-bold text-xs shadow-glow-teal">
L1 A
</div> </div>
<span className="font-semibold text-foreground tracking-tight">LedgerOne</span> <span className="font-semibold text-foreground tracking-tight">Aarthalabs</span>
</div> </div>
</div> </div>
@ -166,9 +166,9 @@ export function AppShell({ title, subtitle, children }: AppShellProps) {
<div className="h-16 flex items-center justify-between px-6 border-b border-border"> <div className="h-16 flex items-center justify-between px-6 border-b border-border">
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<div className="h-6 w-6 rounded bg-primary flex items-center justify-center text-primary-foreground font-bold text-xs shadow-glow-teal"> <div className="h-6 w-6 rounded bg-primary flex items-center justify-center text-primary-foreground font-bold text-xs shadow-glow-teal">
L1 A
</div> </div>
<span className="font-semibold text-foreground tracking-tight">LedgerOne</span> <span className="font-semibold text-foreground tracking-tight">Aarthalabs</span>
</div> </div>
<button onClick={() => setMobileOpen(false)} className="text-muted-foreground hover:text-foreground"> <button onClick={() => setMobileOpen(false)} className="text-muted-foreground hover:text-foreground">
<svg className="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <svg className="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor">

View File

@ -16,7 +16,7 @@ export function ContactSection() {
<p className="text-xs font-semibold uppercase tracking-[0.2em] text-muted-foreground">Contact us</p> <p className="text-xs font-semibold uppercase tracking-[0.2em] text-muted-foreground">Contact us</p>
<h2 className="mt-3 text-2xl font-semibold text-foreground">Let&apos;s talk about your ledger.</h2> <h2 className="mt-3 text-2xl font-semibold text-foreground">Let&apos;s talk about your ledger.</h2>
<p className="mt-2 text-sm text-muted-foreground"> <p className="mt-2 text-sm text-muted-foreground">
Tell us about your workflow and we will suggest the best LedgerOne setup. Tell us about your workflow and we will suggest the best Aarthalabs setup.
</p> </p>
<form className="mt-6 grid gap-4 md:grid-cols-2" onSubmit={onSubmit}> <form className="mt-6 grid gap-4 md:grid-cols-2" onSubmit={onSubmit}>
<div className="space-y-2"> <div className="space-y-2">

View File

@ -8,7 +8,7 @@ export function DemoCta() {
<div> <div>
<p className="text-xs font-semibold uppercase tracking-[0.2em] text-muted-foreground">Book a demo</p> <p className="text-xs font-semibold uppercase tracking-[0.2em] text-muted-foreground">Book a demo</p>
<h2 className="mt-3 text-2xl font-semibold text-foreground"> <h2 className="mt-3 text-2xl font-semibold text-foreground">
See LedgerOne in a live walkthrough. See Aarthalabs in a live walkthrough.
</h2> </h2>
<p className="mt-2 text-sm text-muted-foreground"> <p className="mt-2 text-sm text-muted-foreground">
Talk through your workflow and learn how to keep a complete audit trail. Talk through your workflow and learn how to keep a complete audit trail.

View File

@ -17,7 +17,7 @@ export function FaqSection({ title, subtitle, limit }: FaqSectionProps) {
</h2> </h2>
<p className="mt-2 text-sm text-muted-foreground"> <p className="mt-2 text-sm text-muted-foreground">
{subtitle ?? {subtitle ??
"Find pricing, account, export, and security answers for LedgerOne."} "Find pricing, account, export, and security answers for Aarthalabs."}
</p> </p>
<ol className="mt-6 space-y-5 text-sm text-muted-foreground"> <ol className="mt-6 space-y-5 text-sm text-muted-foreground">
{items.map((item, index) => ( {items.map((item, index) => (

View File

@ -29,7 +29,7 @@ export function LandingFeatures() {
Not Just Tracking. Thinking. Not Just Tracking. Thinking.
</h2> </h2>
<p className="mt-4 text-lg text-muted-foreground"> <p className="mt-4 text-lg text-muted-foreground">
LedgerOne turns your raw transaction firehose into AI-native contextwhat&apos;s Aarthalabs turns your raw transaction firehose into AI-native contextwhat&apos;s
happening, what&apos;s coming, and what you should do about it. happening, what&apos;s coming, and what you should do about it.
</p> </p>
</div> </div>

View File

@ -28,7 +28,7 @@ export function LandingFuture() {
See Your Financial Future See Your Financial Future
</h2> </h2>
<p className="text-base text-muted-foreground sm:text-lg"> <p className="text-base text-muted-foreground sm:text-lg">
LedgerOne maps every recurring bill, subscription, and paycheck onto a single, living Aarthalabs maps every recurring bill, subscription, and paycheck onto a single, living
timelineso you can see exactly when your balance bends. timelineso you can see exactly when your balance bends.
</p> </p>
</div> </div>

View File

@ -52,7 +52,7 @@ export function LandingHero() {
</h1> </h1>
<p className="body-lead"> <p className="body-lead">
AI-powered insights, forecasts, and real-time financial controlwithout spreadsheets. AI-powered insights, forecasts, and real-time financial controlwithout spreadsheets.
LedgerOne watches every account, predicts risk, and tells you what&apos;s safe to Aarthalabs watches every account, predicts risk, and tells you what&apos;s safe to
spend before you click &quot;checkout&quot;. spend before you click &quot;checkout&quot;.
</p> </p>
</motion.div> </motion.div>

View File

@ -12,10 +12,10 @@ export function Logo({ href = "/", className = "", showWordmark = true }: LogoPr
<> <>
<div className="flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-white shadow-[0_12px_30px_var(--gradient-glow)] transition-transform group-hover:scale-105" <div className="flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-white shadow-[0_12px_30px_var(--gradient-glow)] transition-transform group-hover:scale-105"
style={{ background: "linear-gradient(to right, var(--gradient-start), var(--gradient-mid), var(--gradient-end))" }}> style={{ background: "linear-gradient(to right, var(--gradient-start), var(--gradient-mid), var(--gradient-end))" }}>
<span className="font-bold text-sm">L1</span> <span className="font-bold text-sm">A</span>
</div> </div>
{showWordmark && ( {showWordmark && (
<span className="text-lg font-bold tracking-tight text-foreground">LedgerOne</span> <span className="text-lg font-bold tracking-tight text-foreground">Aarthalabs</span>
)} )}
</> </>
); );

View File

@ -31,7 +31,7 @@ export function SignupTestimonialPanel() {
))} ))}
</div> </div>
<blockquote className="text-foreground text-base leading-relaxed"> <blockquote className="text-foreground text-base leading-relaxed">
&ldquo;LedgerOne helped us understand cash flow before problems surfaced. The experience feels fast, clear, and built for modern finance teams.&rdquo; &ldquo;Aarthalabs helped us understand cash flow before problems surfaced. The experience feels fast, clear, and built for modern finance teams.&rdquo;
</blockquote> </blockquote>
<footer className="mt-4"> <footer className="mt-4">
<p className="text-sm font-semibold text-foreground">Sarah Chen</p> <p className="text-sm font-semibold text-foreground">Sarah Chen</p>
@ -50,7 +50,7 @@ export function SignupTestimonialPanel() {
{!imgError ? ( {!imgError ? (
<Image <Image
src="/images/dashboard-hero.png" src="/images/dashboard-hero.png"
alt="LedgerOne dashboard preview" alt="Aarthalabs dashboard preview"
fill fill
className="object-cover opacity-90" className="object-cover opacity-90"
sizes="(max-width: 768px) 100vw, 480px" sizes="(max-width: 768px) 100vw, 480px"
@ -76,7 +76,7 @@ export function SignupTestimonialPanel() {
</motion.div> </motion.div>
<p className="text-center text-xs text-muted-foreground"> <p className="text-center text-xs text-muted-foreground">
Join 50,000+ teams who trust LedgerOne for financial clarity. Join 50,000+ teams who trust Aarthalabs for financial clarity.
</p> </p>
</motion.div> </motion.div>
); );

View File

@ -60,7 +60,7 @@ export function SiteFooter() {
<div className="mt-8 pt-6 flex flex-col sm:flex-row items-center gap-4"> <div className="mt-8 pt-6 flex flex-col sm:flex-row items-center gap-4">
<p className="text-xs text-muted-foreground"> <p className="text-xs text-muted-foreground">
&copy; {new Date().getFullYear()} LedgerOne Inc. All rights reserved. &copy; {new Date().getFullYear()} Aarthalabs Inc. All rights reserved.
</p> </p>
</div> </div>
</div> </div>

View File

@ -20,10 +20,10 @@ export const blogPosts: BlogPost[] = [
"https://images.unsplash.com/photo-1551836022-4c4c79ecde51iq=80&w=1600&auto=format&fit=crop", "https://images.unsplash.com/photo-1551836022-4c4c79ecde51iq=80&w=1600&auto=format&fit=crop",
content: [ content: [
"Audit prep often starts too late. When teams wait until close to reconciliation, the trail of decisions is already fragmented across spreadsheets, emails, and ad hoc notes.", "Audit prep often starts too late. When teams wait until close to reconciliation, the trail of decisions is already fragmented across spreadsheets, emails, and ad hoc notes.",
"LedgerOne was designed to prevent that scramble. By preserving raw transactions and layering edits, every decision becomes a traceable record instead of a manual explanation.", "Aarthalabs was designed to prevent that scramble. By preserving raw transactions and layering edits, every decision becomes a traceable record instead of a manual explanation.",
"The result is a ledger that reads like a timeline. You can see what changed, who changed it, and why it changed, which makes audit requests far easier to satisfy.", "The result is a ledger that reads like a timeline. You can see what changed, who changed it, and why it changed, which makes audit requests far easier to satisfy.",
"An audit-ready workflow also helps internally. Finance, tax, and operations teams share the same record of truth instead of duplicating the work.", "An audit-ready workflow also helps internally. Finance, tax, and operations teams share the same record of truth instead of duplicating the work.",
"The most important shift is cultural: teams stop thinking in summaries and start thinking in evidence. That is exactly where LedgerOne thrives." "The most important shift is cultural: teams stop thinking in summaries and start thinking in evidence. That is exactly where Aarthalabs thrives."
] ]
}, },
{ {
@ -38,9 +38,9 @@ export const blogPosts: BlogPost[] = [
content: [ content: [
"Most teams start with two or three accounts. As the business grows, those connections multiply, and so do the inconsistencies.", "Most teams start with two or three accounts. As the business grows, those connections multiply, and so do the inconsistencies.",
"A connected account strategy keeps the growth sustainable. The first step is standardizing the way accounts are labeled, synced, and categorized.", "A connected account strategy keeps the growth sustainable. The first step is standardizing the way accounts are labeled, synced, and categorized.",
"LedgerOne gives teams a way to normalize incoming data without overwriting raw transactions. That means you can keep the original feed intact while building your internal logic on top.", "Aarthalabs gives teams a way to normalize incoming data without overwriting raw transactions. That means you can keep the original feed intact while building your internal logic on top.",
"When you are ready to scale beyond the first two accounts, the upgrade is simple and predictable. Pro covers ten active accounts, while Elite opens the door to unlimited reporting coverage across every source.", "When you are ready to scale beyond the first two accounts, the upgrade is simple and predictable. Pro covers ten active accounts, while Elite opens the door to unlimited reporting coverage across every source.",
"The teams that succeed with scale are the ones who document every rule, every decision, and every export. That is what LedgerOne is built to deliver." "The teams that succeed with scale are the ones who document every rule, every decision, and every export. That is what Aarthalabs is built to deliver."
] ]
}, },
{ {
@ -55,9 +55,9 @@ export const blogPosts: BlogPost[] = [
content: [ content: [
"Real-time dashboards are powerful, but they do not replace the need for a clean export. Finance teams still need shareable, auditable files.", "Real-time dashboards are powerful, but they do not replace the need for a clean export. Finance teams still need shareable, auditable files.",
"Exports are how teams communicate with auditors, external accountants, and internal stakeholders. The export is the handshake.", "Exports are how teams communicate with auditors, external accountants, and internal stakeholders. The export is the handshake.",
"LedgerOne keeps exports consistent by bundling raw and derived data together, so anyone reviewing the file can see exactly what changed and why.", "Aarthalabs keeps exports consistent by bundling raw and derived data together, so anyone reviewing the file can see exactly what changed and why.",
"That transparency speeds up reviews, reduces back-and-forth, and keeps teams aligned on the same set of numbers.", "That transparency speeds up reviews, reduces back-and-forth, and keeps teams aligned on the same set of numbers.",
"In a real-time world, exports remain the final proof point. LedgerOne makes sure they are trustworthy." "In a real-time world, exports remain the final proof point. Aarthalabs makes sure they are trustworthy."
] ]
} }
]; ];

View File

@ -1,16 +1,16 @@
export const defaultFaqs = [ export const defaultFaqs = [
{ {
question: "What is LedgerOnei", question: "What is Aarthalabsi",
answer: answer:
"LedgerOne is a financial control desk that keeps raw transactions immutable while you layer in categories, notes, and automation." "Aarthalabs is a financial control desk that keeps raw transactions immutable while you layer in categories, notes, and automation."
}, },
{ {
question: "Who is LedgerOne built fori", question: "Who is Aarthalabs built fori",
answer: answer:
"US finance, tax, and operations teams who need audit-ready exports and clear transaction history." "US finance, tax, and operations teams who need audit-ready exports and clear transaction history."
}, },
{ {
question: "How much does LedgerOne costi", question: "How much does Aarthalabs costi",
answer: answer:
"Free includes two connected accounts. Pro includes ten accounts and paid export access. Elite includes unlimited accounts." "Free includes two connected accounts. Pro includes ten accounts and paid export access. Elite includes unlimited accounts."
}, },
@ -27,7 +27,7 @@ export const defaultFaqs = [
{ {
question: "Do edits overwrite original transactionsi", question: "Do edits overwrite original transactionsi",
answer: answer:
"No. LedgerOne preserves the raw transaction and stores edits as layered decisions." "No. Aarthalabs preserves the raw transaction and stores edits as layered decisions."
}, },
{ {
question: "Can I export my data anytimei", question: "Can I export my data anytimei",
@ -35,7 +35,7 @@ export const defaultFaqs = [
"Yes. Pro and Elite users can export unlimited CSV, JSON, XLSX, and PDF files through secure download links." "Yes. Pro and Elite users can export unlimited CSV, JSON, XLSX, and PDF files through secure download links."
}, },
{ {
question: "Does LedgerOne support audit trailsi", question: "Does Aarthalabs support audit trailsi",
answer: answer:
"Every change, rule execution, and export is captured in the audit log." "Every change, rule execution, and export is captured in the audit log."
}, },
@ -57,7 +57,7 @@ export const defaultFaqs = [
{ {
question: "Can multiple teammates access the ledgeri", question: "Can multiple teammates access the ledgeri",
answer: answer:
"LedgerOne is built for collaboration across finance, tax, and operations." "Aarthalabs is built for collaboration across finance, tax, and operations."
}, },
{ {
question: "What happens if I canceli", question: "What happens if I canceli",
@ -67,7 +67,7 @@ export const defaultFaqs = [
{ {
question: "Do you support US tax workflowsi", question: "Do you support US tax workflowsi",
answer: answer:
"Yes. LedgerOne is designed to support US tax and accounting workflows." "Yes. Aarthalabs is designed to support US tax and accounting workflows."
}, },
{ {
question: "Can I import historical transactionsi", question: "Can I import historical transactionsi",
@ -90,7 +90,7 @@ export const defaultFaqs = [
"Yes. You can add categories, notes, and custom tags to every transaction." "Yes. You can add categories, notes, and custom tags to every transaction."
}, },
{ {
question: "Does LedgerOne integrate with accounting softwarei", question: "Does Aarthalabs integrate with accounting softwarei",
answer: answer:
"Exports are designed to plug into your accounting workflow. Integrations are planned." "Exports are designed to plug into your accounting workflow. Integrations are planned."
}, },

View File

@ -1,8 +1,8 @@
export const siteInfo = { export const siteInfo = {
name: "LedgerOne", name: "Aarthalabs",
url: "https://ledgerone.app", url: "https://aarthalabs.com",
description: description:
"LedgerOne builds audit-ready ledgers for US finance teams that need proof, not just dashboards.", "Aarthalabs builds audit-ready ledgers for US finance teams that need proof, not just dashboards.",
keywords: [ keywords: [
"ledger", "ledger",
"financial control", "financial control",

View File

@ -6,9 +6,9 @@ self.addEventListener("push", (event) => {
data = {}; data = {};
} }
const title = data.title || "LedgerOne"; const title = data.title || "Aarthalabs";
const options = { const options = {
body: data.body || "You have a new LedgerOne notification.", body: data.body || "You have a new Aarthalabs notification.",
icon: "/favicon.ico", icon: "/favicon.ico",
badge: "/favicon.ico", badge: "/favicon.ico",
data: { data: {

View File

@ -147,8 +147,8 @@ export default function LoginPage() {
{ {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "WebPage", "@type": "WebPage",
name: "LedgerOne Login", name: "Aarthalabs Login",
description: "Sign in to LedgerOne to access your audit-ready ledger.", description: "Sign in to Aarthalabs to access your audit-ready ledger.",
url: \`\${siteInfo.url}/login\`, url: \`\${siteInfo.url}/login\`,
}, },
{ {
@ -235,8 +235,8 @@ export default function RegisterPage() {
{ {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "WebPage", "@type": "WebPage",
name: "LedgerOne Create Account", name: "Aarthalabs Create Account",
description: "Create a LedgerOne account and start with two free accounts.", description: "Create a Aarthalabs account and start with two free accounts.",
url: \`\${siteInfo.url}/register\`, url: \`\${siteInfo.url}/register\`,
}, },
{ {

View File

@ -122,7 +122,7 @@ export function AppShell({ title, subtitle, children }: AppShellProps) {
<div className="h-6 w-6 rounded bg-primary flex items-center justify-center text-primary-foreground font-bold text-xs shadow-glow-teal"> <div className="h-6 w-6 rounded bg-primary flex items-center justify-center text-primary-foreground font-bold text-xs shadow-glow-teal">
L1 L1
</div> </div>
<span className="font-semibold text-foreground tracking-tight">LedgerOne</span> <span className="font-semibold text-foreground tracking-tight">Aarthalabs</span>
</div> </div>
</div> </div>
@ -165,7 +165,7 @@ export function AppShell({ title, subtitle, children }: AppShellProps) {
<div className="h-6 w-6 rounded bg-primary flex items-center justify-center text-primary-foreground font-bold text-xs shadow-glow-teal"> <div className="h-6 w-6 rounded bg-primary flex items-center justify-center text-primary-foreground font-bold text-xs shadow-glow-teal">
L1 L1
</div> </div>
<span className="font-semibold text-foreground tracking-tight">LedgerOne</span> <span className="font-semibold text-foreground tracking-tight">Aarthalabs</span>
</div> </div>
<button onClick={() => setMobileOpen(false)} className="text-muted-foreground hover:text-foreground"> <button onClick={() => setMobileOpen(false)} className="text-muted-foreground hover:text-foreground">
<svg className="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <svg className="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor">

View File

@ -75,7 +75,7 @@ export default function ExportsPage() {
const url = URL.createObjectURL(blob); const url = URL.createObjectURL(blob);
const a = document.createElement("a"); const a = document.createElement("a");
a.href = url; a.href = url;
a.download = \`ledgerone-export-\${new Date().toISOString().slice(0, 10)}.csv\`; a.download = \`aarthalabs-export-\${new Date().toISOString().slice(0, 10)}.csv\`;
a.click(); a.click();
URL.revokeObjectURL(url); URL.revokeObjectURL(url);
setCsvStatus(\`Export ready (\${res.data.rowCount ?? 0} rows) — file downloaded.\`); setCsvStatus(\`Export ready (\${res.data.rowCount ?? 0} rows) — file downloaded.\`);