From 08399750831283146e6f153ff456a35a6e7e5e4e Mon Sep 17 00:00:00 2001 From: Dries Augustyns Date: Fri, 6 Mar 2026 15:13:24 +0100 Subject: [PATCH] chore: Add feature pages --- apps/landing/src/components/Footer/Footer.tsx | 160 +++++- .../src/pages/features/email-editor.tsx | 7 +- .../src/pages/features/inbound-email.tsx | 7 +- apps/landing/src/pages/features/segments.tsx | 7 +- apps/landing/src/pages/features/smtp.tsx | 7 +- apps/landing/src/pages/features/workflows.tsx | 7 +- apps/landing/src/pages/guides/index.tsx | 2 +- apps/landing/src/pages/index.tsx | 38 +- apps/landing/src/pages/pricing.tsx | 505 +++++++++--------- apps/landing/src/pages/vs/activecampaign.tsx | 7 +- apps/landing/src/pages/vs/bento.tsx | 7 +- apps/landing/src/pages/vs/brevo.tsx | 7 +- apps/landing/src/pages/vs/convertkit.tsx | 7 +- apps/landing/src/pages/vs/customerio.tsx | 7 +- apps/landing/src/pages/vs/index.tsx | 7 +- apps/landing/src/pages/vs/klaviyo.tsx | 7 +- apps/landing/src/pages/vs/loops.tsx | 7 +- apps/landing/src/pages/vs/mailchimp.tsx | 7 +- apps/landing/src/pages/vs/mailerlite.tsx | 7 +- apps/landing/src/pages/vs/mailgun.tsx | 7 +- apps/landing/src/pages/vs/postmark.tsx | 7 +- apps/landing/src/pages/vs/resend.tsx | 7 +- apps/landing/src/pages/vs/sendgrid.tsx | 7 +- 23 files changed, 507 insertions(+), 331 deletions(-) diff --git a/apps/landing/src/components/Footer/Footer.tsx b/apps/landing/src/components/Footer/Footer.tsx index 3816108..7186c56 100644 --- a/apps/landing/src/components/Footer/Footer.tsx +++ b/apps/landing/src/components/Footer/Footer.tsx @@ -13,12 +13,12 @@ export default function Footer() {
{/* Logo and description */} -
+
{'Plunk

- Open-source email automation platform that scales + Open-source email platform for transactional, marketing, and automation. EU-hosted, GDPR compliant.

{/* Links */} -
+

Product

    @@ -67,20 +67,95 @@ export default function Footer() {
  • - - Made by humans + + Documentation
  • - - Documentation + + Guides + +
  • +
  • + + Tools + +
  • +
  • + + Made by humans + +
  • +
+
+ +
+

Features

+
    +
  • + + Email editor + +
  • +
  • + + Workflows + +
  • +
  • + + Segments + +
  • +
  • + + SMTP + +
  • +
  • + + Inbound email + +
  • +
+
+ +
+

Compare

+
    +
  • + + All comparisons + +
  • +
  • + + vs Mailchimp + +
  • +
  • + + vs SendGrid + +
  • +
  • + + vs Resend + +
  • +
  • + + vs Brevo + +
  • +
  • + + vs Mailgun + +
  • +
  • + + vs ConvertKit
@@ -95,28 +170,18 @@ export default function Footer() {
  • - + GitHub
  • - + Status
  • -
    -
    -

    Legal

    +

    Legal

    • @@ -135,6 +200,47 @@ export default function Footer() {
    + +
    +

    Guides

    +
      +
    • + + Email deliverability + +
    • +
    • + + Transactional vs marketing + +
    • +
    • + + What is DKIM? + +
    • +
    • + + What is SPF? + +
    • +
    • + + What is DMARC? + +
    • +
    • + + Email open rates + +
    • +
    • + + Email bounce rates + +
    • +
    +
    diff --git a/apps/landing/src/pages/features/email-editor.tsx b/apps/landing/src/pages/features/email-editor.tsx index 6c95aa9..0c074e7 100644 --- a/apps/landing/src/pages/features/email-editor.tsx +++ b/apps/landing/src/pages/features/email-editor.tsx @@ -331,10 +331,13 @@ export default function EmailEditorFeature() { whileTap={{scale: 0.98}} href={`${DASHBOARD_URI}/auth/signup`} className={ - 'rounded-lg bg-neutral-900 px-8 py-4 text-base font-semibold text-white transition hover:bg-neutral-800' + 'group rounded-lg bg-neutral-900 px-8 py-4 text-base font-semibold text-white transition hover:bg-neutral-800' } > - Get started for free + + Get started for free + + - Get started for free + + Get started for free + + - Get started for free + + Get started for free + + - Get started for free + + Get started for free + + - Get started for free + + Get started for free + + - Start free trial + Get started free - 4,000+ Stars on GitHub + 5,000+ Stars on GitHub ยท AGPL-3.0 Open Source @@ -472,7 +474,8 @@ export default function Index() { One contact, complete history

    - Every interaction flows into a single contact record. Transactional emails, campaigns, and workflows, all tracked in one place. + Every interaction flows into a single contact record. Transactional emails, campaigns, and workflows, all + tracked in one place.

    @@ -628,22 +631,29 @@ export default function Index() { transition={{duration: 0.7, ease: [0.22, 1, 0.36, 1]}} className={'mx-auto max-w-4xl text-center'} > -

    Open source, privacy first

    +

    + Open source, privacy first +

    - AGPL-3.0 licensed, EU-hosted, and GDPR compliant. Inspect the code, self-host on your own infrastructure, or use our cloud. + AGPL-3.0 licensed, EU-hosted, and GDPR compliant. Inspect the code, self-host on your own infrastructure, + or use our cloud.

    -
    +

    Open Source

    AGPL-3.0 licensed

    -

    4K+ stars on GitHub

    +

    5K+ stars on GitHub

    -
    +

    Privacy First

    @@ -651,7 +661,9 @@ export default function Index() {

    GDPR compliant

    -
    +

    Self-Hostable

    @@ -686,7 +698,9 @@ export default function Index() { transition={{duration: 0.7, ease: [0.22, 1, 0.36, 1]}} className={'mx-auto max-w-4xl text-center'} > -

    Simple, transparent pricing

    +

    + Simple, transparent pricing +

    Pay for what you use, nothing more. No surprises at scale.

    @@ -807,7 +821,9 @@ export default function Index() { transition={{duration: 0.7, ease: [0.22, 1, 0.36, 1]}} className={'mx-auto max-w-3xl text-center'} > -

    Start sending in 5 minutes

    +

    + Start sending in 5 minutes +

    1,000 emails free every month. Then $0.001 per email. No contact limits, no surprises.

    diff --git a/apps/landing/src/pages/pricing.tsx b/apps/landing/src/pages/pricing.tsx index 83d69b1..dcd6300 100644 --- a/apps/landing/src/pages/pricing.tsx +++ b/apps/landing/src/pages/pricing.tsx @@ -2,14 +2,63 @@ import {NextSeo} from 'next-seo'; import React from 'react'; import {Footer, Navbar} from '../components'; import {motion} from 'framer-motion'; - import {DASHBOARD_URI} from '../lib/constants'; +import {ArrowRight, BarChart3, Code2, Globe, Mail, PackageOpen, Shield, Users, Zap, X, Check} from 'lucide-react'; +import Link from 'next/link'; import {GithubIcon} from 'lucide-react'; +const includedFeatures = [ + { + icon: , + title: 'Transactional emails', + description: 'API and SMTP delivery for receipts, password resets, and any event-driven email.', + }, + { + icon: , + title: 'Workflow automation', + description: 'Build event-triggered sequences with delays, conditions, and branching logic.', + }, + { + icon: , + title: 'Campaign broadcasts', + description: 'Send newsletters and announcements to your full list or a targeted segment.', + }, + { + icon: , + title: 'Unlimited contacts', + description: 'Store as many contacts as you need. Growing your list never costs more.', + }, + { + icon: , + title: 'Full API access', + description: 'REST API with SDKs for Node.js, Python, and more. Comprehensive documentation.', + }, + { + icon: , + title: 'Custom domains', + description: 'Send from your own domain with DKIM, SPF, and DMARC set up automatically.', + }, + { + icon: , + title: 'Audience segmentation', + description: 'Dynamic segments built on behavior, attributes, and engagement data.', + }, + { + icon: , + title: 'Analytics & tracking', + description: 'Opens, clicks, bounces, and unsubscribes. Real data, no guessing.', + }, + { + icon: , + title: 'Open source', + description: 'AGPL-3.0 licensed. Inspect the code, self-host it, or contribute to it.', + }, +]; + /** * */ -export default function Index() { +export default function Pricing() { return ( <> -
    -
    -
    -
    -

    - Simple, transparent pricing -

    -

    1,000 emails free every month. Then $0.001 per email. Unlimited contacts, no hidden fees.

    -
    +
    + {/* Hero */} +
    +
    - {/* Pricing Tiers */} -
    - {/* Free Tier */} - +

    + Simple, transparent pricing +

    +

    + 1,000 emails free every month. Then $0.001 per email. Unlimited contacts, no hidden fees. +

    +
    +
    + + {/* Pricing tiers */} +
    +
    + {/* Free */} + +

    Free forever

    +
    + 1,000 + emails / mo +
    +

    No credit card required

    + +
      + {['Transactional emails', 'Workflow automation', 'Campaign broadcasts', 'Custom domains', 'Click & open tracking', 'Unlimited contacts'].map(item => ( +
    • + + {item} +
    • + ))} +
    • + + Plunk branding on emails +
    • +
    + + -
    -
    + Start for free + + -
    -
    - Free Forever -
    + {/* Pay as you grow */} + +

    Pay as you grow

    +
    + $0.001 + / email +
    +

     

    -
    - 1,000 - emails -
    -

    per month

    +
      + {['Everything in Free', 'No Plunk branding', 'Monthly spend cap', 'Unlimited emails'].map(item => ( +
    • + + {item} +
    • + ))} +
    -
      -
    • - - - - Transactional emails -
    • -
    • - - - - Workflow automation -
    • -
    • - - - - Campaign broadcasts -
    • -
    • - - - - Custom domains -
    • -
    • - - - - Click & open tracking -
    • -
    • - - - - No credit card required -
    • -
    • - - - - Plunk branding -
    • -
    + + Get started - - Start for free - + +
    +
    +
    + + {/* Every feature included */} +
    + +

    + Every feature on every plan +

    +

    No feature tiers, no add-ons, no surprises

    +
    + +
    + {includedFeatures.map((feature, index) => ( + +
    + {feature.icon}
    +

    {feature.title}

    +

    {feature.description}

    + ))} +
    +
    - {/* Pay as you grow */} - -
    - Pay as you grow + {/* Self-host */} +
    + +
    +
    +
    + + Self-hostable
    - -
    - $0.001 - per email -
    -

    No contact limits, pay only for what you send

    - -
      -
    • - - - - Everything in Free -
    • -
    • - - - - No Plunk branding -
    • -
    • - - - - Monthly spend cap -
    • -
    • - - - - Unlimited emails -
    • -
    - - Run it on your own infrastructure +

    + Full data ownership, no per-email costs, and GDPR compliance by default. Deploy with Docker Compose in minutes. +

    +
    +
    + { + window.open('https://github.com/useplunk/plunk', '_blank'); + }} whileHover={{scale: 1.02}} whileTap={{scale: 0.98}} - className="mt-8 block w-full rounded-lg bg-neutral-900 px-6 py-3 text-center font-semibold text-white transition hover:bg-neutral-800" + className={'flex w-full items-center justify-center gap-x-3 rounded-lg bg-neutral-900 px-6 py-3 text-base font-semibold text-white transition hover:bg-neutral-800 sm:w-auto'} > - Start for free - - -
    - - {/* Features Grid */} -
    -

    Every feature on every plan

    -
    -
    -

    Unlimited emails

    -

    - Send unlimited transactional, campaign, and automated emails -

    -
    -
    -

    Unlimited contacts

    -

    - No limits on your audience size. Grow without restrictions -

    -
    -
    -

    Custom domains

    -

    Send from your own domain with full authentication

    -
    -
    -

    Analytics & tracking

    -

    Detailed metrics on opens, clicks, and conversions

    -
    -
    -

    Workflow automation

    -

    Build complex email sequences with visual editor

    -
    -
    -

    API access

    -

    Full REST API with comprehensive documentation

    -
    -
    - -
    -
    -
    -

    Self-host

    -

    - Run Plunk on your own infrastructure. Full data ownership, no per-email costs, and GDPR compliance by default. -

    -
    -
    - { - window.open('https://github.com/useplunk/plunk', '_blank'); - }} - whileHover={{scale: 1.02}} - whileTap={{scale: 0.98}} - className={ - 'flex w-full items-center justify-center gap-x-3 rounded-lg bg-neutral-900 px-6 py-3 text-base font-semibold text-white transition hover:bg-neutral-800 sm:w-auto' - } - > - - View GitHub - -
    -
    + + View on GitHub +
    -
    -
    -
    + + + + {/* CTA */} +
    +
    + +

    + Start sending in 5 minutes +

    +

    + 1,000 emails free every month. No credit card required. +

    +
    + + + Create free account + + + + + Self-host for free + +
    +
    +
    +