MCPcopy
hub / github.com/Notifuse/notifuse

github.com/Notifuse/notifuse @v34.1 sqlite

repository ↗ · DeepWiki ↗ · release v34.1 ↗
13,211 symbols 68,145 edges 1,224 files 5,957 documented · 45%
README

Notifuse

Go Report Card Go codecov

☁️ Notifuse Cloud — from $16/month · 🎯 Try the Live Demo

Skip the setup and get started instantly with Notifuse Cloud — fully managed hosting starting at just $16/month.

The open-source alternative to Mailchimp, Brevo, Mailjet, Listmonk, Mailerlite, and Klaviyo, Loop.so, etc.

Notifuse is a modern, self-hosted emailing platform that allows you to send newsletters and transactional emails at a fraction of the cost. Built with Go and React, it provides enterprise-grade features with the flexibility of open-source software.

Email Editor

🚀 Key Features

📧 Email Marketing

  • Visual Email Builder: Drag-and-drop editor with MJML components and real-time preview
  • Campaign Management: Create, schedule, and send targeted email campaigns
  • A/B Testing: Optimize campaigns with built-in testing for subject lines, content, and send times
  • List Management: Advanced subscriber segmentation and list organization
  • Contact Profiles: Rich contact management with custom fields and detailed profiles

🔧 Developer-Friendly

  • Easy Setup: Interactive setup wizard for quick deployment and configuration
  • Transactional API: Powerful REST API for automated email delivery
  • Webhook Integration: Real-time event notifications and integrations
  • Liquid Templating: Dynamic content with variables like {{ contact.first_name }}
  • Multi-Provider Support: Connect with Amazon SES, Mailgun, Postmark, Mailjet, SparkPost, and SMTP

📊 Analytics & Insights

  • Open & Click Tracking: Detailed engagement metrics and campaign performance
  • Real-time Analytics: Monitor delivery rates, opens, clicks, and conversions
  • Campaign Reports: Comprehensive reporting and analytics dashboard

🎨 Advanced Features

  • S3 File Manager: Integrated file management with CDN delivery
  • Notification Center: Centralized notification system for your applications
  • Responsive Templates: Mobile-optimized email templates
  • Custom Fields: Flexible contact data management
  • Workspace Management: Multi-tenant support for teams and agencies

🏗️ Architecture

Notifuse follows clean architecture principles with clear separation of concerns:

Backend (Go)

  • Domain Layer: Core business logic and entities (internal/domain/)
  • Service Layer: Business logic implementation (internal/service/)
  • Repository Layer: Data access and storage (internal/repository/)
  • HTTP Layer: API handlers and middleware (internal/http/)

Frontend (React)

  • Console: Admin interface built with React, Ant Design, and TypeScript (console/)
  • Notification Center: Embeddable widget for customer notifications (notification_center/)

Database

  • PostgreSQL: Primary data storage with Squirrel query builder

📁 Project Structure

├── cmd/                    # Application entry points
├── internal/               # Private application code
│   ├── domain/            # Business entities and logic
│   ├── service/           # Business logic implementation
│   ├── repository/        # Data access layer
│   ├── http/              # HTTP handlers and middleware
│   └── database/          # Database configuration
├── console/               # React-based admin interface
├── notification_center/   # Embeddable notification widget
├── pkg/                   # Public packages
└── config/                # Configuration files

📚 Documentation

🤝 Contributing

Note: We prefer well-described issues over pull requests. If you have a feature idea or found a bug, please open an issue first with a clear description of the problem or enhancement. This allows for discussion before implementation.

By submitting a pull request to this repository, you agree to transfer all intellectual property rights of your contribution to the repository owner. Your contribution will be licensed under the same terms as the project.

📄 License

Notifuse is released under the GNU Affero General Public License v3.0.

🆘 Support

