Developer setup¶
The app has two distinct components, the Go backend and the VueJS frontend. In the dev environment, both are run independently.
Pre-requisites¶
go
nodejs
(if you are working on the frontend) andyarn
- Postgres database. If there is no local installation, the demo docker DB can be used for development (
docker compose up demo-db
)
First time setup¶
git clone https://github.com/knadh/listmonk.git
. The project uses go.mod, so it's best to clone it outside the Go src path.
- Copy
config.toml.sample
asconfig.toml
and add your config. make dist
to build the listmonk binary. Once the binary is built, run./listmonk --install
to run the DB setup. For subsequent dev runs, usemake run
.
mailhog is an excellent standalone mock SMTP server (with a UI) for testing and dev.
Running the dev environment¶
You can run your dev environment locally or inside containers.
After setting up the dev environment, you can visit http://localhost:8080
.
- Locally
- Run
make run
to start the listmonk dev server on:9000
. -
Run
make run-frontend
to start the Vue frontend in dev mode using yarn on:8080
. All/api/*
calls are proxied to the app running on:9000
. Refer to the frontend README for an overview on how the frontend is structured. -
Inside containers (Using Makefile)
- Run
make init-dev-docker
to setup container for db. - Run
make dev-docker
to setup docker container suite. -
Run
make rm-dev-docker
to clean up docker container suite. -
Inside containers (Using devcontainer)
- Open repo in vscode, open command palette, and select "Dev Containers: Rebuild and Reopen in Container".
It will set up db, and start frontend/backend for you.
Production build¶
Run make dist
to build the Go binary, build the Javascript frontend, and embed the static assets producing a single self-contained binary, listmonk