I'm turning Marshall McLuhan on his head.
In 2013, the message is now the medium! :)
Design your message (the xsd schema) and let it be the Driver of Change. Generate all other artifacts from your messages and then your bug count, inconsistencies and maintenance plummet. The simplicity of Node.js lends itself to this approach. In theory, your labor-intensive areas become ( in yellow highlights ):
- Schema design (the xsd)
- Top-half of UI code
- Business logic
- Integration points
The theory looks promising with the ModelDrivenNode project. I've done similar java projects but Websphere, Weblogic, Tomcat, etc, are more complicated to template and have legacy issues.
Node.js was designed for the modern Web and for this project I'm using the MEAN stack. There's less impedance-mismatch, less transformation (json<->json), less configuration. The application becomes more dynamic but less complex.
Even integration points are simpler because they share common language and design contraints.
Imagine a commmercial e-commerce system with 1000+ database tables (aka Websphere Commerce Suite, SAP or Oracle ATG) which is regenerated after custom schema changes. No more five-year projects, no more armies of minions hand-coding bugs year after year...
The templating engine is generic. Drop a CRM schema into it. Drop an ERP schema into it and create a full enterprise system with much less complexity. The control points are the schema and templates, it's a level of abstraction above the code and something companies once strived for but fell short of.
Model-Driven Node: Part 2, The Dynamic Web
Model-Driven Node: Part 3, Object Graph Impedance
Model-Driven Node: Part 4, XSD Schema Extended
Model-Driven Node: Part 5, XJC Compiler
Model-Driven Node: Part 6, Project Scalability
Model-Driven Node: Part 7, Reference Implementation
Model-Driven Node: Part 8, Tags and Queues
Model-Driven Node: Part 9, URL Namespacing
Model-Driven Node: Part 10, ng JSONEditor