diff --git a/.windsurfrules b/.windsurfrules
deleted file mode 100644
index 2117545..0000000
--- a/.windsurfrules
+++ /dev/null
@@ -1,13 +0,0 @@
-You are a Staff Engineer and an Expert in ReactJS, NextJS, JavaScript, TypeScript, HTML, CSS, NodeJS, Prisma, Postgres, and modern UI/UX frameworks (e.g., TailwindCSS, Shadcn, Radix). You are also great at scalling things. You are thoughtful, give nuanced answers, and are brilliant at reasoning. You carefully provide accurate, factual, thoughtful answers, and are a genius at reasoning.
-
-- Follow the user’s requirements carefully & to the letter.
-- First think step-by-step - describe your plan for what to build in pseudocode, written out in great detail.
-- Always write correct, best practice, bug free, fully functional and working code also it should be aligned to listed rules down below at Code Implementation Guidelines .
-- Focus on easy and readability code, over being performant.
-- Fully implement all requested functionality.
-- Leave NO todo’s, placeholders or missing pieces.
-- Ensure code is complete! Verify thoroughly finalised.
-- Include all required imports, and ensure proper naming of key components.
-- Be concise Minimize any other prose.
-- If you think there might not be a correct answer, you say so.
-- If you do not know the answer, say so, instead of guessing.
diff --git a/apps/marketing/public/hero-dark.png b/apps/marketing/public/hero-dark.png
new file mode 100644
index 0000000..cc31395
Binary files /dev/null and b/apps/marketing/public/hero-dark.png differ
diff --git a/apps/marketing/public/hero-light.png b/apps/marketing/public/hero-light.png
new file mode 100644
index 0000000..04be634
Binary files /dev/null and b/apps/marketing/public/hero-light.png differ
diff --git a/apps/marketing/src/app/layout.tsx b/apps/marketing/src/app/layout.tsx
index ef38178..78f98ac 100644
--- a/apps/marketing/src/app/layout.tsx
+++ b/apps/marketing/src/app/layout.tsx
@@ -16,9 +16,35 @@ const jetbrainsMono = JetBrains_Mono({
});
export const metadata: Metadata = {
- title: "useSend - Open source email platform",
- description: "Open source email platform for everyone",
+ title: "useSend – Open source email platform",
+ description:
+ "Open source email platform for everyone: SMTP, API, editor, analytics.",
icons: [{ rel: "icon", url: "/favicon.ico" }],
+ metadataBase: new URL("https://usesend.com"),
+ openGraph: {
+ title: "useSend – Open source email platform",
+ description:
+ "Open source email platform for everyone: SMTP, API, editor, analytics.",
+ url: "https://usesend.com",
+ siteName: "useSend",
+ images: [
+ {
+ url: "/logo-squircle.png",
+ width: 512,
+ height: 512,
+ alt: "useSend",
+ },
+ ],
+ locale: "en_US",
+ type: "website",
+ },
+ twitter: {
+ card: "summary_large_image",
+ title: "useSend – Open source email platform",
+ description:
+ "Open source email platform for everyone: SMTP, API, editor, analytics.",
+ images: ["/logo-squircle.png"],
+ },
};
export default function RootLayout({
@@ -27,11 +53,17 @@ export default function RootLayout({
children: React.ReactNode;
}) {
return (
-
+
-
+ {/* System theme with isolated storage to avoid stale overrides */}
+
{children}
diff --git a/apps/marketing/src/app/page.tsx b/apps/marketing/src/app/page.tsx
index c15ca94..21bc427 100644
--- a/apps/marketing/src/app/page.tsx
+++ b/apps/marketing/src/app/page.tsx
@@ -1,27 +1,532 @@
import Image from "next/image";
+import Link from "next/link";
import { GitHubStarsButton } from "~/components/GitHubStarsButton";
+import { Button } from "@usesend/ui/src/button";
+import { TopNav } from "~/components/TopNav";
+import { FeatureCard } from "~/components/FeatureCard";
+import { FeatureCardPlain } from "~/components/FeatureCardPlain";
+import { CodeBlock } from "@usesend/ui/src/code-block";
+
+const REPO = "unsend-dev/unsend";
+const REPO_URL = `https://github.com/${REPO}`;
+const APP_URL = "https://app.usesend.com";
export default function Page() {
return (
-
-
+ Send product, transactional and marketing emails.{" "}
+
+ Pay only for what you send
+ {" "}
+ and not for storing contacts. Open source and self-hostable.
+
+
+
+
+
+
+
+
+
+ Open source • Self-host in minutes • Free tier
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+// TopNav moved to a dedicated client component in ~/components/TopNav
+
+function TrustedBy() {
+ const featured = [
+ {
+ quote:
+ "Transitioned recently to open source email sender useSend for our 30k and growing newsletter. It's such a great product and amazing oss experience.",
+ author: "Marc Seitz",
+ company: "papermark.com",
+ image:
+ "https://pbs.twimg.com/profile_images/1176854646343852032/iYnUXJ-m_400x400.jpg",
+ },
+ {
+ quote:
+ "useSend was extremely easy to set up, and I love that it's open source. Koushik has been an absolute awesome person to deal with and helps us with any issues or feedback.",
+ author: "Tommerty",
+ company: "doras.to",
+ image:
+ "https://cdn.doras.to/doras/user/83bda65b-8d42-4011-9bf0-ab23402776f2-0.890688178917765.webp",
+ },
+ ];
+
+ const quick = [
+ {
+ quote: "don't sleep on useSend",
+ author: "shellscape",
+ company: "jsx.email",
+ image:
+ "https://pbs.twimg.com/profile_images/1698447401781022720/b0DZSc_D_400x400.jpg",
+ },
+ {
+ quote: "Thank you for making useSend!",
+ author: "Andras Bacsai",
+ company: "coolify.io",
+ image:
+ "https://pbs.twimg.com/profile_images/1884210412524027905/jW4NB4rx_400x400.jpg",
+ },
+ {
+ quote: "I KNOW WHAT TO DO",
+ author: "VicVijayakumar",
+ company: "onetimefax.com",
+ image:
+ "https://pbs.twimg.com/profile_images/1665351804685524995/W4BpDx5Z_400x400.jpg",
+ },
+ ];
+
+ return (
+
+
+
+ );
+}
+
+function Features() {
+ // Top: 2 cards (with image area) — Analytics, Editor
+ const top = [
+ {
+ key: "feature-analytics",
+ title: "Analytics",
+ content:
+ "Track deliveries, opens, clicks, bounces and unsubscribes in real time with a simple, searchable log. Filter by domain, status, api key and export them. Track which campaigns perform best.",
+ imageSrc: "", // add an image like "/analytics.png"
+ },
+ {
+ key: "feature-editor",
+ title: "Marketing Email Editor",
+ content:
+ "Design beautiful campaigns without code using a visual, notion like WYSIWYG editor that works in major email clients. Reuse templates and brand styles, and personalize with variables.",
+ imageSrc: "", // add an image like "/editor.png"
+ },
+ ];
+
+ // Bottom: 3 cards (no images) — Contact Management, Suppression List, SMTP Relay Service
+ const bottom = [
+ {
+ key: "feature-contacts",
+ title: "Contact Management",
+ content:
+ "Manage contacts, lists, and consent in one place. Import and export easily, keep per-list subscription status. Contacts are automatically updated from bounces and complaints.",
+ },
+ {
+ key: "feature-suppression",
+ title: "Suppression List",
+ content:
+ "Prevent accidental sends. Automatically populated from bounces and complaints, and manage via import/export or API. Works with transactional and marketing emails.",
+ },
+ {
+ key: "feature-smtp",
+ title: "SMTP Relay",
+ content:
+ "Drop-in SMTP relay that works with any app or framework. Do not get vendor lock-in. Comes in handy with services like Supabase",
+ },
+ ];
+
+ return (
+
+
+
+
+ Features
+
+
+
+ {/* Top row: 2 side-by-side cards with images */}
+
+ As most of email products out there, useSend also uses Amazon SES
+ under the hood to send emails. We provide an open and alternative
+ way to send emails reliably and cheaply with a great dashboard.
+
+
+ useSend is bootstrapped and funded by the cloud offering and
+ sponsors. If you self host useSend, please consider{" "}
+
+ sponsoring us
+
+ .
+
+ This Privacy Policy explains how we collect, use, and share
+ information when you visit or interact with the useSend marketing
+ website at usesend.com. It also summarizes the limited information we
+ process when you sign up for our product and receive transactional or
+ occasional marketing emails.
+
+
+
+
Who We Are
+
+ useSend ("we", "us") operates the marketing website at
+ usesend.com. The marketing
+ site is hosted on Vercel. Our application is hosted on Railway. We
+ are the controller of the information described in this policy for
+ the marketing site. If you have questions about this policy or your
+ data, contact us at
+
+ hey@usesend.com
+
+ .
+
+
+
+
+
What We Collect
+
+
+
+ Usage and device data (marketing site):
+ {" "}
+ We use Simple Analytics to understand overall traffic and usage
+ patterns (e.g., pages visited, referrers, device type). Simple
+ Analytics is a privacy‑friendly analytics provider and does not
+ use cookies for tracking. Data is aggregated and not used to
+ identify you.
+
+
+ Server and security logs:{" "}
+ Our hosting providers (Vercel for the marketing site; Railway for
+ the app) may process IP addresses and basic request metadata
+ transiently for security, reliability, and debugging.
+
+
+
+ Account and email data (product):
+ {" "}
+ If you sign up for useSend, we process your account information
+ and send transactional emails. If you opt in, we may also send
+ occasional marketing emails. You can unsubscribe at any time via
+ the link in those emails.
+
+
+
+
+
+
How We Use Information
+
+
Operate, secure, and maintain the marketing site and app.
+
+ Understand aggregated usage to improve performance and content.
+
+
+ Deliver transactional emails related to your account or use.
+
+
Send occasional marketing emails to subscribers who opt in.
+
Comply with legal obligations and enforce our terms.
+
+
+
+
+
Legal Bases
+
+ Where applicable (e.g., in the EEA/UK), we rely on legitimate
+ interests to operate and secure our services and to measure
+ aggregated site usage, and on your consent for marketing emails. We
+ may rely on contract and legal obligation where relevant.
+
+
+
+
+
Sharing and Processors
+
+ We share information with service providers who process data on our
+ behalf, including:
+
+
+
+ Hosting: Vercel
+ (marketing site) and Railway (application) for serving content,
+ networking, and security.
+
+
+ Analytics: Simple
+ Analytics for aggregated, privacy‑friendly usage metrics on the
+ marketing site.
+
+
+ Email delivery: We send
+ transactional emails and, for subscribers who opt in, occasional
+ marketing emails.
+
+
+
+ We do not sell your personal information. We may disclose
+ information if required by law or to protect our rights, users, or
+ the public.
+
+
+
+
+
Retention
+
+ We retain information only for as long as necessary to fulfill the
+ purposes described in this policy, including security, analytics,
+ and legal compliance. Aggregated analytics do not identify
+ individuals.
+
+
+
+
+
International Transfers
+
+ Our providers may process data in locations outside of your country
+ of residence. Where required, we implement appropriate safeguards
+ for cross‑border transfers.
+
+
+
+
+
Your Rights
+
+ Depending on your location, you may have rights to access, correct,
+ delete, or export your information; to object to or restrict certain
+ processing; and to withdraw consent where processing is based on
+ consent. To exercise these rights, contact us using the details on
+ our website. We may ask you to verify your identity before acting on
+ a request.
+
+ Our services are not directed to children, and we do not knowingly
+ collect personal information from children.
+
+
+
+
+
Changes
+
+ We may update this policy from time to time. The "Last updated" date
+ below reflects the most recent changes.
+
+
+
+
+ Last updated: {new Date().toLocaleDateString()}
+
+
+
+ );
+}
diff --git a/apps/marketing/src/app/terms/page.tsx b/apps/marketing/src/app/terms/page.tsx
new file mode 100644
index 0000000..39828f0
--- /dev/null
+++ b/apps/marketing/src/app/terms/page.tsx
@@ -0,0 +1,124 @@
+import type { Metadata } from "next";
+import { TopNav } from "~/components/TopNav";
+
+export const metadata: Metadata = {
+ title: "Terms of Service – useSend",
+ description: "Terms governing use of the useSend website and product.",
+};
+
+export default function TermsPage() {
+ return (
+
+
+
+
Terms of Service
+
+ These Terms of Service ("Terms") govern your access to and use of the
+ useSend marketing website at usesend.com and the useSend application.
+ By accessing or using our site or product, you agree to be bound by
+ these Terms.
+
+
+
+
Eligibility & Accounts
+
+ You may use the site and product only if you can form a binding
+ contract with useSend and are not barred from doing so under any
+ applicable laws. You are responsible for maintaining the security of
+ your account credentials and for all activity under your account.
+
+
+
+
+
Acceptable Use
+
+ You agree not to misuse the site or product. Prohibited conduct
+ includes, without limitation:
+
+
+
Violating any applicable laws or regulations.
+
Infringing the rights of others or violating their privacy.
+
Attempting to interfere with or disrupt the services.
+
+ Uploading or transmitting malicious code, spam, or prohibited
+ content.
+
+
+
+
+
+
Intellectual Property
+
+ Content on the site, including trademarks, logos, text, and
+ graphics, is owned by or licensed to useSend and protected by
+ intellectual property laws. You may not use our marks without our
+ prior written permission.
+
+
+
+
+
Third‑Party Links
+
+ The site may contain links to third‑party websites or services we do
+ not control. We are not responsible for their content or practices.
+
+
+
+
+
Disclaimer
+
+ The site is provided on an "as is" and "as available" basis without
+ warranties of any kind, express or implied.
+
+
+
+
+
Limitation of Liability
+
+ To the fullest extent permitted by law, useSend shall not be liable
+ for any indirect, incidental, special, consequential or punitive
+ damages, or any loss of profits or revenues.
+
+
+
+
+
Indemnification
+
+ You agree to indemnify and hold harmless useSend from any claims,
+ damages, liabilities, and expenses arising out of your use of the
+ site or product or your violation of these Terms.
+
+
+
+
+
Changes & Availability
+
+ We may modify these Terms and update the site or product at any
+ time. Changes are effective when posted. We may suspend or
+ discontinue the site or product in whole or in part.
+
+
+
+
+
Governing Law
+
+ These Terms are governed by applicable laws without regard to
+ conflict‑of‑law principles. Where required, disputes will be subject
+ to the jurisdiction of competent courts in your place of residence
+ or as otherwise mandated by law.
+
+
+
+
+
Contact
+
+ Questions about these Terms? Contact us at
+ hey@usesend.com.
+