From Web App Model Design to Production with Wakanda

Preview:

DESCRIPTION

There is many interesting platforms out there to develop Web applications, like .NET, Spring, ruby on rails, Django, LAMP, Meteor, and so on. In this presentation, you will discover Wakanda a Model driven NoSQL / SSJS platform built on Web standards. You will see how a project starts, can be designed, tested, developed by a team, debugged, administrated, maintained, and then how to update it in the future. We will compare to some existing platforms and why Wakanda could make you more efficient.

Citation preview

From Web App Model Design

to production with Wakanda

Alexandre Morgaut - 4D @amorgaut@wakandasoft

PresentationW3C AC member

Web Architect

JS Expert

REST Lover

NoSQL Fanboy

@amorgaut

http://about.me/amorgaut

Agenda

Wakanda Architecture

How a Project start!

Model vs Mockup

Test-Driven Development

Team Work & Source Control

Debugging

Deployment & Administration

Evolutions & Refactoring

wakanda

Open Source Cross-platform development and deployment system

for model-driven web-based applications

wakanda.org

@wakandasoft

JSeverywhere.org

@JSeverywhere

Wakanda

Wakanda Server(aka WakandaDB)

Wakanda Application Framework

Wakanda Studio

DataStore Model Editor

Code Editor

GUI Designer

Debugger

Users & Groups

AdministrationExtensions

REST/JSON

JSON-RPC

WakandaDB

Wakanda Server(aka WakandaDB)

Your Development ToolsVisual Studio, XCode, NetBeans, Eclipse,

Maqueta, Codio, Cloud9, Orion, Sencha Architect+

Chrome Web Inspector

Your Server FrameworkJava, .NET, node.js PHP, Python, Ruby...

REST/JSON

Webkit debugger protocol 1.0& Firebug Crossfire protocol

Your Web app Client FrameworkExtJS, Sencha Touch, Kendo UI, Backbone.js...

Your native app Client FrameworkiOS, Androïd, .NET...

REST/JSON, Git

Standard BasedW3C

- XMLHttpRequest, WindowTimer,

- Web Storage, Web Worker, File, FileSystem, Blob, ...

CommonJS

- Modules, Package, Unit Test

Other

- Console, JSON, JSON-RPC, REST

(+ some node.js support)

Webkit JavaScriptCore

Open Source, multi-threaded, preemptive, thread-safe, 64bits

Fast (2 JIT), strict mode (ES5), well structured & documented

aka SquirrelFish Extreme & Nitro Extremehttp://trac.webkit.org/wiki/JavaScriptCore

Wakanda Circle of Friends

How a project starts

“Expression of a requirement”

“Birth of an innovative idea”

“First usage of an innovative technology”

Model vs Mockup

Mockup

Fast representation of a “vision”

Human friendly shared idea

Model-driven

GUI is too platform specific

Removes distraction from GUI

Focus on requirements

Test-Driven Development

Test Service

var testCase = {

name: "testCaseName", testFails: function() { Y.Assert.isFalse(true); }, testPasses: function() { Y.Assert.isFalse(false); } };

http://doc.wakanda.org/Technical-Notes/Advanced/Writing-Unit-Tests-in-Wakanda.300-959974.en.html

YUI Test

Client or Server JS tests

CommonJS Unit Testvar! assert,! accountSvc;

assert = require('assert');TwilioScript = require('wakanda-twilio/core/twiml').TwilioScript;

exports['test response'] = function Twilio_Test_Twiml_response() { var script = new TwilioScript();

var twiml = '<?xml version="1.0" encoding="UTF-8"?>\n'; twiml += '<Response>\n'; twiml += '</Response>' assert.strictEqual(script.toString(), twiml, 'simple response ok');};};

exports['test hangup()'] = function Twilio_Test_Twiml_hangup() { var script = new TwilioScript(); script.hangup();

var twiml = '<?xml version="1.0" encoding="UTF-8"?>\n'; twiml += '<Response>\n'; twiml += '<Hangup />\n'; twiml += '</Response>' assert.strictEqual(script.toString(), twiml, 'hangup response ok');};

http://wiki.commonjs.org/wiki/Unit_Testing/1.0

Team Work& Source Control

Team WorkServer

- Model split in SSJS modules

- Service & RPC modules, Shared Workers

Client

- Web pages & Web Components

- Custom Widgets

- Themes, application.css

Tool

- Studio Extensions

Source Control

Commit

Log / History

Pull / Push on Github

Pull / Push on Server

Debugging

Wakanda Internal Debugger

Web Inspector

Deployment & Administration

Server Administration

Data Browser

Experimental Tool

Deployment

Gandi VPS

Evolutions& Refactoring

Application Evolutions

Sandboxed Modules (libs, RPC, Services)

Sandboxed Web Components

Updatable DataModel

- auto type conversion

- Extended Models

- openRemoteCatalog()

Wakanda Evolutions

Short releases cycle

More and more Standard support

Open Source & Enterprise Editions

Q & A

San Francisco, CA - Oct. 25th

http://jseverywhere.org

Wakanda

http://wakanda.org

@jseverywhere

@wakandasoft

Client and Server JavaScript APIs Community Group

http://www.w3.org/community/jseverywhere/

Recommended