/kickoff-koa2

An opinionated boilerplate for koa v2 with batteries included

Primary LanguageJavaScriptMIT LicenseMIT

kickoff-koa2

An opinionated boilerplate for koa v2 with batteries included.

Requirements

- Node >=v7.7.2
- NPM >=v4.1.2
- MongoDB

Features

- 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)

Setup

  # 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

Structure

├── 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.

Included

  • 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.

Scripts

  • npm start - simply starts the server
  • npm test - execute all unit tests
  • npm run lint - lints all the files in src/ folder
  • npm run lint:fix - fixes all the possible linting errors
  • npm 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

Some other great Koa.js boilerplates