🌟 Why Choose Notifuse?

  • 💰 Cost-Effective: Self-hosted solution with no per-email pricing
  • 🔒 Privacy-First: Your data stays on your infrastructure
  • 🛠️ Customizable: Open-source with extensive customization options
  • 📈 Scalable: Built to handle millions of emails
  • 🚀 Modern: Built with modern technologies and best practices
  • 🔧 Developer-Friendly: Comprehensive API and webhook support

Ready to get started? Try the live demo or deploy your own instance in minutes.

Extension points exported contracts — how you extend this code

Logger (Interface)
go:generate mockgen -destination=../mocks/mock_logger.go -package=pkgmocks github.com/Notifuse/notifuse/pkg/logger Logge [8 …
pkg/logger/logger.go
AppShutdowner (Interface)
AppShutdowner defines the interface for triggering app shutdown [7 implementers]
internal/http/setup_handler.go
NodeExecutor (Interface)
NodeExecutor executes a specific node type [11 implementers]
internal/service/automation_node_executor.go
ContactTimelineService (Interface)
ContactTimelineService defines business logic for contact timeline [31 implementers]
internal/domain/contact_timeline.go
MajorMigrationInterface (Interface)
MajorMigrationInterface defines a major version migration [32 implementers]
internal/migrations/interfaces.go
Mailer (Interface)
go:generate mockgen -destination=../mocks/mock_mailer.go -package=pkgmocks github.com/Notifuse/notifuse/pkg/mailer Maile [5 …
pkg/mailer/mailer.go
IOperator (Interface)
(no doc) [11 implementers]
console/src/services/api/segment.ts
Cache (Interface)
Cache is a generic interface for caching operations Implementations can be in-memory, Redis, or any other backing store [3 …
pkg/cache/cache.go

Core symbols most depended-on inside this repo

Error
called by 6239
pkg/logger/logger.go
t
called by 3747
notification_center/src/App.tsx
Close
called by 1875
pkg/database/connection_manager.go
Now
called by 1816
internal/service/broadcast/time_provider.go
EXPECT
called by 1749
pkg/mocks/mock_logger.go
WithField
called by 1647
pkg/logger/logger.go
EXPECT
called by 1436
internal/service/broadcast/mocks/mock_time_provider.go
EXPECT
called by 805
internal/domain/mocks/mock_workspace_repository.go

Shape

Function 6,416
Method 4,678
Struct 1,041
Interface 901
Class 95
TypeAlias 52
FuncType 27
Enum 1

Languages

Go79%
TypeScript21%

Modules by API surface

tests/testutil/factory.go193 symbols
internal/domain/blog.go147 symbols
internal/domain/workspace.go134 symbols
internal/service/broadcast_service_test.go115 symbols
internal/domain/automation.go110 symbols
pkg/notifuse_mjml/model.go104 symbols
internal/domain/broadcast.go102 symbols
tests/testutil/client.go98 symbols
internal/service/ses_service_test.go96 symbols
internal/service/automation_node_executor_test.go92 symbols
internal/app/app.go86 symbols
internal/http/workspace_handler_test.go80 symbols

Dependencies from manifests, versioned

cloud.google.com/gov0.120.0 · 1×
cloud.google.com/go/auth/oauth2adaptv0.2.8 · 1×
cloud.google.com/go/compute/metadatav0.9.0 · 1×
cloud.google.com/go/loggingv1.13.0 · 1×
cloud.google.com/go/longrunningv0.6.2 · 1×
cloud.google.com/go/monitoringv1.24.3 · 1×
cloud.google.com/go/tracev1.11.7 · 1×
contrib.go.opencensus.io/exporter/awsv0.0.0-2023050219210 · 1×
contrib.go.opencensus.io/exporter/stackdriverv0.13.14 · 1×

Datastores touched

postgresDatabase · 1 repos
_ws_workspace_idDatabase · 1 repos
app_ws_workspace_with_hyphens_123Database · 1 repos
dbDatabase · 1 repos
my-databaseDatabase · 1 repos
myapp_ws_test_workspace_abc_123_defDatabase · 1 repos
notifuse_ws_workspace123Database · 1 repos
testdbDatabase · 1 repos

For agents

$ claude mcp add notifuse \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact