High performance, self-hosted, newsletter and mailing list manager with a modern dashboard. Single binary app.
Find a file
Kailash Nadh e89a54b957 Refactor and add new build routines
- Fix version injection in build
- Refactor Makefile
- Add --new-config flag to generate sample config
- Add license
- Remove autogenerated frontend README
- Refactor make dist to do end-to-end build
- Refactor build and add goreleaser conf
2019-07-09 15:57:04 +05:30
email-templates Add embedding of static assets for standalone dist binary 2019-01-03 16:48:47 +05:30
frontend Refactor and add new build routines 2019-07-09 15:57:04 +05:30
manager Refactor TrackLink template function to accept backticks 2018-12-19 12:28:52 +05:30
messenger Replace viper with koanf 2019-06-26 16:53:23 +05:30
models Add pagination to the lists page 2019-05-14 16:41:05 +05:30
public Add embedding of static assets for standalone dist binary 2019-01-03 16:48:47 +05:30
subimporter Update list date on import before notif and run notif as a goroutine 2019-05-14 22:18:18 +05:30
.gitignore Refactor README for publishing 2019-06-26 16:05:50 +05:30
.goreleaser.yml Refactor and add new build routines 2019-07-09 15:57:04 +05:30
admin.go Rename 'runner.Runner' to 'manager.Manager' 2018-12-19 12:03:13 +05:30
campaigns.go Optimize campaign and subscriber queries 2019-04-01 17:07:24 +05:30
config.toml.sample feat: add config to enable/disable postgres ssl mode 2019-05-27 17:16:46 +05:30
go.mod Update dependencies 2019-07-05 14:18:50 +05:30
go.sum Update dependencies 2019-07-05 14:18:50 +05:30
handlers.go Remove stub user features and handlers. 2019-06-26 16:22:47 +05:30
import.go Refactor and fix importer state bugs 2019-04-03 14:08:31 +05:30
install.go Refactor and add new build routines 2019-07-09 15:57:04 +05:30
LICENSE Refactor and add new build routines 2019-07-09 15:57:04 +05:30
lists.go Add pagination to the lists page 2019-05-14 16:41:05 +05:30
main.go Refactor and add new build routines 2019-07-09 15:57:04 +05:30
Makefile Refactor and add new build routines 2019-07-09 15:57:04 +05:30
manager_db.go Refactor campaigns query into two: 'query' and 'get' 2019-03-30 12:38:02 +05:30
media.go Fresh start 2018-10-25 19:21:47 +05:30
notifications.go Add admin e-mail notifications. 2018-11-28 13:29:57 +05:30
public.go Add embedding of static assets for standalone dist binary 2019-01-03 16:48:47 +05:30
queries.go Remove stub user features and handlers. 2019-06-26 16:22:47 +05:30
queries.sql Fix import and campaign page and integrate new paginated lists API 2019-05-14 22:06:14 +05:30
README.md Refactor and add new build routines 2019-07-09 15:57:04 +05:30
schema.sql Remove stub user features and handlers. 2019-06-26 16:22:47 +05:30
stats.sql Add support for campaign view tracking with {{ TrackView }} pixel tag 2018-11-02 13:20:32 +05:30
subscribers.go Add basic sanitisation to subscriber query expressions 2019-07-04 17:40:55 +05:30
templates.go Remove redundant error wrapper 2018-12-26 15:38:08 +05:30
TODO.md Add TODO 2019-04-07 09:42:50 +05:30
utils.go Add bulk subscriber querying, segmentation, and management features 2018-12-18 10:54:55 +05:30

listmonk

listmonk is alpha software and may change and break. Use with caution. That said, it has been in active use at zerodha.com for several months where it has processed hundreds of campaigns and tens of millions of e-mails.

listmonk is a standalone newsletter and mailing list manager written in Go. It is fast, performant, and comes as a single binary. It uses a PostgreSQL database as its data store.

Installation and use

  • Download the latest release and extract the listmonk binary somewhere.
  • Run ./listmonk --new-config to generate a sample config.toml and add your configuration (SMTP and Postgres DB credentials primarily).
  • ./listmonk --install to setup the DB.
  • Visit http://localhost:9000.
  • Since there is no user auth yet, it's best to put listmonk behind a proxy like Nginx and setup basicauth on all endpoints except for the few endpoints that need to be public. Here is a sample nginx config for production use.

Current features

  • Admin dashboard
  • Multiple public and private lists
  • Fast bulk subscriber import
  • Custom subscriber attributes
  • Subscriber querying and segmentation with ad-hoc SQL
  • Rich Go templates and WYSIWYG editor
  • Media gallery
  • Multi-threaded multi-SMTP e-mail queues for fast campaign delivery
  • HTTP/JSON APIs for everything
  • Clicks and view tracking
  • and more ...

Todo

  • DB migrations
  • Bounce tracking
  • User auth, management, permissions
  • Privacy features for subscribers (Download and wipe all tracking data)
  • Ability to write raw campaign logs to a target
  • Analytics views and reports
  • Make Ant design UI components responsive
  • Better widgets on dashboard
  • Tests!

Developers

listmonk is free, open source software licensed under AGPLv3. There are a few of essential features such as user auth/management and bounce tracking that are currently missing. Contributions are welcome.

The backend is written in Go and the frontend is in React with Ant Design for UI. See developer setup to get started.

License

listmonk is licensed under the AGPL v3 license.