From eae610cc95fd4771a6cde1edbbdb02a0c0290bc8 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Fri, 22 May 2026 19:13:14 +0200 Subject: [PATCH] Align frontend with InboxConverge brand --- frontend/src/app/accounts/page.tsx | 59 +++++----- frontend/src/app/dashboard/page.tsx | 52 ++++----- frontend/src/app/globals.css | 106 +++++++++++++++-- frontend/src/app/login/page.tsx | 54 +++++---- frontend/src/app/page.tsx | 119 ++++++++++---------- frontend/src/app/register/page.tsx | 60 +++++----- frontend/src/components/BrandMark.tsx | 16 +++ frontend/src/components/DashboardLayout.tsx | 97 ++++++++-------- 8 files changed, 341 insertions(+), 222 deletions(-) create mode 100644 frontend/src/components/BrandMark.tsx diff --git a/frontend/src/app/accounts/page.tsx b/frontend/src/app/accounts/page.tsx index 03eadd4..cb600a5 100644 --- a/frontend/src/app/accounts/page.tsx +++ b/frontend/src/app/accounts/page.tsx @@ -76,7 +76,7 @@ function ProviderLogoBanner({ providerName, email }: { providerName?: string | n if (!icon) return null; const label = providerName ?? email?.split('@')[1] ?? 'provider'; return ( -
+
{`${label}
-
-

Mail Accounts

+
+
+

Mail Accounts

+

Connect and monitor the external inboxes feeding Gmail.

+
) : ( -
-

No mail accounts configured yet

+
+

No mail accounts configured yet

@@ -105,10 +112,10 @@ export default function LoginPage() {
-
+
- Or continue with + Or continue with
@@ -116,7 +123,7 @@ export default function LoginPage() {
-
- +
+ Privacy Policy - + Terms - + Impressum - + Datenschutz
diff --git a/frontend/src/app/page.tsx b/frontend/src/app/page.tsx index 93c678c..f6109b5 100644 --- a/frontend/src/app/page.tsx +++ b/frontend/src/app/page.tsx @@ -7,7 +7,8 @@ import { useAuthStore } from '@/store/authStore'; import { userApi, SubscriptionPlan } from '@/lib/api'; import { useQuery } from '@tanstack/react-query'; import api from '@/lib/api'; -import { Mail, ArrowRight, Shield, Zap, Clock, Check } from 'lucide-react'; +import { ArrowRight, Shield, Zap, Clock, Check } from 'lucide-react'; +import { BrandMark } from '@/components/BrandMark'; async function fetchPublicPlans(): Promise { const res = await api.get('/subscriptions/plans'); @@ -20,39 +21,39 @@ function PricingCard({ plan }: { plan: SubscriptionPlan }) { : null; return ( -
-

{plan.name}

-

{plan.description}

+
+

{plan.name}

+

{plan.description}

- + €{plan.price_monthly.toFixed(2)} - /month + /month {yearlyMonthly && ( -

+

or €{yearlyMonthly}/mo billed yearly (€{plan.price_yearly?.toFixed(2)})

)}
-
    +
    • - + {plan.max_mail_accounts === 1 ? '1 mailbox' : `Up to ${plan.max_mail_accounts} mailboxes`}
    • - + Checked every {plan.check_interval_minutes} minute{plan.check_interval_minutes > 1 ? 's' : ''}
    • - + Up to {plan.max_emails_per_day.toLocaleString()} emails/day
    Get started @@ -99,25 +100,22 @@ export default function Home() { const hasPaidPlans = plans && plans.length > 0; return ( -
    +
    {/* Header */} -
    +
    -
    -
    - -

    InboxConverge

    -
    +
    +
    Sign In Sign Up Free @@ -129,32 +127,31 @@ export default function Home() {
    {/* Hero */} -
    -

    - Your old inboxes,{' '} - delivered to Gmail. +
    +

    + Your old inboxes, delivered to Gmail.

    -

    +

    You know the ones — that GMX account from 2009, the old ISP address your bank still sends to, the Hotmail you gave out in school. InboxConverge quietly polls them all and drops everything into your Gmail. Set it once, forget it exists.

    -

    +

    No forwarding rules to configure. No email clients to keep open. Just your mail, where you actually read it.

    Get Started — it's free Sign In @@ -163,40 +160,40 @@ export default function Home() { {/* Features */}
    -
    -
    +
    +
    -

    +

    Auto-detects everything

    -

    +

    Type your old email address and InboxConverge figures out the server settings. No Googling port numbers required.

    -
    -
    +
    +
    -

    +

    Runs in the background

    -

    +

    Checks your old inboxes on a schedule you choose — from every minute to once a day. New mail appears in Gmail as if it was always there.

    -
    -
    +
    +
    -

    +

    Your passwords stay yours

    -

    +

    Credentials are encrypted at rest and never shared. All connections use SSL/TLS and Gmail delivery uses OAuth2 — no app passwords needed.

    @@ -205,36 +202,36 @@ export default function Home() { {/* How It Works */}
    -

    +

    Three steps and you're done

    -
    +
    1
    -

    Add your old inbox

    -

    +

    Add your old inbox

    +

    Paste the email address — InboxConverge auto-detects the POP3/IMAP settings in seconds.

    -
    +
    2
    -

    Connect Gmail

    -

    +

    Connect Gmail

    +

    Sign in with Google once. InboxConverge delivers mail directly into your inbox using the Gmail API — no SMTP relay needed.

    -
    +
    3
    -

    Close the tab

    -

    +

    Close the tab

    +

    Seriously, that's it. Your mail arrives automatically from now on. Check the dashboard whenever you like, but you won't need to.

    @@ -245,10 +242,10 @@ export default function Home() { {/* Pricing — only rendered when paid plans exist (hidden in enterprise/all-free mode) */} {hasPaidPlans && (
    -

    +

    Pricing

    -

    +

    Start free. Upgrade if you need more inboxes or faster checks. Cancel any time — no questions, no fuss.

    @@ -257,7 +254,7 @@ export default function Home() { ))}
    -

    +

    All paid plans include a{' '} free tier when you first sign up — no credit card required. @@ -267,22 +264,22 @@ export default function Home() {

    {/* Footer */} -