ash-framework / cli

Cli for the Ash API framework
MIT License
8 stars 1 forks source link
api cli framework nodejs

Ash Api Framework

ash-cli

Cli for the Ash API framework

View the API docs at https://ash-framework.github.io/core

The Media Suite
Join the community chat at https://gitter.im/ash-framework/community Travis CI Build Status NPM version NPM downloads Dependency Status Dev Dependency Status

Install

NPM

## Usage ### Getting started #### Before you begin 1. Make sure you are running the latest version of node js (At least version 7) 2. Install `yarn` ``` npm install --global yarn ``` 3. (optional) to use models and the data layer, postgres must be installed #### Install cli You can install the Ash cli either via `yarn` or `npm` ``` // option 1. via yarn yarn global add ash-cli ``` ``` // option 2. via npm npm install --global ash-cli ``` #### Scaffold up a new project ``` mkdir my-awesome-project cd my-awesome-project ash init ``` #### Create your first route ``` ash generate route posts ``` Edit your app/routes/posts.js route file to return something from the provided model hook ```js // app/routes/posts.js import Ash from 'ash-core' export default class PostsRoute extends Ash.Route { model () { return [ {id: 1, title: 'My post 1', description: 'WoW'}, {id: 2, title: 'My post 2', description: 'WoWsErS'} ] } } ``` #### Run the server ``` ash server ``` and visit the url: `http://location:3010/posts` ### Models #### Prepare your database Create a new postgres database with a table named `posts`. Add 2 text fields `title` and `description` as well as a sequence `id` Edit your apps database configuration in the environment config file #### Add connection details to `config/environment.js` ```js module.exports = function (environment) { const ENV = { host: 'http://localhost', port: 3010 } ENV.database = { connection: { user: '', pass: '', database: '' } } return ENV } ``` #### Create a Post Model ``` ash generate model post ``` Edit your `app/models/post.js` file to define a models attributes ```js // app/models/post.js import Ash from 'ash-core' export default class PostsRoute extends Ash.Route { static attributes (attr) { attr('title', 'string') attr('description', 'string') } } ``` #### Update your route Edit your `app/routes/posts.js` model hook, change it to return post model data ```js // app/routes/posts.js import Ash from 'ash-core' export default class PostsRoute extends Ash.Route { model () { return this.store.findAll('post') } } ``` #### JSON API Refresh: `http://location:3010/posts` and you should see your posts models serialized in [JSON API format](http://jsonapi.org/).

History

Discover the release history by heading on over to the releases page.

Backers

Maintainers

These amazing people are maintaining this project:
  • Richard Walker digitalsadhu@gmail.com

Sponsors

These amazing people have contributed finances to this project: Become a sponsor!

Contributors

These amazing people have contributed code to this project:

License

Unless stated otherwise all works are: and licensed under: