A powerful, full-featured Newsletter Management Platform built with React, TypeScript, and Sanity CMS. This application provides an end-to-end solution for managing subscribers, publishing content, designing email templates, and tracking performance — all from a modern, highly customizable admin interface.
Built using the Sanity App SDK, enabling deep customization of the admin experience with custom tools, workflows, and interfaces.
- Real-time visitor & subscriber statistics
- Post performance metrics (views, opens, clicks)
- Growth tracking with interactive charts
- Top-performing content insights
- Rich-text editor with Portable Text
- Draft & publish workflow
- Featured images with Sanity image optimization
- Author & tag management
- SEO metadata & excerpts
- Create & manage static pages
- Custom page layouts
- Navigation editor integration
- Full subscriber database (CRUD)
- Subscription lifecycle tracking
- Labels & segmentation
- Source tracking (web, email, social)
- Advanced filtering & search
- Automated email template generation
- Custom header & footer controls
- Latest posts auto-insertion
- Fully responsive email layout
- Site configuration
- Email customization
- Branding design editor
- Navigation management
- Frontend: React 19, TypeScript 5.1
- CMS: Sanity.io
- Email Engine: Custom email rendering
- Deployment: Vercel / Static Hosting
- Node.js v18+
- npm or yarn
- A Sanity.io account
git clone https://github.com/multidots/sanity-newsletter-appsdk.git
cd sanity-newsletter-appnpm installsrc/App.tsx
const sanityConfigs: SanityConfig[] = [
{
projectId: 'your-project-id',
dataset: 'production',
studioMode: {
enabled: true,
},
}
]src/lib/sanity-client.ts
const projectId = 'your-project-id'
const dataset = 'production'
const apiVersion = '2025-11-26'sanity.cli.ts
import { defineCliConfig } from 'sanity/cli'
export default defineCliConfig({
app: {
organizationId: 'your-organization-id',
entry: './src/App.tsx',
},
deployment: {
appId: 'your-app-id',
},
})npm run devApp will run at:
http://localhost:3333
{
name: 'post',
type: 'document',
fields: [
{ name: 'title', type: 'string' },
{ name: 'slug', type: 'slug' },
{ name: 'excerpt', type: 'text' },
{ name: 'body', type: 'array', of: [{ type: 'block' }] },
{ name: 'image', type: 'image' },
{ name: 'author', type: 'array', of: [{ type: 'reference', to: [{ type: 'author' }] }] },
{ name: 'tag', type: 'array', of: [{ type: 'reference', to: [{ type: 'tag' }] }] },
]
}{
name: 'member',
type: 'document',
fields: [
{ name: 'name', type: 'string' },
{ name: 'email', type: 'string' },
{ name: 'subscriptionStatus', type: 'string' },
{ name: 'subscriptionDate', type: 'datetime' },
{ name: 'source', type: 'string' },
{ name: 'notes', type: 'text' },
{ name: 'labels', type: 'array', of: [{ type: 'reference', to: [{ type: 'label' }] }] },
]
}{
name: 'author',
type: 'document',
fields: [
{ name: 'name', type: 'string' },
{ name: 'avatar', type: 'image' },
]
}{
name: 'tag',
type: 'document',
fields: [
{ name: 'title', type: 'string' },
{ name: 'slug', type: 'slug' },
]
}{
name: 'page',
type: 'document',
fields: [
{ name: 'title', type: 'string' },
{ name: 'slug', type: 'slug' },
{ name: 'body', type: 'array', of: [{ type: 'block' }] },
]
}{
name: 'siteSettings',
type: 'document',
fields: [
{ name: 'title', type: 'string' },
{ name: 'description', type: 'text' },
{ name: 'logo', type: 'image' },
]
}{
name: 'emailSettings',
type: 'document',
fields: [
{ name: 'header', type: 'object' },
{ name: 'titleSection', type: 'object' },
{ name: 'footer', type: 'object' },
]
}| Script | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Build for production |
npm run start |
Start production server |
- Connect repository to Vercel
- Vercel auto-detects configuration
- Deploy 🎉
Includes:
- Build command →
npm run build - Output directory →
dist - SPA routing via rewrites
npm run buildDeploy contents of dist/ to any static hosting provider.
| Variable | Purpose |
|---|---|
NEXT_PUBLIC_SITE_URL |
Public site URL for email templates |
NEXT_PUBLIC_VERCEL_URL |
Provided automatically by Vercel |
Dashboard
Post & Page Editor
Post Preview ( Web + Email )
Publish Workflow ( Web + Email )
Setting - Design Customize
Setting - Navigation
Setting - Email Setting
- Sanity Documentation
- Sanity SDK
- Create an issue in this repository
Sanity Newsletter App provides a production-ready content & newsletter platform built for scalability, speed, and editorial efficiency.
Built with ❤️ using Sanity and React






