horse-generator
Version:
horse generator for node framework
101 lines (73 loc) • 3.21 kB
Markdown
# HORESE GENERATOR
Opinionated. minimalist and restful api structure for web framework, such as [koa](http://koajs.com), express . Inspired by [express-generator](https://github.com/expressjs/generator) and [generator-angular-fullstack](https://github.com/angular-fullstack/generator-angular-fullstack).
## Quick Start
The quickest way to get started with a koa app is to utilize the executable `horse` to generate an application as shown below:
Create the app:
```sh
npm install -g horse
horse /projects/hello-horse && cd /projects/hello-horse
```
Install dependencies:
```sh
npm install
```
## Options
- `-t, --theme [name]` switch application theme to <name> [white|green|violet|red]. Defaults to red.
- `-d, --db [engine]` change database <engine> to one of [mysql|postgresql|mongo|redis|memory|disk]. Defaults to disk.
- `-c, --css [engine]` add stylesheet <engine> support [sass|plain]. Defaults to plain css.
- `-a, --auth [type]` add [type] authentication support [qq|wechat|local]. Defaults to local only.
Use ":" as separator for multiples (f.x. local:qq:wechat). Set to `false` to disable (like `horse ... -a false`).
- `-e, --template [engine]` change template engine. Support [ejs] only for now. Defaults to ejs.
- `-i, --i18n` add i18n support. Translations used by [i18n-node-2](https://github.com/jeresig/i18n-node-2) ported to [koa-i18n](https://github.com/fundon/koa-i18n)
- `-S, --no-session` remove [session](https://github.com/koajs/generic-session) support. Session is enabled by default.
- `-f, --force` force on non-empty directory
Example using layout green, mysql as db, qq and wechat authentication:
```sh
horse new-horse -t green -a local:qq:wechat
cd new-horse
npm install
node bin/www
```
Go to [http://localhost:3006](http://localhost:3006) and have fun hacking
## show me something
green with auth
`horse myapp -t green -a qq:wechat`:
## Structure
+ `app`
+ - `controller` plain objects to use its methods as routes
+ - `model` uses [mongoose](https://github.com/Automattic/mongoose)
+ - `proxy`
+ - `view` templates
+ - - `error` error views (401,403,404,error)
+ - - `layouts` layouts folder (main, error)
+ - - `site` application views (index, login)
+ `auth` authentication and authorization methods
+ - `local`
+ - `qq`
+ `config` routes, general app env
+ - `env`
+ `locales` if i18n option is set
+ `public` public folder
+ - `css`
+ - `img`
+ - `js`
+ `middleware`
+ `util`
## Uses
+ [koa](http://koajs.com) (obviously)
+ [ejs](https://github.com/koajs/ejs) EJS as view engine
Also
+ [koa-bodyparser](https://github.com/koajs/body-parser) to handle post data easier
+ [koa-static](https://github.com/koajs/static) exposes assets (js e css)
+ [koa-router](https://github.com/alexmingoia/koa-router) you know, for routes
Optional
+ [koa-generic-session](https://github.com/koajs/generic-session) if has session support
+ [koa-flash](https://github.com/rickharrison/koa-flash) for session flash messages
+ [koa-locale](https://github.com/fundon/koa-locale) if option i18n is set
+ [koa-i18n](https://github.com/fundon/koa-i18n) if option i18n is set
## Roadmap
## Notes
```
$ npm install -g n
$ n 8.0.0
```