Giter VIP home page Giter VIP logo

email-dashboard's Introduction

Report bug | Request feature | Help issues | ๐Ÿ‡จ๐Ÿ‡ณ[็ฎ€ไฝ“ไธญๆ–‡]


Go Report Card

Email-Dashboard is an easy way to manage your outgoing emails from your apps. From creating and sending your emails to monitoring and managing their stats, you can do really useful things with Email-Dashboard without worried about time zone disaverage. You can ๐Ÿ”—explore Email-Dashboard docs.

๐Ÿ’ข Table of content

๐Ÿšป For whom?

๐ŸŒ If you need to send automatic emails without worried about time zone,
๐Ÿ” If you need to track your emails and analyse your results to follow better strategies,
๐Ÿ“Š If you need to monitoring your activities,
๐Ÿ“‘ If you want to use email templates,
๐Ÿ•ต๏ธ If you need to A/B testing,
๐Ÿ’ฏ And if you want to do all of this easily,

Then you're at the right place. Email Dashboard builded for you! ๐ŸŽ‰

๐Ÿ‘€ Code overview

๐Ÿ”ธ The REST API builded with superfast language ๐Ÿ”—golang.
๐Ÿ”ธ The Dashboard builded with fastest development framework ๐Ÿ”—Rails
๐Ÿ”ธ Front-end framework ๐Ÿ”—uikit using in the dashboard.

โ˜‘ Features

  • Monitor email activities that your service sent.
  • Interactive templates.
  • Multiple SMTP support.
  • Scheduled delivery with time zone.
  • Perform / Cancel scheduled activities optionally.
  • Mobile UI
  • Email tracking.
  • A/B testing.

๐Ÿ”ฑ Deployment

Debian

1- Install Docker

โ–ถ๏ธ Install the most recent version of the Docker Engine for your platform using the ๐Ÿ”—official Docker releases, which can also be installed using:

wget -qO- https://get.docker.com/ | sh

โ–ถ๏ธ Execute this line to allow docker to execute without being root

sudo usermod -aG docker ${USER}

โ–ถ๏ธ Logout, then login again. Permissions should be applied.

2- Install Docker Compose

โ–ถ๏ธ Install Docker Compose from the ๐Ÿ”—official page, or manually run:

curl -L "https://github.com/docker/compose/releases/download/1.11.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

3- Create data folders

 mkdir -p /datadrive/mysql && mkdir -p /datadrive/data/redis

4- Clone repo

 git clone https://github.com/Email-Dashboard/Email-Dashboard.git

โ–ถ๏ธ Update environment variables with your variables https://github.com/Email-Dashboard/Email-Dashboard/blob/master/.env

  docker-compose build
  docker-compose up -d

๐Ÿ’ป Development

macOS

Install and start Docker, check ๐Ÿ”— docker-ce-desktop-mac.

โ–ถ๏ธ Create Datafolders

mkdir -p ~/datadrive/ed/mysql && mkdir -p ~/datadrive/ed/redis

โ–ถ๏ธ Clone the repo

git clone https://github.com/Email-Dashboard/Email-Dashboard.git

โ–ถ๏ธ Update mac username in docker-compose-dev.yml in line 7 and line 27

/Users/MacUserName/datadrive/ed/mysql:/var/lib/mysql # update MacUserName with yours

โ–ถ๏ธ Start

docker-compose -f docker-compose-dev.yml build
docker-compose -f docker-compose-dev.yml up

โ–ถ๏ธ Dashboard url: http://localhost:3000
โ–ถ๏ธ Make API requests to http://localhost:8080

Debian

Install and start Docker:

wget -qO- https://get.docker.com/ | sh

โ–ถ๏ธ Execute this line to allow docker to execute without being root

sudo usermod -aG docker ${USER} # Logout, then login again. Permissions should be applied.

โ–ถ๏ธ Create Datafolders

mkdir -p /datadrive/data/mysql && mkdir -p /datadrive/data/redis

โ–ถ๏ธ Clone the repo

git clone https://github.com/Email-Dashboard/Email-Dashboard.git

โ–ถ๏ธ Update line 7 and line 27 in docker-compose-dev.yml to:

