Amazing Mongoose Node.js API
npm install amna
var amna = require('amna');
amna.registerServices([ ... ]); // Global Services
amna.registerThings([ ... ]); // Models & Schemas
// Additional setup goes here
// - authentication (if needed, see authentication under Table of Contents)
// - amna.set('view engine', 'ejs') if you need views
amna.registerModules('/', [ ... ]); // URL Modules
// ^ base URL
amna.start({
mongo: {db: 'amna-test'}, // Mongo connection
port: 8080, // Port
settings: { // Express app settings
'key': 'value'
}
});
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
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.
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.
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.
Coming soon...
Technical Note: to regenerate the following section, run
node ./dev/docs