- Notifications
You must be signed in to change notification settings - Fork9
199ocero/mailifyflow
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
An open-source, self-hosted email marketing platform built using Laravel, FilamentPHP, Maizzle, and Amazon SES.
A special acknowledgment goes to these remarkable tools, as MailifyFlow owes its existence to their invaluable contribution.
- Laravel - favorite PHP framework
- FilamentPHP - my go-to admin panel
- Maizzle - turn TailwindCSS to email ready html/css
- Filapanel - admin panel generation
- SendPortal - highly inspired by SendPortal
- Bulk insert subscribers
- Tags
- Campaigns
- Templates
- Email Providers (SMPT)
- Email tracking like bounce, complaint, clicks, opens, etc.
TailwindCSS, Alpine.js, Laravel, and Livewire (TALL)
- Laravel 11+
- PHP 8.2+
- Node v20+
- Composer v2.7+
Follow these steps to set up this project in your local or production environment.
Clone the repository:
git clone https://github.com/199ocero/mailifyflow.git
Navigate to the cloned project directory and install composer and npm:
composer installnpm install
Copy the.env.example
file to.env
:
cp .env.example .env
Copy thevite.config.js.example
file tovite.config.js
:
cp vite.config.js.example vite.config.js
Configure your database settings in the.env
file:
DB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=mailifyflowDB_USERNAME=your-mysql-usernameDB_PASSWORD=your-mysql-password
Run the database migrations:
php artisan migrate
Create your first user:
php artisan make:filament-user
Important
To track email delivery, bounces, clicks, opens, etc., please ensure you add your AWS key, secret, region, and configuration set name in the .env variable. The system is currently configured only for Amazon SES and if you don't want to track any of this and just want to send emails, you can try adding another SMTP server, but I cannot guarantee it will work. See steps below:
In your.env
make sure that you will have to add these variables and its values
QUEUE_CONNECTION=databaseAWS_ACCESS_KEY_ID=your-access-key-idAWS_SECRET_ACCESS_KEY=your-secret-access-keyAWS_DEFAULT_REGION=your-ses-regionAWS_SES_CONFIGURATION_SET=your-configuration-set-nameMAILIFYFLOW_NODE_PATH=full-path-to-your-node
Steps below to configure your Amazon SES and SNS:
- Set up your Amazon SES to verify your email address and sending domain.
- Create your
Configuration Sets
and ensure you select all event destinations like sends, hard bounces, complaints, and etc. to track your emails. - Create an SNS topic and choose the standard option.
- Create a subscription within your selected SNS topic, using
HTTPS
as the protocol. You can useexpose
orngrok
to expose your local environment; in production, this is not necessary. - Use the exposed URL in the
Endpoint
field of your SNS, appending/webhooks/ses
at the end.
Important
Please ensure that you do not disable or cancel yourexpose
orngrok
, as it needs to listen to all events coming from Amazon SNS. During development, it's crucial to keep it running, but in production, you can turn it off.
Steps below create AWS access key, secret access key, and region:
- Create an IAM group and assign the
AmazonSESFullAccess
andAmazonSNSFullAccess
permissions. - Create a new IAM user and add them to the group you created.
- Once the user is created, obtain the access key and secret key, and ensure you use the same region where your Amazon SES is set up.
Lastly, the system uses jobs, so you will need to runphp artisan queue:work
for the local environment. For production, you will need to use a tool likesupervisor
and Laravel providesdocumentation for this. Additionally, the system having scheduled commands and you need to setup your server using the providedguide.
Run the project in local:
npm run dev
If in production, you can build your project using:
npm run build
vendor/bin/pest
Contributions are always welcome!
Seecontributing.md
for ways to get started.
Please adhere to this project'scode of conduct
.
If you have any questions, please reach out tofreelanceocero@gmail.com