Meel is an open-source API for email scheduling, built with Rust. It features a complex templating system with layout files that can be edited to update all emails at once, streamlining the process of managing email designs. This system ensures consistency across email campaigns while reducing the time and effort required to make widespread changes.
To use Meel, you can either compile the backend yourself, or use the automatically built Docker image. The Docker image is available on GitHub at borisnliscool/meel.
Meel also has a full docker image that has integrated Postgres database. The image is available on GitHub
at borisnliscool/meel-full.
Example
services:
db:
image: postgres
restart: unless-stopped
shm_size: 128mb
env_file:
- .env.production
volumes:
- db_data:/var/lib/postgresql/data
meel:
image: ghcr.io/borisnliscool/meel:latest
restart: unless-stopped
ports:
- "8080:8080"
env_file:
- .env.production
depends_on:
- db
volumes:
- ./data:/data
volumes:
db_data:This monorepo includes the main API, SDKs for supported languages, and tools to simplify the use of Meel templating syntax. Refer to the individual SDK directories for detailed documentation.
| Directory | Description |
|---|---|
| backend | Core API functionality |
| sdk/node | Node SDK for the API |
git tag -a <version> -m "v<version>" && git push --tags
To create the initial database schema and relations, run the following command
(you may need to install the diesel cli first by running cargo install diesel_cli):
cd meel-backend
diesel migration run- Templating engine
- Component system
- i18n
- simple if and for logic
- API Routes
- Sending mail
- Send to mailing list
- File attachments
- Validate email sender and recipient names
- Scheduling mail
- Fetching mail status
- Fetch templates list
- Mailing lists
- Fetch lists
- Create mailing list
- Delete mailing lists
- Update mailing lists name and description
- Add email to mailing list
- Remove from mailing list
- Sending mail
- Configuration
- Rate limiting
- Mail server settings
- Logging
- Maximum number of send attempts
- Template storage path
{
"code": "<code>",
"message": "<message>",
"details": {
"<key>": "<value>"
}
}