README.md
[![tests](https://github.com/madhums/node-express-mongoose/actions/workflows/test.yml/badge.svg)](https://github.com/madhums/node-express-mongoose/actions/workflows/test.yml)
[![Code Climate](https://codeclimate.com/github/codeclimate/codeclimate/badges/gpa.svg)](https://codeclimate.com/github/madhums/node-express-mongoose)
## Node Express Mongoose
A boilerplate application for building web apps using express, mongoose and passport.
Read the [wiki](https://github.com/madhums/node-express-mongoose/wiki) to understand how the application is structured.
## Usage
git clone https://github.com/madhums/node-express-mongoose.git
cd node-express-mongoose
npm install
cp .env.example .env
npm start
Checkout the [apps that are built using this approach](https://github.com/madhums/node-express-mongoose/wiki/Apps-built-using-this-approach)
## Docker
You can also use docker for development. Make sure you run npm install on your host machine so that code linting and everything works fine.
```sh
npm i
cp .env.example .env
```
Start the services
```sh
docker-compose up -d
```
View the logs
```sh
docker-compose logs -f
```
In case you install a npm module while developing, it should also be installed within docker container, to do this first install the module you want with simple `npm i module name`, then run it within docker container
```sh
docker-compose exec node npm i
```
If you make any changes to the file, nodemon should automatically pick up and restart within docker (you can see this in the logs)
To run tests
```sh
docker-compose exec -e MONGODB_URL=mongodb://mongo:27017/noobjs_test node npm test
```
Note that we are overriding the environment variable set in `.env` file because we don't want our data erased by the tests.
Note: The difference between exec and run is that, exec executes the command within the running container and run will spin up a new container to run that command. So if you want to run only the tests without docker-compose up, you may do so by running `docker-compose run -e MONGODB_URL=mongodb://mongo:27017/my_app_test node npm test`
## Deployment
If you want to deploy to heroku, you can follow [this article](https://devcenter.heroku.com/articles/deploying-nodejs)
## License
MIT