Replace E2E encryption mentions with privacy-first messaging (#124)

## Summary

- Removes all references to "end-to-end encryption" and "E2E" across the
codebase
- Replaces with privacy-first messaging: data is never shared with third
parties, users own their data, app remains private and secure
- Updates all user-facing content: landing page, onboarding, billing,
terms, emails, setup script, subscription plans, and Coolify template
- Updates Spanish translations (`lang/es.json`) to match new messaging
- Updates `CLAUDE.md` and `README.md` project descriptions

## Files changed (12)

- `CLAUDE.md` — Project description
- `README.md` — Feature list
- `config/subscriptions.php` — Plan feature lists
- `lang/es.json` — Spanish translations (18 keys updated)
- `public/setup.sh` — CLI banner text
- `resources/js/components/onboarding/step-smart-rules.tsx` — Onboarding
step
- `resources/js/pages/settings/billing.tsx` — Billing benefits
- `resources/js/pages/terms.tsx` — Terms of service
- `resources/views/mail/drip/promo-code.blade.php` — Promo email
- `resources/views/mail/drip/welcome.blade.php` — Welcome email
- `resources/views/mail/user-lead-invitation.blade.php` — Lead
invitation email
- `templates/coolify/whisper-money.yaml` — Coolify slogan

## Test plan

- [x] All 492 tests pass
- [x] Pint formatting passes
- [x] Prettier formatting passes
- [x] ESLint passes
This commit is contained in:
Víctor Falcón 2026-02-14 16:59:50 +01:00 committed by GitHub
parent b9abf49617
commit 60ebe7e86f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 38 additions and 45 deletions

View File

@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
## Project Overview
Whisper Money is a privacy-first personal finance app with end-to-end encryption. It uses Laravel 12 (PHP 8.4) backend with React 19 frontend via Inertia.js v2.
Whisper Money is a privacy-first personal finance app. Your data is never shared with third parties—you are the owner. It uses Laravel 12 (PHP 8.4) backend with React 19 frontend via Inertia.js v2.
## Commands
@ -90,7 +90,7 @@ show.url(1) // "/posts/1"
- Eloquent relationships with return type hints
- User model uses UUID primary keys
- End-to-end encryption for sensitive financial data
- Privacy-focused: no data shared with third parties
===

View File

@ -26,7 +26,7 @@ Whisper Money is a privacy-first personal finance application that helps you tra
## Features
- 🔐 **End-to-end encryption** — Your financial data stays private
- 🔐 **Privacy-first** — Your data is never shared with third parties. You own it
- 🏦 **Bank account management** — Track multiple accounts in one place
- 📊 **Transaction categorization** — Automatic and manual categorization
- 🤖 **Automation rules** — Set up rules to auto-categorize transactions

View File

@ -51,7 +51,7 @@ return [
'features' => [
'Unlimited accounts',
'Unlimited transactions',
'End-to-end encryption',
'Your data stays yours',
'Smart categorization',
'Automation rules',
'Visual insights & reports',
@ -67,7 +67,7 @@ return [
'features' => [
'Unlimited accounts',
'Unlimited transactions',
'End-to-end encryption',
'Your data stays yours',
'Smart categorization',
'Automation rules',
'Visual insights & reports',
@ -83,7 +83,7 @@ return [
// 'features' => [
// 'Unlimited accounts',
// 'Unlimited transactions',
// 'End-to-end encryption',
// 'Your data stays yours',
// 'Smart categorization',
// 'Automation rules',
// 'Visual insights & reports',

View File

@ -45,12 +45,12 @@
"A new verification link has been sent to the email address you provided during registration.": "Se ha enviado un nuevo enlace de verificación a la dirección de correo electrónico que proporcionaste durante el registro.",
"A new verification link has been sent to your email address.": "Se ha enviado un nuevo enlace de verificación a tu dirección de correo electrónico.",
"A unique encryption key is generated on your device. Only you have access to it—we never see or store it.": "Se genera una clave de encriptación única en tu dispositivo. Solo tú tienes acceso a ella, nosotros nunca la vemos ni la almacenamos.",
"AI can't help you with your transactions because they're end-to-end encrypted. This is intentional—we believe your financial data should never be fed into AI systems that you don't control.": "La IA no puede ayudarte con tus transacciones porque están encriptadas de extremo a extremo. Esto es intencional: creemos que tus datos financieros nunca deben ser alimentados a sistemas de IA que no controlas.",
"AI can't help you with your transactions because we never share your data with third parties. This is intentional—we believe your financial data should never be fed into AI systems that you don't control.": "La IA no puede ayudarte con tus transacciones porque nunca compartimos tus datos con terceros. Esto es intencional: creemos que tus datos financieros nunca deben ser alimentados a sistemas de IA que no controlas.",
"AI requires sending your data to external servers": "La IA requiere enviar tus datos a servidores externos",
"Accept responsibility for all activities that occur under your account": "Acepta la responsabilidad de todas las actividades que ocurran en tu cuenta",
"Access Controls:": "Controles de Acceso:",
"Access your data securely from any device with automatic syncing.": "Accede a tus datos de forma segura desde cualquier dispositivo con sincronización automática.",
"Access your data with end-to-end encryption to ensure privacy and security": "Accede a tus datos con encriptación de extremo a extremo para garantizar privacidad y seguridad",
"Access your data securely—your information is never shared with third parties": "Accede a tus datos de forma segura—tu información nunca se comparte con terceros",
"Access your finances on any device, anytime, anywhere.": "Accede a tus finanzas desde cualquier dispositivo, en cualquier momento y lugar.",
"Account": "Cuenta",
"Account Details": "Detalles de Cuenta",
@ -254,7 +254,6 @@
"Drop your file here, or click to browse": "Arrastra tu archivo aquí, o haz clic para explorar",
"Duplicate": "Duplicado",
"Duplicates": "Duplicados",
"E2E Encryption": "Encriptación E2E",
"Private & Secure": "Privado y seguro",
"Each recovery code can be used once to access your account and will be removed after use. If you need more, click": "Cada código de recuperación se puede usar una vez para acceder a tu cuenta y será eliminado después de usarse. Si necesitas más, haz clic",
"Edit": "Editar",
@ -281,11 +280,11 @@
"Encryption Password": "Contraseña de Encriptación",
"Encryption Set": "Encriptación Configurada",
"Encryption key not available. Please go back and set up encryption.": "Clave de encriptación no disponible. Por favor, vuelve atrás y configura la encriptación.",
"End-to-End Encryption": "Encriptación de Extremo a Extremo",
"Privacy First": "Privacidad Primero",
"Entertainment (Movies, Sports, Hobbies)": "Entretenimiento (Películas, Deportes, Hobbies)",
"Encryption key not available": "Clave de encriptación no disponible",
"End-to-End Encryption:": "Encriptación de Extremo a Extremo:",
"End-to-end encryption": "Encriptación de extremo a extremo",
"Privacy First:": "Privacidad Primero:",
"Your data stays yours": "Tus datos son solo tuyos",
"English": "Inglés",
"Ensure your account is using a long, random password to stay secure": "Asegúrate de que tu cuenta esté usando una contraseña larga y aleatoria para mantenerse segura",
"Ensure your account is using a long, random password to stay secure.": "Asegúrate de que tu cuenta esté usando una contraseña larga y aleatoria para mantenerte seguro.",
@ -347,7 +346,7 @@
"Great job! You're saving well.": "¡Excelente trabajo! Estás ahorrando bien.",
"Got it": "Entendido",
"Groups joined by:": "Grupos unidos por:",
"How End-to-End Encryption Works": "Cómo Funciona la Encriptación de Extremo a Extremo",
"How We Protect Your Privacy": "Cómo Protegemos Tu Privacidad",
"How much do you want to budget per period?": "¿Cuánto deseas presupuestar por período?",
"How to Export from Your Bank:": "Cómo Exportar desde Tu Banco:",
"I Understand, Continue": "Entiendo, Continuar",
@ -513,7 +512,6 @@
"Prev": "Ant",
"Preview (first 3 rows)": "Vista previa (primeras 3 filas)",
"Preview Balances": "Vista Previa de Balances",
"Preview Transactions": "Vista Previa de Transacciones",
"Previous": "Anterior",
"Previous month": "Mes anterior",
"Priority": "Prioridad",
@ -522,7 +520,7 @@
"Privacy Policy - Whisper Money": "Política de Privacidad - Whisper Money",
"Privacy by Design": "Privacidad por Diseño",
"Privacy comes first": "La privacidad es lo primero",
"Privacy policy for Whisper Money. Learn how we collect, use, and protect your personal information with end-to-end encryption.": "Política de privacidad de Whisper Money. Aprende cómo recopilamos, usamos y protegemos tu información personal con encriptación de extremo a extremo.",
"Privacy policy for Whisper Money. Learn how we collect, use, and protect your personal information. Your data is never shared with third parties.": "Política de privacidad de Whisper Money. Aprende cómo recopilamos, usamos y protegemos tu información personal. Tus datos nunca se comparten con terceros.",
"Privacy policy for Whisper Money. Learn how we collect, use, and protect your personal information.": "Política de privacidad de Whisper Money. Aprende cómo recopilamos, usamos y protegemos tu información personal.",
"Pro Monthly": "Pro Mensual",
"Pro Plan Active": "Plan Pro Activo",
@ -647,7 +645,6 @@
"Share": "Compartir",
"button in your browser toolbar": "en la barra de herramientas de tu navegador",
"Add to Home Screen": "Añadir a pantalla de inicio",
"Take control of your finances with privacy-first money tracking. Let's set up your account in just a few minutes.": "Toma el control de tus finanzas con seguimiento de dinero que prioriza la privacidad. Configuremos tu cuenta en solo unos minutos.",
"teal": "cerceta",
"Technical Information:": "Información Técnica:",
"Terms of Service": "Términos de Servicio",
@ -661,7 +658,7 @@
"The demo account cannot be deleted.": "La cuenta demo no se puede eliminar.",
"The import feature saved me hours. Got all my transactions in seconds.": "La función de importación me ahorró horas. Obtuve todas mis transacciones en segundos.",
"The legal basis for processing your data includes: performance of our contract with you, your consent, our legitimate interests in improving the service, and compliance with legal obligations.": "La base legal para procesar tus datos incluye: ejecución de nuestro contrato contigo, tu consentimiento, nuestros intereses legítimos en mejorar el servicio y cumplimiento de obligaciones legales.",
"The most secure personal finance app with end-to-end encryption. Track expenses, create budgets, and manage your money privately.": "La app más segura de finanzas personales con encriptación de extremo a extremo. Rastrea gastos, crea presupuestos y administra tu dinero de forma privada.",
"The most secure personal finance app. Your data is never shared with third parties. Track expenses, create budgets, and manage your money privately.": "La app más segura de finanzas personales. Tus datos nunca se comparten con terceros. Rastrea gastos, crea presupuestos y administra tu dinero de forma privada.",
"The most secure way to understand your finances": "La forma más segura de entender tus finanzas",
"All your money in one place. No spreadsheets. Private.": "Todo tu dinero en un solo sitio. Sin Excels. Privado.",
"There are different account types. Some track transactions, others just track balance over time.": "Hay diferentes tipos de cuenta. Algunas rastrean transacciones, otras solo rastrean el balance a lo largo del tiempo.",
@ -676,7 +673,7 @@
"This will remove your encryption key from this browser session. You'll need to enter your password again to unlock encrypted content.": "Esto eliminará tu clave de encriptación de esta sesión del navegador. Necesitarás ingresar tu contraseña nuevamente para desbloquear el contenido encriptado.",
"This will take less than 5 minutes": "Esto tomará menos de 5 minutos",
"This will update the allocated amount for the current and future periods.": "Esto actualizará el valor asignado para el período actual y futuro.",
"This would break our end-to-end encryption promise": "Esto rompería nuestra promesa de encriptación de extremo a extremo",
"This would mean sharing your data with third parties": "Esto significaría compartir tus datos con terceros",
"Title": "Título",
"To": "Para",
"To authenticate your access and protect your account security": "Para autenticar tu acceso y proteger la seguridad de tu cuenta",
@ -791,7 +788,7 @@
"Whisper Money - The Most Secure Personal Finance App": "Whisper Money - La App Más Segura de Finanzas Personales",
"Whisper Money is a personal finance tracking application that allows you to:": "Whisper Money es una aplicación de seguimiento de finanzas personales que te permite:",
"Whisper Money is the data controller responsible for your personal information.": "Whisper Money es el controlador de datos responsable de tu información personal.",
"Whisper Money uses end-to-end encryption to protect your financial data. Here's how it works:": "Whisper Money usa encriptación de extremo a extremo para proteger tus datos financieros. Así es como funciona:",
"Whisper Money never shares your data with third parties. Here's how we protect your privacy:": "Whisper Money nunca comparte tus datos con terceros. Así es como protegemos tu privacidad:",
"Whisper Money. All rights reserved.": "Whisper Money. Todos los derechos reservados.",
"Why No AI Auto-Categorization?": "¿Por Qué No Hay Auto-Categorización por IA?",
"With two-factor authentication enabled, you will be prompted for a secure, random pin during login, which you can retrieve from the TOTP-supported application on your phone.": "Con la autenticación de dos factores activada, se te pedirá un pin seguro y aleatorio durante el inicio de sesión, que puedes obtener de la aplicación compatible con TOTP en tu teléfono.",
@ -834,14 +831,14 @@
"Your data is encrypted before it leaves your browser.": "Tus datos se encriptan antes de salir de tu navegador.",
"Your data is ready": "Tus datos están listos",
"Your data is yours alone. Sign up to get started.": "Tus datos son solo tuyos. Regístrate para comenzar.",
"Your data stays private with end-to-end encryption.": "Tus datos permanecen privados con encriptación de extremo a extremo.",
"Your data stays private—never shared with third parties.": "Tus datos permanecen privados—nunca se comparten con terceros.",
"Your data is yours. Export it anytime in standard formats.": "Tus datos son tuyos. Expórtalos en cualquier momento en formatos estándar.",
"Your email address is unverified.": "Tu dirección de correo electrónico no está verificada.",
"Your financial data is encrypted on your device before being transmitted to our servers, ensuring that only you can access your information": "Tus datos financieros se encriptan en tu dispositivo antes de ser transmitidos a nuestros servidores, asegurando que solo tú puedas acceder a tu información",
"Your financial data is encrypted on your device before it ever reaches our servers.": "Tus datos financieros se encriptan en tu dispositivo antes de que lleguen a nuestros servidores.",
"Your financial data is encrypted on your device. Only you can access it.": "Tus datos financieros se encriptan en tu dispositivo. Solo tú puedes acceder a ellos.",
"Your financial data stays private with end-to-end encryption. The most secure way to manage your personal finances.": "Tus datos financieros permanecen privados con encriptación de extremo a extremo. La forma más segura de gestionar tus finanzas personales.",
"Your financial data stays private with end-to-end encryption. Track expenses, create budgets, and achieve your goals—all while keeping your information completely secure.": "Tus datos financieros permanecen privados con encriptación de extremo a extremo. Rastrea gastos, crea presupuestos y alcanza tus metas, todo mientras mantienes tu información completamente segura.",
"Your financial data stays private—never shared with third parties. The most secure way to manage your personal finances.": "Tus datos financieros permanecen privados—nunca se comparten con terceros. La forma más segura de gestionar tus finanzas personales.",
"Your financial data stays private—never shared with third parties. Track expenses, create budgets, and achieve your goals—all while keeping your information completely secure.": "Tus datos financieros permanecen privados—nunca se comparten con terceros. Rastrea gastos, crea presupuestos y alcanza tus metas, todo mientras mantienes tu información completamente segura.",
"Understand your finances and make better decisions without the friction. Track expenses, create budgets, and achieve your goals—all in one place.": "Entiende tus finanzas para tomar mejores decisiones sin fricción. Rastrea gastos, crea presupuestos y alcanza tus metas, todo en un solo sitio.",
"Your first account must be a": "Tu primera cuenta debe ser una",
"Your rules run entirely in your browser": "Tus reglas se ejecutan completamente en tu navegador",
@ -860,14 +857,13 @@
"e.g., Padel Budget": "ej., Presupuesto de Pádel",
"email@example.com": "email@example.com",
"en_US": "es_ES",
"finance app, budgeting, expense tracking, end-to-end encryption, secure finance, personal finance, money management, privacy, encrypted finance app": "app de finanzas, presupuestos, seguimiento de gastos, encriptación de extremo a extremo, finanzas seguras, finanzas personales, gestión del dinero, privacidad, app de finanzas encriptada",
"finance app, budgeting, expense tracking, privacy-first, secure finance, personal finance, money management, privacy, no data sharing": "app de finanzas, presupuestos, seguimiento de gastos, privacidad primero, finanzas seguras, finanzas personales, gestión del dinero, privacidad, sin compartir datos",
"for the last 12 months": "en los últimos 12 meses",
"index, follow": "index, follow",
"label(s) total.": "etiqueta(s) en total.",
"log in": "iniciar sesión",
"of": "de",
"on the last 30 days": "en los últimos 30 días",
"one-time": "pago único",
"or you can": "o puedes",
"or, enter the code manually": "o, ingresa el código manualmente",
"per month": "por mes",
@ -950,7 +946,6 @@
"Strong": "Fuerte",
"Take control of your finances with privacy-first money tracking. Let's set up your account in just a few minutes.": "Toma el control de tus finanzas con un seguimiento privado de tu dinero. Vamos a configurar tu cuenta en pocos minutos.",
"This account tracks balance changes over time instead of individual transactions.": "Esta cuenta rastrea cambios de balance a lo largo del tiempo en lugar de transacciones individuales.",
"This will take less than 5 minutes": "Esto tomará menos de 5 minutos",
"Track credit card spending": "Rastrea los gastos de tarjeta de crédito",
"Transactions + Balance": "Transacciones + Balance",
"Transportation (Fuel, Public Transit, Parking)": "Transporte (Combustible, Transporte público, Aparcamiento)",
@ -977,10 +972,10 @@
"Hi! I'm Victor, the founder of Whisper Money. I wanted to personally welcome you and thank you for joining us.": "¡Hola! Soy Víctor, el fundador de Whisper Money. Quería darte la bienvenida personalmente y agradecerte por unirte.",
"When I started building Whisper Money, I was frustrated with finance apps that wanted to mine my data or use AI to analyze my spending. I just wanted a simple, private way to track my finances - and I figured others might too.": "Cuando empecé a construir Whisper Money, estaba frustrado con las apps de finanzas que querían minar mis datos o usar IA para analizar mis gastos. Solo quería una forma simple y privada de rastrear mis finanzas - y pensé que otros también.",
"Your Data is Truly Private": "Tus Datos Son Verdaderamente Privados",
"I built Whisper Money with **end-to-end encryption** because I believe your financial data should be yours alone:": "Construí Whisper Money con **encriptación de extremo a extremo** porque creo que tus datos financieros deben ser solo tuyos:",
"Your financial data is encrypted with a key that only you control": "Tus datos financieros están encriptados con una clave que solo tú controlas",
"I cannot read your transactions, balances, or any personal information (and I don't want to!)": "No puedo leer tus transacciones, balances ni ninguna información personal (¡y no quiero!)",
"Your encryption key never leaves your device": "Tu clave de encriptación nunca sale de tu dispositivo",
"I built Whisper Money because I believe **your financial data should be yours alone**:": "Construí Whisper Money porque creo que **tus datos financieros deben ser solo tuyos**:",
"Your data is never shared with third parties": "Tus datos nunca se comparten con terceros",
"We don't sell, trade, or give away your personal information": "No vendemos, intercambiamos ni cedemos tu información personal",
"You are always the owner of your data": "Siempre eres el dueño de tus datos",
"No AI, No Data Mining": "Sin IA, Sin Minería de Datos",
"I don't use AI to analyze your spending or sell insights about your habits. Your financial data stays between you and your spreadsheet-loving self.": "No uso IA para analizar tus gastos ni vender información sobre tus hábitos. Tus datos financieros quedan entre tú y tu afición por las hojas de cálculo.",
"What's more, even if I wanted to use it, I couldn't, since you're the only one who has the key to read the data.": "Es más, aunque quisiera usarlos, no podría, ya que tú eres el único que tiene la clave para leer los datos.",
@ -1034,7 +1029,7 @@
"Unlimited transaction imports": "Importaciones de transacciones ilimitadas",
"Automated categorization rules": "Reglas de categorización automática",
"Multiple account tracking": "Seguimiento de múltiples cuentas",
"End-to-end encrypted storage": "Almacenamiento con encriptación de extremo a extremo",
"Your data stays yours—never shared with third parties": "Tus datos son solo tuyos—nunca se comparten con terceros",
"Claim Your Discount": "Reclama Tu Descuento",
"This code won't last forever, but more importantly, your support means the world to me. As a solo founder, every subscriber helps me continue building something I'm passionate about.": "Este código no durará para siempre, pero lo más importante es que tu apoyo significa mucho para mí. Como fundador en solitario, cada suscriptor me ayuda a seguir construyendo algo que me apasiona.",
"Thanks for being part of this journey with me!": "¡Gracias por ser parte de este viaje conmigo!",

View File

@ -138,7 +138,7 @@ print_header() {
EOF
echo -e "${NC}"
echo -e "${GREEN}Whisper Money - Privacy-First Personal Finance App${NC}"
echo -e "${BLUE}End-to-end encrypted financial management${NC}"
echo -e "${BLUE}Privacy-first financial management—your data, your ownership${NC}"
echo ""
}

View File

@ -78,7 +78,7 @@ export function StepSmartRules({ onContinue }: StepSmartRulesProps) {
</p>
<p className="text-xs text-amber-700 dark:text-amber-300">
{__(
'This would break our end-to-end encryption\n promise',
'This would mean sharing your data with third parties',
)}
</p>
</div>

View File

@ -31,9 +31,9 @@ const benefits = [
},
{
icon: ShieldCheckIcon,
title: 'End-to-End Encryption',
title: 'Privacy First',
description:
'Your financial data is encrypted with military-grade security.',
'Your data is never shared with third parties. You are always the owner.',
},
{
icon: SparklesIcon,

View File

@ -120,7 +120,7 @@ export default function Terms() {
</li>
<li>
{__(
'Access your data with end-to-end encryption\n to ensure privacy and security',
'Access your data securely—your information is never shared with third parties',
)}
</li>
</ul>

View File

@ -16,7 +16,7 @@
- {{ __('Unlimited transaction imports') }}
- {{ __('Automated categorization rules') }}
- {{ __('Multiple account tracking') }}
- {{ __('End-to-end encrypted storage') }}
- {{ __('Your data stays yours—never shared with third parties') }}
<x-mail::button :url="config('app.url') . '/subscribe'">
{{ __('Claim Your Discount') }}

View File

@ -7,18 +7,16 @@
## {{ __('Your Data is Truly Private') }}
{{ __('I built Whisper Money with **end-to-end encryption** because I believe your financial data should be yours alone:') }}
{{ __('I built Whisper Money because I believe **your financial data should be yours alone**:') }}
- {{ __('Your financial data is encrypted with a key that only you control') }}
- {{ __('I cannot read your transactions, balances, or any personal information (and I don\'t want to!)') }}
- {{ __('Your encryption key never leaves your device') }}
- {{ __('Your data is never shared with third parties') }}
- {{ __('We don\'t sell, trade, or give away your personal information') }}
- {{ __('You are always the owner of your data') }}
## {{ __('No AI, No Data Mining') }}
{{ __("I don't use AI to analyze your spending or sell insights about your habits. Your financial data stays between you and your spreadsheet-loving self.") }}
{{ __("What's more, even if I wanted to use it, I couldn't, since you're the only one who has the key to read the data.") }}
<div style="height: 40px"></div>
{{ __('If you have any questions or run into any issues, **just reply to this email**. I personally read every message and I\'m here to help!') }}

View File

@ -7,7 +7,7 @@ It's Victor, the founder of Whisper Money. You signed up a while back to hear ab
## What is Whisper Money?
I built Whisper Money because I was tired of giving my financial data to big companies who use it for who knows what. Whisper Money keeps your data **end-to-end encrypted** - only you can see your transactions, categories, and insights. Not me, not anyone.
I built Whisper Money because I was tired of giving my financial data to big companies who use it for who knows what. Whisper Money **never shares your data with third parties** - you are always the owner of your financial information.
It's personal finance, but actually private.
@ -24,7 +24,7 @@ This gets you full access to everything:
- Unlimited transaction imports
- Automated categorization rules
- Multiple account tracking
- End-to-end encrypted storage
- Your data stays yours—never shared with third parties
- Mobile app (iOS & Android)
<x-mail::button :url="config('app.url') . '/register'">

View File

@ -1,5 +1,5 @@
# documentation: https://github.com/whisper-money/whisper-money
# slogan: Privacy-first personal finance with end-to-end encryption
# slogan: Privacy-first personal finance—your data, your ownership
# tags: finance, personal-finance, budgeting, privacy, encryption, laravel, react
# logo: svgs/whisper-money.svg
# port: 80