from web app model design to production with wakanda
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.TRANSCRIPT
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/