Spludo is high performance, evented, server side, prototype based, javascript mvc web framework. It includes DI+AOP and a Convention-Over-Configuration Approach. It's OpenSource-licensed under the MIT License. Developed by DracoBlue.

Want to get started? Try docsforit! - the 10 steps tutorial to create a real world application with spludo in minutes.

It's running on the node.JS-platform, which employs the lightning fast V8-Engine. Since node is just a Javascript-Server, Spludo fills the gap when it comes to modularized application development on top of node.

Features

Fast

600-4000 reqs/s, no busy waiting, long-polling requests
Evented / No Busy Waiting

Since all I/O is done evented, CPU is not blocked while waiting for responses. Thus its also made for long-polling requests or as a websocket server.

High Performance

Web applications built on top of Spludo (like spludo.com) can handle 600-4000 dynamic requests/second with one single 3Ghz core.

Long-Polling Requests

Most web engines (running on Fast-CGI) have only a limited amount of processes (~8 is a common setup), which can run at the same time.

Node was proven to have up to 16.000 requests open on one node process. Spludo is designed to make perfect usage of this feature.

That's why chat.nodejs.org is made with plain Javascript!

Templating

Haml, Textile, Markdown, EJS, JS, Mustache

Templating

You are free to use any templating engine and even pure Javascript for your views.

Currently available are Haml, Markdown, Textile, Mustache and Ejs.

Creating your own view engine is very simple and straight forward.

Routing

String or RegExp routes. Even hierachical!
Routing

A controller can be registered on any path. A path is either a string or a regexp. If you want to structure your controllers hierarchical, you may even register one dispatcher-controller (e.g. /^api\//) and dispatch to other controllers from there.

Configuration

Local+Global, Deployment-Specific
Configuration

Configure all settings at one file, deployment specific or even by environment.

Session

Cookies, ApiToken or even Facebook
Session

Authentication works with Cookies, Facebook or anything else. Extra data is stored in a Storage.

Plugins

Extend everything, Dependency Injection, Aspects
Plugins

A plugin extends the application and can do everything that the app can. Most of the non-core default spludo features are just a plugin!

The convention over configuration approach enables the plugin as soon as it's dropped into the application.

Dependency Injection

The entire core reads the base classes from the config. So you can replace everything without performance drawback.

Aspects

The default aspects like Logging and Options can be added to any class. Writing your own in javascript works like a charm, because its Javascript!

CSS/JS Assets

Combine CSS/JS, Sass/Coffee on-the-fly
CSS

You can combine multiple CSS to a combined file, compile sass-files on the fly to css and switch all this off when in developing.

Javascript

You can combine multiple Javascript files to a combined file, compile coffee script-files on the fly to javascript and switch all this off when in developing.

Services

Bind databases, files and external systems easily
Service (since 1.1)

You can easily generate services from database connections. This approach is following Fowlers Service-Layer-Pattern.

Domain Model (since 1.1)

When generating a service the fitting Domain Model class is created. Thus you can easily exchange the service with dependency injection, and keep the interface consistent.

Validation

Numbers, Strings, Objects or your Own!
Validation

Automatically validate any object structure with the default validators or create your own validator.

Databases

CRUD layer for Mysql, more to come!
DatabaseDriver (since 1.1)

A database driver contains contains methods to create, update, delete and select rows from the database. It also offers method to retrieve meta data, which will be used for code generation.

QA + Tests

JSLint, Continuous Integration, Async Tests
Shipped with Quality Assurance

An application ships with a complete Testing-Framework.

By using ant-tasks you can execute the tests, generate junit.xml and generate checkstyle.xml from jslint.

With some clicks you can integrate it into hudson-ci or any other continuous integration tool of your choice.

K/V-Storages

MongoDB, Mysql, Redis, Memory
Storage

The Storage is a generic interface for key-value-stores. You can easily switch between Memory, MongoDB, Redis, Mysql and many more.

Most Recent Commits: master