Just Boilerplate Express with TypeScript ( 🦊 )
- npm >=
v6.x
- node >=
v10.x
- eslint
v7.x
- husky >=
v5.x
- Familiar with TypeScript 💪
- TypeScript
v4.x
- Sequelize ORM
v6.x
- Nodemailer
- Handlebars for templating HTML
- Yup for validation schema
- JavaScript Style Airbnb Base
- Formating code using Prettier Integration Eslint and TypeScript Eslint
- Using Babel Resolver for simplify the require/import paths
- Documentation with Swagger
- Generate Log File with Winston
- Convensional Commit with Husky & Commitlint
clone this repo with https
/ ssh
/ github cli
git clone https://github.com/masb0ymas/boilerplate-express-typescript-sequelize.git
After cloning this repo, make sure you have duplicated
the .env.example
file to .env
, don't let the .env.example file be deleted or renamed.
npm install
or
yarn
npx husky install
or
yarn husky install
npm run refresh:env-jwt
or
yarn refresh:env-jwt
npm run dev
or
yarn dev
npm run type-check
or
yarn type-check
npm run type-check:watch
or
yarn type-check:watch
Recommended using build with Babel
, build with TS
is still unstable
npm run build:babel
or
yarn build:babel
Using sequelize with development mode, you can set the database configuration in .env
, like this :
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=example_database
DB_USERNAME=example_user
DB_PASSWORD=example_password
DB_OPERATOR_ALIAS=
DB_TIMEZONE=+07:00
if you set production mode change the database config PROD_DB_DATABASE
then after that you can adjust the database config in DB_DATABASE
, DB_USERNAME
, DB_PASSWORD
.
now you can run this command :
npm run db:reset
or
yarn db:reset
npm run serve:production
or
yarn serve:production
npm run test
or
yarn test
Adjust the config in .env like this:
...
PORT=7000 # change this port according to your needs
...
DB_CONNECTION=mysql
DB_HOST=db # access to service db in docker
DB_PORT=3306
DB_DATABASE=example
DB_USERNAME=your_username
DB_PASSWORD=your_password
DB_OPERATOR_ALIAS=
DB_TIMEZONE=+07:00
...
PROD_DB_CONNECTION=mysql
PROD_DB_HOST=db
PROD_DB_PORT=3306
PROD_DB_DATABASE=example
PROD_DB_USERNAME=your_username
PROD_DB_PASSWORD=your_password
PROD_DB_OPERATOR_ALIAS=
PROD_DB_TIMEZONE=+07:00
...
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=your_password
REDIS_PORT=6380 # Default: 6379
container_name
in each service is customizable.
PORT=...
If you want to use a port other than 7000
, you must also change the port in the services app
services:
app:
build:
context: .
container_name: express_app
depends_on:
- db
- redis
restart: always
ports:
- '7000:7000'
DB_HOST=..
. must be accessed using IPv4 Docker Network services db
.
db:
image: mariadb
container_name: express_db
volumes:
- ./storage/mariadb-volume:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: ${PROD_DB_PASSWORD}
MYSQL_DATABASE: ${PROD_DB_DATABASE}
MYSQL_USER: ${PROD_DB_USERNAME}
MYSQL_PASSWORD: ${PROD_DB_PASSWORD}
restart: always
ports:
- '3307:3306'
networks:
- express_network
After all the above configuration is adjusted, you can run it with the command:
Command aggregates the output of each container
docker-compose up
Detached mode: Run containers in the background,
docker-compose up -d
if you want to release the app version, you can use the following command :
npm run release
or
yarn release
I use topol.io to create email templates, and it's free and can export to html format
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=465
MAIL_AUTH_TYPE=
MAIL_USERNAME=your_mail@domain.com
MAIL_PASSWORD=your_password
MAIL_ENCRYPTION=null
MAILGUN_API_KEY=your_api_key_mailgun
MAILGUN_DOMAIN=your_domain
MAIL_DRIVER=gmail
MAIL_HOST=null
MAIL_PORT=null
MAIL_AUTH_TYPE=OAuth2
MAIL_USERNAME=your_account@gmail.com
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
OAUTH_CLIENT_ID=your_client_id
OAUTH_CLIENT_SECRET=your_client_secret
OAUTH_REDIRECT_URL=https://developers.google.com/oauthplayground
OAUTH_REFRESH_TOKEN=your_refresh_token
👤 masb0ymas
- Website: https://resume.masb0ymas.vercel.app
- Twitter: @masb0ymas
- Github: @masb0ymas
- LinkedIn: @masb0ymas
Give a ⭐️ if this project helped you!
This README was generated with ❤️ by readme-md-generator