- ExpressJs
- Mongoose
- Typegoose
- TypeScript
- Passport
- Admin dashboard
- User settings and or user dashboard
- Send emails
- Receive emails
- Connections through other parties ie discord, twitter, facebook etc..
You can setup the application on your local system by 2 methods
- Docker
- Manually
β οΈ If you are using unix operating system than prefix all bash commands withsudo
mkdir multi-email
cd multi-email
git clone https://github.com/MultiEmail/backend.git
cd backend
- Docker is installed on your local system
.env
file wih all required variables (check environment variables mentioned below)
docker compose --env-file ./.env up
docker compose --env-file ./.env up --build
List current running docker containers
docker ps
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d07f06c78445 backend-api "docker-entrypoint.sβ¦" 46 minutes ago Up 46 minutes 0.0.0.0:3001->3001/tcp, :::3001->3001/tcp Server
91826c111b76 mongo:latest "docker-entrypoint.sβ¦" 52 minutes ago Up 46 minutes 0.0.0.0:2717->27017/tcp, :::2717->27017/tcp Database
now copy the CONTAINER ID
of image/container backend-api
and replace <container_id>
in the below mentioned commands and execute them
# build and install the command line tool in docker container
docker exec <container_id> yarn build
docker exec <container_id> npm i -g .
# create new admin user in database in docker container
docker exec <container_id> multi-email-admin -e <email> -u <username> -p <password>
Container | PORT (host) | Port (container) |
---|---|---|
Server | 3001 | 3001 |
MongoDB | 2717 | 27017 |
if you want to access database inside docker container from host than use
mongosh --port 2717
or if you want to use mongodb compass than you can use this connection string
mongodb://localhost:2717/
- Latest Node js version
- Yarn installed
- Mongodb installed on local system
.env
file wih all required variables (check environment variables mentioned below)
this project use Yarn as package manager
yarn install
yarn dev
yarn build
npm i -g .
multi-email-admin -e <email> -u <username> -p <password>
To run this project, you will need to add the following environment variables to your .env file
Name | Description | Example |
---|---|---|
BASE_URL | Base URL on which server is running | http://localhost:3001/api |
DB_URI | URI on which database is running | mongodb://localhost:27017/multiemail |
FRONTEND_URL | URI on which frontend is running | http://localhost:3000 |
GOOGLE_CLIENT_ID | Client ID obtained while creating google oauth concent screen | 758327950938-90jskrnp9b8d2e6ljpqrstd8fdl2k9fljkhchasnnrnj8.apps.googleusercontent.com |
GOOGLE_CLIENT_SECRET | Client Secret obtained while creating google oauth concent screen | GOCSPX-NL52LzLNzF6YGJxlAoeLAnGK-a6 |
GOOGLE_REDIRECT_URL | URL on which user will be redirected after google oauth | http://localhost:3001/api/auth/oauth/google/redirect |
NODE_ENV | What type of environment are you running this app in | development |
EMAIL_ID | Which ID will be used for sending email | no-reply@multiemail.com |
EMAIL_PASSWORD | Password of your email id | mystrongpassword |
EMAIL_SMTP | Email SMTP host | smtp.server.com |
ACCESS_TOKEN_PRIVATE_KEY | private RSA key which will be used to sign access token | check .env.example file |
ACCESS_TOKEN_PUBLIC_KEY | public RSA key which will be used to verify access token | check .env.example file |
REFRESH_TOKEN_PRIVATE_KEY | private RSA key which will be used to sign refresh token | check .env.example file |
REFRESH_TOKEN_PUBLIC_KEY | public RSA key which will be used to verify refresh token | check .env.example file |
- Your
DB_URI
must bemongodb://mongo_db:27017/multiemail
if you are using docker - If you use gmail account as
EMAIL_ID
than you must enable 2FA for your google account and generate app password and use it asEMAIL_PASS
- You can get google credentials by following this guide
- You can use crypto tools for generating RSA keys for access and refresh tokens
- RSA keys must be
1024
- Contributions make the open source community such an amazing place to learn, inspire, and create.
- Any contributions you make are truly appreciated.
- Check out our contribution guidelines for more information.
This project is Licensed under the MIT License. Please go through the License atleast once before making your contribution.
Thanks goes to these wonderful people β€:
This project follows the all-contributors specification. Contributions of any kind welcome!