geoposler
geoposler copied to clipboard
Geoposler
Is a Dockerized email campaign management application that allows users to create templates, manage contact lists, and send HTML-based emails via SMTP. It includes features to simplify email marketing campaigns and integrates seamlessly with a MySQL database for managing data.
Features
- Create and manage email templates.
- Manage contact lists efficiently.
- Send HTML emails using SMTP parameters.
- Seamless MySQL database integration.
Requirements
- Docker installed on your system.
- MySQL database connection details:
DB_HOSTDB_USERDB_PASSWORDDB_NAME
Environment Variables
| Variable | Description | Required |
|---|---|---|
DB_HOST |
MySQL database hostname or IP address | Yes |
DB_USER |
MySQL database username | Yes |
DB_PASSWORD |
MySQL database password | Yes |
DB_NAME |
MySQL database name | Yes |
Running the Application
- Clone the repository:
git clone https://github.com/garanda21/geoposler.git - Navigate to the project directory:
cd geoposler - Set up the
.envfile with the required variables:DB_HOST=localhost DB_USER=root DB_PASSWORD=mypassword DB_NAME=mycooldb - Start the application with Docker Compose:
docker-compose up --build
Docker Compose Example
Below is an example docker-compose.yml to set up Geoposler along with a MySQL database:
services:
geoposler:
image: ghcr.io/garanda21/geoposler:latest
ports:
- "3454:80"
environment:
- DB_HOST=mysql
- DB_USER=root
- DB_PASSWORD=mypassword
- DB_NAME=mycooldb
depends_on:
mysql:
condition: service_healthy
restart: unless-stopped
mysql:
image: mysql:8.0
container_name: mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: mypassword
MYSQL_DATABASE: mycooldb
volumes:
- mysql_data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 3
volumes:
mysql_data:
IMPORTANT NOTICE: The mySQL database service must be up and in a healthy state before starting the Geoposler service to ensure a successful connection to the database, using docker-compose you should add depends_on and healthcheck properties.
Tech Stack
- Frontend: Vite, React, Tailwind CSS
- Backend: Node.js
- Database: MySQL
- Containerization: Docker
License
This project is licensed under the MIT License.
Contributing
Contributions are welcome! Please open an issue or submit a pull request for any improvements or fixes.