Skip to content
This repository has been archived by the owner on Jun 19, 2021. It is now read-only.

Commit

Permalink
Documentation update
Browse files Browse the repository at this point in the history
  • Loading branch information
mendezcode committed Oct 1, 2012
1 parent 297f234 commit 95d2c2c
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 109 deletions.
140 changes: 32 additions & 108 deletions app/views/main/main-features.html
Expand Up @@ -2,118 +2,52 @@
[markdown]

Protos is an open source Web Application Framework, focused on high performance, integration, ease of
deployment, maintainability and security. Runs on UNIX-like systems such as **Linux** & **Mac OSX**. Windows
support might be added in the future.
deployment, maintainability and security. Runs on UNIX-like systems such as **Linux** & **Mac OSX**.

## Features
## Features at a Glance

- Powerful Routing
- Powerful Routing & Validation
- Controller Authentication & Route Filters
- RESTful Methods support
- REST Compliant
- Environment based Configuration
- Fast Configuration with bootstrap file
- Multi Core Cluster support
- Easy Deployment with JSON or Command line
- Easy Deployment
- MongoDB, MySQL, Redis & RabbitMQ Development Stack
- Application Helpers
- Application Models supporting ORM & Relationships
- View Helpers
- Models, supporting ORM & Relationships
- Database Drivers & Storages
- Built-in Query Caching for Drivers & Models using NoSQL Storages
- Built-in Support for multiple Template Engines
- View Partials Support
- JSON Responses Support
- Custom & Dynamic Headers
- Built-in & Adjustable Cache-Control settings
- Built-in Proxy Server for Applications
- Built-in Node Inspector for debugging
- Executable used to create/manage/deploy applications & servers
- Full Suite of Functional tests
- Organized Application directory structure

## Development Stack

Protos provides a set of APIs that allow the framework to be extended in all sorts of ways. Use it either to contribute
new functionality & components to it, or to enhance it with the needs of your team/organization.

### Drivers

You have at your disposal the _Database Drivers_, which provide a common set of methods to operate the backend database,
implementing the _Models API_, which allows the Driver to connect with _Models_.

### Storages

_Storages_ are used for caching, session data and anything you can think of. These abstract databases with fast read/write
operations, such as MongoDB and Redis. Storages are also used as the _caching layer_ for Drivers on the _Query Cache_ functionality.

### Models

Models use Drivers under the hood to handle the low level manipulation of their data. They provide automatic validation of data.
You can set your own validation rules with ease on a per-model basis.

The Models can relate with eaach other by using Relationships. These are used to connect models in specific ways, storing only the
references to their related models. You can then retrieve the related models either individually, or in groups.

Model (and Relationships) database-agnostic, you can change the underlying database driver used by the model, and no changes are required. This
means you can use a database backend for development, and another for production (just to give an example). No changes needed on deployment.

### Overview

Here's the Development Stack the framework provides, in a nutshell:

