High-level I/O for web applications.
Fortune is a high-level I/O library for web applications. It provides an implementation of entity-relationship modelling, a data storage adapter and serialization interface, and hooks for application-specific logic. These parts working together can be used to power real-time (WebSocket) and hypermedia applications (RMM Level 3), including web pages and HTTP APIs.
View the website for documentation. Get it from
$ npm install fortune --save
Let's model an API that models Twitter's basic functionality:
// store.jsconst fortune = require'fortune'moduleexports = fortunecreatedefineType'user'name: type: String// Following and followers are inversely related (many-to-many).following: link: 'user' inverse: 'followers' isArray: truefollowers: link: 'user' inverse: 'following' isArray: true// Many-to-one relationship of user posts to post author.posts: link: 'post' inverse: 'author' isArray: truedefineType'post'message: type: String// One-to-many relationship of post author to user posts.author: link: 'user' inverse: 'posts'
Then lets add a HTTP server:
// server.jsconst http = require'http'const fortune = require'fortune'const store = require'./store'// The `fortune.net.http` helper function returns a listener function which// does content negotiation, and maps the internal response to a HTTP response.const server = httpcreateServerfortunenethttpstorestoreconnectthen => serverlisten1337
See the plugins page for more details.
This software is licensed under the MIT license.