A Node.js starter kit featuring ES6 with Secuential Asynchrony (async/await), Express (Routing middlewares, Web, Api), Typescript, Mongoose, SCSS, EJS, Nodemon, Bootstrap 4, TSLint, TypeDoc, .
-
Simple npm setup and maintenance, without grunt/gulp/webpack/...
-
Support for async/await
Example middleware:
async function(req, res, next) { let title = 'NodeTyped Express'; try { let data = await readFile(file, 'utf-8'); res.render('index', { title: title, dump: data }); } catch (e) { next(e); } }Make sure you have node version >= 8.0
# clone the repo # --depth 1 removes all but one .git commit history git clone --depth 1 https://github.com/jamg44/NodeTyped.git projectname # change directory to your new project cd projectname # install the repo dependencies with npm npm install # start the server npm run devIf you want to use mongoose models, start mongodb, check localConfig.js and:
# load sample products in database (defaults to 'test') npm run loadMocksYou can start the server in development mode (linter included) with:
npm run devOpen the browser at:
Start MongoDB, run 'npm run loadMocks', and check:
- http://localhost:3000/products
- http://localhost:3000/apiv1/products
- http://localhost:3000/apiv1/products/near/(meters)/lon/(lon)/lat/(lat)
As you save in your editor, the compiler will rebuild and restart the server.
Run the linter manually:
npm run lintClean temp folders:
npm run cleanRun the tests:
npm testGenerate docs, the output will be in /doc folder:
npm run docTo run the project in a server you'll want to run the built code instead src version.
# deploy the repo to server and run npm install npm start- To change project name update package.json
"name": "project_name", <----- ... "dev": "tsc && DEBUG=project_name2:* ... <------ All your functions should return promises for better use with async/await.
let readFile = function(file, encoding) => { return new Promise((resolve, reject) => { fs.readFile(file, encoding, function(err, data) { if (err) { return reject(err); } resolve(data); }); }); };- API authentication with JWT
- Add cluster
- User system (register, login, etc)
- Add tests
- Basic panel
Made with ♡ by Javier Miguel González @javiermiguelg