ash-cli
Cli for the Ash API framework
View the API docs at https://ash-framework.github.io/core
Install
NPM
- Install:
npm install --global ash-cli
- Executable:
ash
## 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: