mern-temlate is a cli tool for generating isomorphic and modular mongo, express, react and node web app. The project is based on the best practices and popular tools. This is not just a simple starter that generates only the folder structure, but a real example of a production ready web application.
npx mern-template my-appor
npm install mern-template -g
mern-template my-appcd my-app
npm install
npm startor
cd my-app
docker-compose up|__ bin
|__ client
|__ config
|__ public
|__ server
|.. docker-compose.yml
|.. Dockerfile
|.. Dockerfile-development
|.. jest.config.js
|.. package.json
|.. process.json
|.. project.config.js
|.. webpack.common.js
|.. webpack.dev.js
|.. webpack.prod.js
bin folder contains file named www from where we start express server and connect to mongodb.
I use dotenv to load environment variables. If NODE_ENV is development or test, environment variables are loaded from config/.development and config/.test files relatively. In production it is better to enter all your environment variables from console. It isn't good idea to upload environment variables on github.
client folder contains react code. I use redux and redux-saga for state management,
react-router-dom to handle client side routing and material-ui as a UI framework. I use scss preprocessor with bem methodology.
public folder contains static assets.
server side code has following structure:
|__ server
|__ auth
|__ tasks
|__ users
|.. app.js
|.. db.js
|.. routes.js
and each module looks like this:
|__ tasks
|__ __tests__
|.. index.js
|.. task-controller.js
|.. task-model.js
|.. task-validation.js
I use jest for testing, joi for validation, passport-jwt for authentication, mongoose driver for mongodb and signale for logging.
Copyright (c) 2019 Lasha Kakhidze. This code is released under the MIT license.
