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
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).
The full guide and API documentation are located at fortunejs.com.
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) |
Tests are written with Mocha, and require MongoDB already set up on your system. To run tests:
$ npm test
- Ember Data: the original implementation, it needs a custom adapter to actually work.
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.