SendFlow is a modern, self-hosted, local-first email marketing platform designed for developers and modern teams. It empowers you to connect unlimited SMTP servers, design beautiful email templates, and manage vast subscriber lists directly from your own machine—freeing you from expensive, restrictive SaaS platforms.
- Unlimited SMTP Servers: Connect and cycle through multiple SMTP providers (AWS SES, SendGrid, Mailgun) for optimal deliverability.
- Local-First Architecture: Your subscriber data and templates never leave your machine unless you send an email. All data is securely stored in a local SQLite database.
- Stunning UI/UX: A highly polished, intuitive interface built with Next.js, Tailwind CSS, and Framer Motion.
- Analytics & Tracking: Built-in open and click tracking so you can measure campaign performance.
- 100% Free & Open Source: Run enterprise-grade email marketing completely free of charge.
- Node.js (v18 or higher)
- npm or yarn
-
Clone the repository:
git clone https://github.com/BuildByAman/Sendflow.git cd sendflow -
Install dependencies:
npm install
-
Set up the database:
npx prisma db push
-
Start the development server:
npm run dev
Your app will be available at
http://localhost:3000/.
SendFlow is designed to be self-hosted on a standard Virtual Private Server (VPS) like AWS EC2, Hetzner, or DigitalOcean so you can utilize the full power of standard SMTP sockets without restrictions.
- An AWS EC2 instance (Ubuntu 22.04/24.04 recommended).
- SSH access to your server.
SSH into your server and run the following commands to install dependencies, build the app, and run it 24/7 with PM2.
# 1. Update system and install Node.js v20, Git, Nginx, and PM2
sudo apt update && sudo apt upgrade -y
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs git nginx
sudo npm install -g pm2
# 2. Clone your repository
git clone https://github.com/BuildByAman/Sendflow.git
cd Sendflow
# 3. Install dependencies and setup the database
npm install
npx prisma generate
npx prisma db push
# 4. Create a production build
npm run build
# 5. Start the app with PM2 (Crash Protection)
pm2 start npm --name "sendflow" -- run start
pm2 save
pm2 startupBy default, the app runs on Port 3000. You should configure Nginx as a reverse proxy to route Port 80 to Port 3000, and use Cloudflare for DNS and SSL.
Built with ❤️ by Amanblaze