-'/datadrive/data/mysql:/var/lib/mysql'
...
- '/datadrive/data/redis:/data'

โ–ถ๏ธ Start

docker-compose -f docker-compose-dev.yml build
docker-compose -f docker-compose-dev.yml up

โ–ถ๏ธ Dashboard url: http://localhost:3000
โ–ถ๏ธ Make API requests to http://localhost:8080

๐Ÿ† Usage

1- In Dashboard

Using dashboard is really easy, like playing PUBG! You can do it any time without any effort. Because our first aim is make some time for our community with our dashboard. So, UI and dashboard is friendly as much as and we will make it better.

๐Ÿ”ธ Add your SMTP Settings
๐Ÿ”ธ Create email template with ๐Ÿ”—handlebars variables.
๐Ÿ”ธ Create notification. See, easy peasy!

2- Posting to REST API

POST https://api.{{yourhost}}/api/v3/notifications/{{notification-slug}}

Authorization: Token {{AccountToken}}

{
   "variables":{
      "button_name": "Click me!",
      "name": "John"
   },
   "email": {
      "to": ["[email protected]", "[email protected]"],
      "cc": ["[email protected]"],
      "reply_to": ["[email protected]"],
      "from": "[email protected]"
   },
   "delivery": { # optional
     "time": "21:00",
     "date": "2018-09-22",
     "zone": "Europe/Istanbul"
   }
}

For more specified usage you can follow ๐Ÿ”—step by step instructions in docs.

๐Ÿ’ Contributing