- **Drivers**   _[MongoDB](https://github.com/derdesign/protos/blob/master/drivers/mongodb.js), [MySQL](https://github.com/derdesign/protos/blob/master/drivers/mysql.js)_
- **Storages**   _[MongoDB](https://github.com/derdesign/protos/blob/master/storages/mongodb.js), [Redis](https://github.com/derdesign/protos/blob/master/storages/redis.js)_
- **Models**   _Use any Driver supported_
- **Query Cache (Drivers)**   _Use any Storage supported_
- **Query Cache (Models)**   _Handled by underlying Driver_
- **Caching**   _Use any Storage supported_
- **Sessions**   _Use any Storage supported_
- **Response Caching**   _Use any Storage supported_
- **Logging**   [MongoDB](https://github.com/derdesign/protos/blob/master/middleware/logger/transport-mongodb.js),
[Redis](https://github.com/derdesign/protos/blob/master/middleware/logger/transport-redis.js), [File](https://github.com/derdesign/protos/blob/master/middleware/logger/transport-file.js),
[Console](https://github.com/derdesign/protos/blob/master/middleware/logger/transport-console.js),
[JSON](https://github.com/derdesign/protos/blob/master/middleware/logger/transport-console.js)
- **Message Queue**   _Use the mq middleware_

To install the driver & storage component dependencies, use the `protos install <component>` command. For a full list of components and
their dependencies, see the [dependencies.json](https://github.com/derdesign/protos/blob/master/dependencies.json) file.
- Query Caching for Drivers & Models
- Multiple Template Engines
- View Partials
- JSON Responses
- Proxy Server for Multiple Applications
- Node Inspector for debugging
- Command Line Executable to create & manage apps
- Organized Directory Structure
- Includes complete test suite

## Middleware

The Application's functionality can be extended with the following (ready to use) components:

- [asset_compiler](http://derdesign.github.com/protos/middleware#asset_compiler) &nbsp; *Compiles LESS, Stylus and CoffeeScript, Supports Watch/Compress/Minify.*
- [aws](http://derdesign.github.com/protos/middleware#aws) &nbsp; *Amazon Web Services support. Provides clients to all services (ES3, EC2, etc)*
- [bcrypt](http://derdesign.github.com/protos/middleware#bcrypt) &nbsp; *Blowfish encryption support*
- [body_parser](http://derdesign.github.com/protos/middleware#body_parser) &nbsp; *Parse request bodies and file uploads in POST/PUT requests*
- [cookie_parser](http://derdesign.github.com/protos/middleware#cookie_parser) &nbsp; *Parse cookie headers, Integrates with Sessions & Auth*
- [csrf](http://derdesign.github.com/protos/middleware#csrf) &nbsp; *Cross-Site Request Forgery protection, integrates with Controller Validation*
- [logger](http://derdesign.github.com/protos/middleware#logger) &nbsp; *Application/Request logger, supporting several transports such as MongoDB, Redis, File &amp; console*
- [mailer](http://derdesign.github.com/protos/middleware#mailer) &nbsp; *Send email using SMTP, Amazon SES or Sendmail*
- [ markdown ](http://derdesign.github.com/protos/middleware#markdown) &nbsp; *Parse markdown syntax*
- [production_url](http://derdesign.github.com/protos/middleware#production_url) &nbsp; *Remove port number from application-generated URLs*
- [redirect](http://derdesign.github.com/protos/middleware#redirect) &nbsp; *Quick redirection support (useful for "maintenance mode")*
- [response_cache](http://derdesign.github.com/protos/middleware#response_cache) &nbsp; *Response caching into supported Storages (Redis, MongoDB, etc)*
- [session](http://derdesign.github.com/protos/middleware#session) &nbsp; *Full session support with Storages, guest sessions and regeneration*
- [shortcode](http://derdesign.github.com/protos/middleware#shortcode) &nbsp; *Allows custom content to be inserted into views using shortcodes*
- [socket_io](http://derdesign.github.com/protos/middleware#socket_io) &nbsp; *Socket.io Integration with applications*
- [static_server](http://derdesign.github.com/protos/middleware#static_server) &nbsp; *Complete Static Server solution, supporting Ranges, Conditional GETs, etc*
- [repl](http://derdesign.github.com/protos/middleware#repl) &nbsp; *Provides a REPL to interact with the application's runtime*
- [mq](http://derdesign.github.com/protos/middleware#mq) &nbsp; *Message Queue solution using RabbitMQ*

To install the middleware dependencies, use the `protos install <middleware>` command. For a full list of components and
their dependencies, see the [dependencies.json](https://github.com/derdesign/protos/blob/master/dependencies.json) file.
- [asset_compiler](http://derdesign.github.com/protos/middleware#asset_compiler) &nbsp; *Compiles LESS, Stylus and CoffeeScript. Supports watch/compress/minify*
- [aws](http://derdesign.github.com/protos/middleware#aws) &nbsp; *Amazon Web Services. Provides clients to all services (ES3, EC2, etc)*
- [bcrypt](http://derdesign.github.com/protos/middleware#bcrypt) &nbsp; *Blowfish hashing*
- [body_parser](http://derdesign.github.com/protos/middleware#body_parser) &nbsp; *Allows Parsing of POST & PUT requests & file uploads*
- [cookie_parser](http://derdesign.github.com/protos/middleware#cookie_parser) &nbsp; *Cookie Parsing*
- [csrf](http://derdesign.github.com/protos/middleware#csrf) &nbsp; *CSRF Protection*
- [logger](http://derdesign.github.com/protos/middleware#logger) &nbsp; *Logger. Supported transports: MongoDB, Redis, File & console*
- [mailer](http://derdesign.github.com/protos/middleware#mailer) &nbsp; *Mailer. Supports SMTP, SES or Sendmail*
- [ markdown ](http://derdesign.github.com/protos/middleware#markdown) &nbsp; *Markdown Parser*
- [response_cache](http://derdesign.github.com/protos/middleware#response_cache) &nbsp; *Response Caching*
- [session](http://derdesign.github.com/protos/middleware#session) &nbsp; *Sessions Support*
- [shortcode](http://derdesign.github.com/protos/middleware#shortcode) &nbsp; *Wordpress-like shortcodes*
- [socket_io](http://derdesign.github.com/protos/middleware#socket_io) &nbsp; *Socket.io integration*
- [static_server](http://derdesign.github.com/protos/middleware#static_server) &nbsp; *Static Server. Supports ranges, Conditional GETs*
- [repl](http://derdesign.github.com/protos/middleware#repl) &nbsp; *Appliction Runtime REPL*
- [mq](http://derdesign.github.com/protos/middleware#mq) &nbsp; *Message Queue using RabbitMQ*

## Template Engines

There is a lot of flexibility when it comes to template engines. To use a view engine, just add the extension
to the template and you're set. You don't need to install any npm dependencies.

View Partials can be used across template engines. This means you can use Jade partials within Swig templates. Or CoffeeKup
partials within EJS templates (and vice versa). There are a few exceptions with mustache engines (due to their *logicless*
nature), such as Hogan and Handlebars.

The following view engine components are provided by protos:

- [CoffeeKup](https://github.com/mauricemach/coffeekup)
- [DoT](https://github.com/olado/doT)
- [Eco](https://github.com/sstephenson/eco)
Expand All @@ -131,14 +65,4 @@
- [Swig](https://github.com/paularmstrong/swig)
- [Whiskers](https://github.com/gsf/whiskers.js/tree)

To install the engine dependencies, use the `protos install <engine>` command. For a full list of components and
their dependencies, see the [dependencies.json](https://github.com/derdesign/protos/blob/master/dependencies.json) file.

## Resources

- Follow [@derdesign](http://twitter.com/derdesign) on Twitter for updates.
- Report issues on the [github issues](https://github.com/derdesign/protos/issues) page.
- For support, refer to the [Mailing List](https://groups.google.com/group/protos-web-framework).


[/markdown]
2 changes: 1 addition & 1 deletion public/css/main.less
Expand Up @@ -37,7 +37,7 @@ a:hover { text-decoration: underline; }
h1,h2,h3,h4,h5,h6 { font-weight: normal; line-height: 1.4em; margin: 0 0 0.8em; padding-top: 1.2em; }
h1 { font-size: 170%; }
h2 {
font-size: 155%; margin-top: 3em;
font-size: 155%; margin-top: 1.5em;
font-weight: 500;
}
h3 { font-size: 120%; padding-top: 0.6em; font-size: 15px; font-weight: bold; }
Expand Down

0 comments on commit 95d2c2c

Please sign in to comment.