thewebguy / fortune

Web framework for prototyping rich hypermedia APIs.

Home Page:http://fortunejs.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Fortune.js Build Status

Hello nerds. Fortune is a web framework for prototyping rich hypermedia APIs that implement the JSON API specification. It comes with a modular persistence layer, with MongoDB support out of the box, and an adapter for MySQL, Postgres, & SQLite (see guide for how to use).

Get it by installing from npm:

$ npm install fortune

Features

Fortune implements everything you need to get started with JSON API, with a few extra features:

  • Focus on ease of use, especially for those who are not familiar with node.js. Fortune does the heavy lifting for you.
  • Associations and bi-directional relationship mapping. Fortune manages associations between resources so you don't have to.
  • Hooks to transform resources before writing and after reading, for implementing application-specific logic.

It does not come with any authentication or authorization, you should implement your own application-specific logic (see keystore.js for an example).

Guide & Documentation

The full guide and API documentation are located at fortunejs.com.

Basic Usage

Here is a minimal application:

require('fortune')()

.resource('person', {
  name: String,
  age: Number,
  pets: ['pet'] // "has many" relationship to pets

}).resource('pet', {
  name: String,
  age: Number,
  owner: 'person' // "belongs to" relationship to a person

}).listen(1337);

This exposes a few routes for the person and pet resources, as defined by the JSON API specification:

HTTP Person Pet Notes
GET /people /pets Get a collection of resources, accepts query ?ids=1,2,3...
POST /people /pets Create a resource
GET /people/:id /pets/:id Get a specific resource, or multiple: 1,2,3
PUT /people/:id /pets/:id Create or update a resource
PATCH /people/:id /pets/:id Patch a resource (see RFC 6902)
DELETE /people/:id /pets/:id Delete a resource
GET /people/:id/pets /pets/:id/owner Get a related resource (one level deep)

Unit Testing

Tests are written with Mocha, and require MongoDB already set up on your system. To run tests:

$ npm test

Client-side Implementations

Meta

For release history and roadmap, see CHANGELOG.md.

Fortune is licensed under the MIT license, see LICENSE.md.

Development of Fortune is sponsored by AdStack.

About

Web framework for prototyping rich hypermedia APIs.

http://fortunejs.com

License:MIT License


Languages

Language:JavaScript 100.0%