Please read our ๐Ÿ”—contribution guidelines. We are grateful for all contributions! ๐Ÿ™ With following our ๐Ÿ”—rules of the discussions, you can contribute many of way. Our ๐Ÿ”—issue tracker is the preferred channel for bug reports, features requests and submitting pull requests. We utilized several ๐Ÿ”—labels to help organize and identify issues. You can start with there! Also if you want to add some new feature:

  1. Clone or fork the project (git clone https://github.com/Email-Dashboard/Email-Dashboard)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

๐Ÿ”Ž But before opening a feature request, please take a moment to find out whether your idea fits with the scope and aims of the project. It's up to you to make a strong case to convince the project's developers of the merits of this feature. So, you can provide as much detail and context as possible.

๐Ÿ“ Authors


Sahin Boydas
Product
LinkedIn

Muhammet
Lead Developer
Github

Sadik
Developer
Github

Tommy Yang
Developer
Github blog

๐ŸŽ“ License

This program is a free and open source software. You can redistribute it and/or modify it under the terms of the license provided in the ๐Ÿ”—LICENSE file. Use of this software is subject to important terms and conditions as set forth in the ๐Ÿ”—LICENSE file.

๐Ÿ” Acknowledgement

If you liked our dashboard, please give us a "Star" โญ. Your support is what keep us moving forward and delivering happiness to you! Thank's a million, you're our Clark Kent/Kara Danvers! In case of any questions or concerns, feel free to contact us anytime. Btw you can see our guilds from our ๐Ÿ”—credit content ๐Ÿ˜Š

email-dashboard's People

Contributors

adamdilek avatar ahmetcetin avatar greysteil avatar joyang1 avatar mauleyzaola avatar medicharlachiranjeevi avatar mesutgulecen avatar mraza007 avatar ruibaby avatar sadikay avatar sahin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

email-dashboard's Issues

Api keys by environment

We need to create a different api key for development environment.

If the development api key has provided we will not send mails to receivers even if the notification is active.

Cannot build application

I followed the README instructions to make it work, however that this point there was a failure.

Email-Dashboard$ docker-compose run web rake db:migrate

Result

Creating network "email-dashboard_default" with the default driver
Creating volume "email-dashboard_datadrive" with default driver
Pulling redis (redis:alpine)...
alpine: Pulling from library/redis
4fe2ade4980c: Already exists
fb758dc2e038: Pull complete
989f7b0c858b: Pull complete
d5318f13abaa: Pull complete
3521559474dd: Pull complete
af5d048338ef: Pull complete
Digest: sha256:fc78e96c8036b6fa69ce8d4e811ba84b9278e772047a93fb6d5549de4ddecc32
Status: Downloaded newer image for redis:alpine
Creating email-dashboard_redis_1 ... error
Creating email-dashboard_db_1    ...

ERROR: for email-dashboard_redis_1  Cannot start service redis: b'Mounts denied: \r\nThe path /datadrive/redis\r\nis not shared from OS X and is not known to Docker.\r\nYou can configure shared paths from Docker -> Preferences... -> File Sharing.\r\nSee https://docs.docCreating email-dashboard_db_1    ... error

ERROR: for email-dashboard_db_1  Cannot start service db: b'Mounts denied: \r\nThe path /datadrive/mysql\r\nis not shared from OS X and is not known to Docker.\r\nYou can configure shared paths from Docker -> Preferences... -> File Sharing.\r\nSee https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.\r\n.'

ERROR: for redis  Cannot start service redis: b'Mounts denied: \r\nThe path /datadrive/redis\r\nis not shared from OS X and is not known to Docker.\r\nYou can configure shared paths from Docker -> Preferences... -> File Sharing.\r\nSee https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.\r\n.'

ERROR: for db  Cannot start service db: b'Mounts denied: \r\nThe path /datadrive/mysql\r\nis not shared from OS X and is not known to Docker.\r\nYou can configure shared paths from Docker -> Preferences... -> File Sharing.\r\nSee https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.\r\n.'
ERROR: Encountered errors while bringing up the project.

This is how I created the data directories

sudo mkdir /datadrive
sudo chown -R mau /datadrive/
mkdir -p /datadrive/mysql && mkdir -p /datadrive/data/redis

OS: MacOS High Sierra
Version: 10.13.6

Template versioning

When user added a new email template old template version must be exist and usable.

Member roles

Content Editor

Can update email templates

Admin

Can do anything

Some activities stuck in pending

Some activities not perform and still in pending status. I guess it's mail provider authentication problem. But we should handle it anyway.

Unsubscribe link option and unsubscribe page

We must offer unsubscribe link. It should be optional in Notification Model.

If the recipient clicks that link it should come to unsubscribe page.

That unsubscribe page must be very very simple.

The account owner should able to modify it for make it same looking like his website or app.

We can offer logo upload, background's color changing and text's color changing options.

Unable to load application:

Unable to load application: I18n::InvalidLocaleData: can not load translations from /rails-dashboard/config/locales/devise.zh-CN.yml: #<Psych::SyntaxError: (/rails-dashboard/config/locales/devise.zh-CN.yml): found character that cannot start any token while scanning for the next token at line 68 column 20>
web_1 | /usr/local/bundle/gems/i18n-0.9.5/lib/i18n/backend/base.rb:232:in `rescue in load_yml': can not load translations from /rails-dashboard/config/locales/devise.zh-CN.yml: #<Psych::SyntaxError: (/rails-dashboard/config/locales/devise.zh-CN.yml): found character that cannot start any token while scanning for the next token at line 68 column 20> (I18n::InvalidLocaleData)

Unable to create new accounts!!

Hi Team, thanks for the great project.
after installing the project locally, I was able to create user and login successfully,but unable to create account, whenever I give the account name and hit submit, it gives me following error.
image
it would be of great help, if someone help me out here.

Add text/plain support

we have only text/html support.

we need to add text/plain in a tab on new template screen.

docker-compose build failed.

my console log

~/git/Email-Dashboard$ docker-compose up -d
Creating network "email-dashboard_default" with the default driver
Creating volume "email-dashboard_datadrive" with default driver
Pulling db (mysql:5.7)...
5.7: Pulling from library/mysql
4be315f6562f: Pull complete
96e2eb237a1b: Pull complete
8aa3ac85066b: Pull complete
ac7e524f6c89: Pull complete
f6a88631064f: Pull complete
15bb3ec3ff50: Pull complete
ae65dc337dcb: Pull complete
a4c4c43adf52: Pull complete
c6cab33e8f91: Pull complete
2e1c4f2c43f6: Pull complete
2e5ee322af48: Pull complete
Digest: sha256:e767595ba3408fbb2dda493be3594b9a148178df58325fafe8b0363662935624
Status: Downloaded newer image for mysql:5.7
Pulling redis (redis:alpine)...
alpine: Pulling from library/redis
df9b9388f04a: Pull complete
192e03523482: Pull complete
7151bccd2756: Pull complete
683d62ead94f: Pull complete
b4ca937b9a43: Pull complete
b4bb2d8d1296: Pull complete
Digest: sha256:541e6d75df5dfb08e8859929bab06da265673808a6f2285abe6b7c76c1c98c6e
Status: Downloaded newer image for redis:alpine
Building web
Step 1/22 : FROM ruby:2.4.2
 ---> 2a867526d472
Step 2/22 : LABEL maintainer="Sadik Ay <[email protected]>"
 ---> Using cache
 ---> 7bc194fb59a4
Step 3/22 : RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs wget libc6-dev libevent-dev
 ---> Using cache
 ---> a28bb0fae15a
Step 4/22 : RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
 ---> Using cache
 ---> d65f9ce9fee7
Step 5/22 : RUN curl -sL https://deb.nodesource.com/setup_8.x | bash
 ---> Using cache
 ---> 7bb9320161bf
Step 6/22 : RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
 ---> Using cache
 ---> af119c29a2e8
Step 7/22 : RUN apt-get update && apt-get install -y yarn libmysqlclient-dev
 ---> Running in f13ebde908e9
Hit http://security.debian.org jessie/updates InRelease
Ign http://deb.debian.org jessie InRelease
Hit http://deb.debian.org jessie-updates InRelease
Get:1 https://deb.nodesource.com jessie InRelease [4619 B]
Hit http://deb.debian.org jessie Release.gpg
Hit http://deb.debian.org jessie Release
Get:2 http://security.debian.org jessie/updates/main amd64 Packages [992 kB]
Get:3 http://deb.debian.org jessie-updates/main amd64 Packages [20 B]
Get:4 https://dl.yarnpkg.com stable InRelease [17.1 kB]
Ign https://deb.nodesource.com jessie InRelease
Get:5 http://deb.debian.org jessie/main amd64 Packages [9098 kB]
Get:6 https://deb.nodesource.com jessie/main Sources [762 B]
Get:7 https://dl.yarnpkg.com stable/main amd64 Packages [10.9 kB]
Get:8 https://deb.nodesource.com jessie/main amd64 Packages [1007 B]
Fetched 10.1 MB in 7s (1439 kB/s)
Reading package lists...
W: GPG error: https://deb.nodesource.com jessie InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 1655A0AB68576280
Reading package lists...
Building dependency tree...
Reading state information...
The following packages were automatically installed and are no longer required:
  libc-ares2 libv8-3.14.5
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  libmysqlclient18 mysql-common nodejs
The following NEW packages will be installed:
  yarn
The following packages will be upgraded:
  libmysqlclient-dev libmysqlclient18 mysql-common nodejs
4 upgraded, 1 newly installed, 0 to remove and 156 not upgraded.
Need to get 16.6 MB of archives.
After this operation, 73.0 MB of additional disk space will be used.
WARNING: The following packages cannot be authenticated!
  nodejs
E: There are problems and -y was used without --force-yes
ERROR: Service 'web' failed to build: The command '/bin/sh -c apt-get update && apt-get install -y yarn libmysqlclient-dev' returned a non-zero code: 100

any suggestions ??

Git Sync For Templates

Git clone will be done through http.

The syntax is https://username:[email protected]/group/project-name.git for gitlab.

We must able to create templates for first sync. After the sync each template has its own sync button. That must sync only related template.

After sync we can remove the cloned repo.

Suggestion / request: use Dependabot to keep dependencies up-to-date

First of all, thanks for Email Dashboard!

I've got a suggestion / request: would you be up for using Dependabot to automatically create dependency update PRs for this repo? I ran it against my fork and it generated these PRs. I'll port the nokogiri one across to this repo now because it's security related.

I built Dependabot, but I'm honestly only suggesting it because I hope it can save you some time. I'd love any feedback, and obviously having open source repos using Dependabot helps boost its profile, but if it's not helpful to you then it's not really worth anything.

You can install it from here or here if you decide to give it a try. It's been through GitHub's security testing (to be allowed in the GitHub Marketplace) and is used by a few thousand organisations, and the source code is here.

:octocat:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.