Browse files


  • Loading branch information...
1 parent 7a7a840 commit 735419e497dd62fa32f6fd6861b7d83b9e36d674 @rsms committed Aug 6, 2010
Showing with 41 additions and 2 deletions.
  1. +41 −2
@@ -1,8 +1,47 @@
# oui
-Client/Server web app framework thingy. It's javascript all the way baby.
+Oui is a kit and framework for building larger websites. Design websites like you would design a networked, distributed desktop application.
-Developed as part of the new [Dropular]( website.
+- All code (on the server and in the client) is modern JavaScript
+- Server runs [node.js](
+- The user interface is completely handled client-side
+- All JavaScript, HTML and CSS is namespaced (derived from file structure)
+Normally this is how rich HTML clients are designed:
+<img src="">
+This quickly gets messy with large sites and you often end up splitting up content into multiple actual requests simply because there's no better way to structure your source.
+Now, Oui takes another approach by letting you structure your content regarding to *modules* rather than *technology*:
+<img src="">
+As soon as any content is modified, an active processor and compiler automatically updates the three final index files -- web browsers get what they want (few requests, optimized structure, etc) and you can structure your work in a logical way (by logical units/modules rather than scattered around in large files).
+## Features
+The server keeps no persistent state, thus allowing for scalability:
+- If a server instance dies, nothing can break since there is no finalization process nor any state which can break.
+- Secure session support
+ - Sessions are transient but buffered in memory for each server instance.
+ - Persistent session data is created and updated by user-defined hooks.
+ - Authentication tokens cached in sessions and can be wrapped in user-defined
+ types (prototypes).
+- Multi-site support
+ - Clients connect to different server instances (e.g.,, etc)
+ - Which server instance to connect to is chosen by random (with some weightening) for "new" clients
+ - Clients sticks to a server instance as long as the server does not reply with any 5xx responses (in which case the client selects a new server using round-robin).
+ - When a server instance fails (crashes) the client will automatically connect ti a new backend and re-send the request (which caused the detection of a faulty server).
+- Built-in authentication
+ - Challenge-response with intermediate, cacheable representation
+ - User-defineable hooks (both on the server and the client side)
+ - Support for custom authentication schemes (e.g. plain text, oath, etc)
+ - Sensible defaults (ready out-of-the-box), requiring virtually no programming effort, get you started quickly
+Initially developed as part of the 2010 version of [](
## Authors

0 comments on commit 735419e

Please sign in to comment.