diff --git a/.gitignore b/.gitignore index 4edb754..7259656 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ frontend/yarn.lock .vscode/ config.toml +node_modules diff --git a/README.dev.md b/README.dev.md deleted file mode 100644 index 31d7072..0000000 --- a/README.dev.md +++ /dev/null @@ -1,82 +0,0 @@ -# Dev - -There are two independent components, the Go backend and the React frontend. In the dev environment, both have to run. - -### First time setup - -1. Write `config.toml` -2. Run `listmonk --install` to do the DB setup. - -# Dev environment - -### 1. Run the backend - -`make deps` (once, to install dependencies) and then `make run` - -### 2. Run the frontend - -`cd frontend` and `yarn start` - -### 3. Setup an Nginx proxy endpoint - -``` -# listmonk -server { - listen 9001; - - # Proxy all /api/* requests to the Go backend. - location /api { - proxy_pass http://localhost:9000; - } - - # Proxy everything else to the yarn server - # that's running the React frontend. - location / { - proxy_pass http://localhost:3000; - } -} - -``` - -Visit `http://localhost:9001` to access the frontend running in development mode where Javascript updates are pushed live. - -# Production - -1. To build the Javascript frontend, run `make build-frontend`. This only needs to be run if the frontend has changed. - -2. `make build` builds a single production ready binary with all static assets embeded in it. Make sure to have installed the dependencies with `make deps` once. - ---- - -# TODO: Essentials for v0.10 - -- update list time after import -- dockerize -- add an http call to do version checks and alerts -- make the design responsive -- error pause should be % and not absolute -- views for faster dashboard analytics -- bounce processing -- docs -- tests - -### Features - -- running campaigns widget on the dashboard -- analytics -- GDPR - -# Features - -Features - -- userdb -- campaign error logs -- upgrade + migration -- views for fast analytics widgets - -- tab navigation in links and buttons -- inject semver into build version -- permalink for lists -- props.config race condition -- app.Messenger is flawed. Add multi-messenger support to app as well. diff --git a/README.md b/README.md index a2e7427..d22797d 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,45 @@ -# listmonk +![listmonk](https://user-images.githubusercontent.com/547147/60170989-41681f00-9827-11e9-93a8-a871a40be913.png) -See [developer README](README.dev.md). +> listmonk is **alpha** software and may change and break. Use with caution. That said, it has been in active use at [zerodha.com](https://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](https://github.com/knadh/listmonk/releases) and extract the listmonk binary somewhere. +- Copy `config.toml.sample` to `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](https://github.com/knadh/listmonk/wiki/Production-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](https://github.com/knadh/listmonk/wiki/Developer-setup) to get started.