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.gitAfter 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
yarnnpx husky install
or
yarn husky installnpm run refresh:env-jwt
or
yarn refresh:env-jwtnpm run dev
or
yarn devnpm run type-check
or
yarn type-checknpm run type-check:watch
or
yarn type-check:watchRecommended using build with Babel, build with TS is still unstable
npm run build:babel
or
yarn build:babelUsing 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:00if 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:resetnpm run serve:production
or
yarn serve:productionnpm run test
or
yarn testAdjust 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: 6379container_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_networkAfter all the above configuration is adjusted, you can run it with the command:
Command aggregates the output of each container
docker-compose upDetached mode: Run containers in the background,
docker-compose up -dif you want to release the app version, you can use the following command :
npm run release
or
yarn releaseI 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=
[email protected]
MAIL_PASSWORD=your_password
MAIL_ENCRYPTION=nullMAILGUN_API_KEY=your_api_key_mailgun
MAILGUN_DOMAIN=your_domainMAIL_DRIVER=gmail
MAIL_HOST=null
MAIL_PORT=null
MAIL_AUTH_TYPE=OAuth2
[email protected]
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