<p align="center">
  <img src="docs/docs/content/images/logo.svg" alt="EagleCast" width="240" />
</p>

# EagleCast

**EagleCast** is a standalone, self-hosted newsletter and mailing list manager with a sharp eye and serious wingspan. It is fast, feature-rich, and packed into a single binary. It uses a PostgreSQL database as its data store.

Send campaigns that soar: manage millions of subscribers across lists, run opt-in and transactional mailing, template with precision, and track every landing — all from one nest.

## Features

- Multiple lists, single and double opt-in
- Powerful subscriber querying and segmentation with SQL
- Rich campaign templating (HTML, Markdown, plain text, and a visual builder)
- Transactional mailing API
- Bounce processing (SES, SendGrid, Postmark, Forward Email, POP3, and more)
- Media management with filesystem or S3 storage
- Multi-user support with roles and granular permissions
- OIDC single sign-on
- Public archive pages and RSS
- Available in 35+ languages

## Installation

### Docker

The image is on the Gitea registry at `source.offmarket.win/aleagle/eaglecast:latest`.
Download the sample [docker-compose.yml](docker-compose.yml) and run:

```shell
# Run the services in the background.
docker compose up -d
```

To build the image yourself instead: `docker build -t source.offmarket.win/aleagle/eaglecast:latest .`

Visit `http://localhost:9000`

__________________

### Binary
- Build from source with `make dist` (requires `go`, `nodejs`, and `yarn`), producing the `eaglecast` binary.
- `./eaglecast --new-config` to generate config.toml. Edit it.
- `./eaglecast --install` to setup the Postgres DB (or `--upgrade` to upgrade an existing DB. Upgrades are idempotent and running them multiple times have no side effects).
- Run `./eaglecast` and visit `http://localhost:9000`

Full documentation lives in [docs/docs/content](docs/docs/content).
__________________


## Developers
The backend is written in Go and the frontend is Vue with Buefy for UI. See the [developer setup](docs/docs/content/developer-setup.md) to get airborne.

## License
EagleCast is licensed under the AGPL v3 license. It is a derivative work of the
[listmonk](https://listmonk.app) project — see [NOTICE](NOTICE) for attribution. The complete
source code is publicly available at
[source.offmarket.win/aleagle/EagleCast](https://source.offmarket.win/aleagle/EagleCast).
