Skip to content

Commit

Permalink
complete boilerplate
Browse files Browse the repository at this point in the history
  • Loading branch information
veborich committed May 28, 2019
1 parent e22e388 commit 01fb007
Show file tree
Hide file tree
Showing 10 changed files with 80 additions and 26 deletions.
14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Express Boilerplate

## Set up

4. `npm install`
5. Rename `example.env` to `.env` and add secrets as needed
6. Edit `package.json` project name

## Usage

* `npm run dev` - run with Nodemon
* `npm test` - Mocha default
* `npm test -- --watch` - Mocha in watch mode
* `npm run deploy` - pushes to Heroku master
17 changes: 0 additions & 17 deletions app.js

This file was deleted.

3 changes: 3 additions & 0 deletions example.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
NODE_ENV=development
PORT=8000
EXAMPLE="example-environmental-variable"
7 changes: 5 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node src/server.js"
"test": "mocha --require test/setup.js",
"dev": "nodemon src/server.js",
"start": "node src/server.js",
"predeploy": "npm audit",
"deploy": "git push heroku master"
},
"keywords": [],
"author": "",
Expand Down
7 changes: 0 additions & 7 deletions server.js

This file was deleted.

34 changes: 34 additions & 0 deletions src/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
require('dotenv').config();
const express = require('express');
const morgan = require('morgan');
const cors = require('cors');
const helmet = require('helmet');

const { NODE_ENV } = require('./config');

const app = express();

const morganOption = (NODE_ENV === 'production')
? 'tiny'
: 'common';

app.use(morgan(morganOption));
app.use(cors());
app.use(helmet());

app.get('/', (req, res) => {
res.send('Hello, world!');
});

app.use(function errorHandler(error, req, res, next) {
let response;
if (NODE_ENV === 'production') {
response = { error: { message: 'server error ' }};
} else {
console.error(error);
response = { message: error.message, error };
}
res.status(500).json(response);
});

module.exports = app;
4 changes: 4 additions & 0 deletions src/config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module.exports = {
PORT: process.env.PORT || 8000,
NODE_ENV: process.env.NODE_ENV || 'development',
};
6 changes: 6 additions & 0 deletions src/server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
const app = require('./app');
const { PORT } = require('./config');

app.listen(PORT, () => {
console.log(`Server listening at http://localhost:${PORT}`);
});
9 changes: 9 additions & 0 deletions test/app.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
const app = require('../src/app');

describe('App', () => {
it('GET / responds with 200 containing "Hello, world!"', () => {
return supertest(app)
.get('/')
.expect(200, 'Hello, world!');
});
});
5 changes: 5 additions & 0 deletions test/setup.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
const { expect } = require('chai');
const supertest = require('supertest');

global.expect = expect;
global.supertest = supertest;

0 comments on commit 01fb007

Please sign in to comment.