AMNA
Amazing Mongoose Node.js API
JavaScript API Server Framework
Installation
npm install amna
Usage
var amna = require('amna');
amna.registerServices([ ... ]);
amna.registerThings([ ... ]);
amna.registerModules('/', [ ... ]);
amna.start({
mongo: {db: 'amna-test'},
port: 8080,
settings: {
'key': 'value'
}
});
Introduction
Amna is a highly opinionated, pre-structured API development platform. It eliminates a lot of the typical repetitive code that is found in many Node.js API projects. Amna combines the following packages into one cohesive framework, and wraps commonly used functionality:
- Express 4
- Passport
- Mongoose
- Find or Create Plugin
- Text Search Plugin
- Types
- EJS Templates
- Jade Templates (coming soon)
- Static Server
Terminology
Thing
An amna.thing
is an object model containing a schema, and various helper methods. Things are available at amna.things.*
after registration.
Things are registered by a call to amna.registerThings(['thing_name'])
, which loads amna.$THINGS_DIR/thing_name.js
- by default set to ./amna_things
relative to your project's root folder. You can change this path (not recommended) by setting amna.$THINGS_DIR = 'some_things_dir';
in the additional setup section of your app's main file.
Service
A service is a globally availible JavaScript object or function, available at amna.services.*
after registration.
Services are registered by a call to amna.registerServices(['service_name'])
, which loads amna.$SERVICES_DIR/service_name.js
- by default set to ./amna_services
relative to your project's root folder. You can change this path (not recommended) by setting amna.$SERVICES_DIR = 'some_services_dir';
in the additional setup section of your app's main file.
Module
A module is a URL route handler, and may be composed of amna.route
, amna.controller
, or amna.collection
types.
Modules are registered by a call to amna.registerModules(['module_name'])
, which loads amna.$MODULES_DIR/module_name/module.js
- by default set to ./amna_modules
relative to your project's root folder. You can change this path (not recommended) by setting amna.$MODULES_DIR = 'some_modules_dir';
in the additional setup section of your app's main file.
Example Projects
Coming soon...
Documentation
Technical Note: to regenerate the following section, run node ./dev/docs
Table of Contents