Open Source
No platform fees. No subscriber limits. Write in markdown, deploy once, and let your course deliver automatically — on your schedule, in your subscribers' timezones.
MIT Licensed · Self-Hosted · No Vendor Lock-In
How It Works
Fork or clone the template. Standard Next.js — no custom tooling.
Create a content pack: markdown files with YAML frontmatter, a schedule, and an email shell.
Push to Vercel or any Node.js host. Set env vars. Done.
Subscribers choose their time. One lesson per day, in their timezone.
$
Content Packs
Focus on writing. We handle the delivery, scheduling, and unsubscribe links.
---
subject: "Day 1: Getting Started"
preview: "Your first lesson"
---
Good morning!
Today we're covering the
fundamentals of...
## The Key Idea
Content in **markdown**.
[Read online →]({{companionUrl}})Day 1: Getting Started
Your first lesson
Good morning!
Today we're covering the fundamentals of...
The Key Idea
{{companionUrl}}Web version of this lesson
{{assetUrl}}Base URL for pack assets
{{manageUrl}}Manage subscription page
{{pauseUrl}}Pause delivery one-click
{{stopUrl}}Unsubscribe one-click
Companion Pages
Every email becomes a permanent URL. Subscribers share content without forwarding emails. You keep control of formatting.
Go Deeper
Pages aren't limited to what fits in an email. Add images, embeds, extended writing — no inbox constraints.
Permanent URLs
Every page has a shareable link. Subscribers share content without forwarding emails.
Optional Per Lesson
Add a companion page to any lesson or skip it entirely. Each step decides for itself.
Multi-Pack
Each pack is fully independent. Own subscribers, own schedule, own branding. Deploy once, run as many courses as you want.
The Art of Mindful Productivity
/mindful-productivity
A free 5-day email course on building sustainable focus and productivity habits.
emails/
Deep Work Essentials
/deep-work
A free 2-day email course on mastering deep work.
emails/
Independent Subscribers
Each pack has its own subscriber list — no cross-talk, no shared state.
Namespaced URLs
Routes are scoped per pack. /mindful-productivity and /deep-work coexist cleanly.
Per-Pack Branding
Every pack gets its own email shell, colors, and companion page styling.
Features
📁 my-course/
├── pack.ts
├── email-shell.tsx
├── emails/
│ ├── welcome.md
│ └── day-1.md
└── pages/
└── day-1.mdContent Packs
Self-contained folders of markdown emails, web pages, and a branded email template.
Scheduled Delivery
Subscribers choose their delivery hour. Emails arrive at the exact time they chose. No batching.
Timezone Aware
8am means 8am wherever they are. Timezones are auto-detected and stored per subscription.
Companion Pages
Every email gets a web-readable page. Subscribers share links and read on any device — no inbox digging.
Email Branding
Each pack has its own React Email shell. Full control over headers, footers, typography, and colors.
Pause & Resume
One click to pause, pick up exactly where they left off.
Self-Serve Manage
Signed token links. No passwords, no accounts.
One-Click Unsub
Signed, cryptographically verified. Compliant out of the box.
Pluggable Adapters
Swap email providers with a single adapter. No vendor lock-in.
The Drip Flow
Every subscription follows the same lifecycle. Zero configuration.
Subscribe
Visitor enters email + preferred delivery time
Confirm
Signed token email → click to activate
Welcome
Sent immediately on confirmation
Drip
One lesson per day at the chosen time & timezone
Complete
Marked as completed after final step
Pause
Resume exactly where they left off
Unsubscribe
One-click, signed link, instant
Signed Tokens
Every action link (confirm, manage, pause, stop) uses a cryptographically signed, single-use token. No passwords, no sessions.
Idempotent Delivery
The send log tracks every email sent. If the cron job runs twice, the same step is never sent again. Safe to retry, safe to overlap.
Status Machine
Subscriptions move through PENDING_CONFIRM → ACTIVE → PAUSED → COMPLETED or STOPPED. Every transition is logged and auditable.
Your Design
No locked-down templates. Every surface is a React component you own.
Landing Page
Subscribe page, hero, social proof — all yours
Email Template
React Email shell — header, footer, styles
Companion Pages
Custom typography, layout, and navigation
Subscribe Form
Fields, validation, and styling — fully yours
export function EmailShell({ children, packName, accentColor, logoUrl }) {
return (
<Html> <Body> <Container>
<Header logo={logoUrl} /> // ← your component
{children}
<Footer />
</Container> </Body> </Html>
);
}Dev Mode
No waiting for real-time delivery. Fast-test mode compresses days into minutes so you can preview your entire course instantly.
Normal schedule
Fast-test mode
.env
DRIP_TIME_SCALE=14401 day → 1 minute
Test your entire 7-day course in 7 minutes.
Content Preview
A built-in dev tool that renders your entire course — emails and companion pages — exactly as subscribers will see them. Send test emails to yourself with one click.
Content Packs
my-course
System
Day 1: Getting Started
Your first lesson awaits
Live Rendering
Emails render in a sandboxed iframe using the same pipeline as production. Pages render as formatted prose.
Send Test Emails
Send any email to your inbox with one click. See exactly what your subscribers will receive — subject, preview, and all.
All Packs & Steps
Browse every registered pack, every email, every companion page, and system templates — all in one place.
Stack
Next.js
App Router, Server Actions, API Routes
React Email
Type-safe, cross-client email templates
Drizzle ORM
Type-safe SQL with zero-overhead
SQLite / Turso
Edge-ready, zero-config database
Postmark / Resend
Pluggable email adapters — bring your own provider
Tailwind CSS
Utility-first styling throughout
Why ContentDrip?
| Feature | SaaS Platforms | ContentDrip |
|---|---|---|
| Monthly fee | $29-$199/mo | $0 (hosting only) |
| Subscriber limits | 500-10K cap | Unlimited |
| Design control | Templates only | Full React codebase |
| Data ownership | Platform owns | You own everything |
| Email portability | Export CSV | Git repo |
The Real Difference
Email platforms rent you their infrastructure. ContentDrip gives you the source code. When you clone the repo, you own the entire stack — database schema, email templates, subscriber management, everything. No API calls to a third party. No monthly fees that scale with your success.
Clone the repo, write your first lesson, deploy to Vercel. No credit card. No setup wizard. Just code.