An opinionated boilerplate for koa v2 with batteries included.
- Node >=v7.7.2
- NPM >=v4.1.2
- MongoDB
- Local Authentication using Email and Password (Login, Register)
- Contact form request (powered by Mailgun, Sendgrid or Mandrill)
- File upload using Amazon S3
- Authorised routes using JWT tokens (Get current logged in data, profile update, password reset)
- Server-rendered frontend pages using Next.js (React)
# clone the repository
λ git clone https://github.com/perminder-klair/kickoff-koa2
# change the current directory
λ cd kickoff-koa2
# install all dependencies
λ npm install
# run the project
λ npm start
├── README.md # you're here
├── bin # folder that bootstraps the application
├── src # contains source files
│ ├── conf # wraps configurations files
│ ├── controller # contains all controllers in the application
│ ├── middleware # folder with all middlewares
│ ├── pages # folder with pages using Next.js + React
│ ├── route # wraps all the routes and exports a single composed middleware
│ └── service # contains all the service logic
│ └── utils # contains all extra utilities
└── test # unit tests
Suggestion: Every folder name is singular like route
, middleware
instead of routes
, middlewares
. If you want to add more folders as per your need, make sure they should be singular too (for e.g. util
, helper
etc) only for the sake of consistency.
- Koa Well, duh.
- Next.js Framework for server-rendered React apps
- Koa Router For routing and all.
- Koa Context Validator A robust context validator for koajs.
- Nodemailer Send e-mails with Node.JS – easy as cake!
- Passport.js Simple, unobtrusive authentication for Node.js.
- Mongoose MongoDB object modeling designed to work in an asynchronous environment.
- Debug Debug messages in the development environment.
- Bunyan Extensive logging module.
- AWS SDK AWS SDK for JavaScript in the browser and Node.js. strings.
- Ava For unit tests.
- Boom HTTP Errors.
- Convict Configuration management.
- Babel Support ES6/ES7 features.
- ESLint Linting purposes (comes with extended Airbnb's base eslint configurations).
- Nodemon Restart the server automatically (hot-reloading).
And many more small packages.
npm start
- simply starts the servernpm test
- execute all unit testsnpm run lint
- lints all the files insrc/
foldernpm run lint:fix
- fixes all the possible linting errorsnpm run watch
- starts the server with hot-reloading
Suggestion: To turn on debug messages, set DEBUG
environment variable to kickstarter:*
DEBUG=kickstarter:* npm run watch