README.md in voom-presenters-0.1.11 vs README.md in voom-presenters-0.1.12
- old
+ new
@@ -1,14 +1,43 @@
# Voom::Presenters
+## TLDR;
+Presenters are to HTML/User Interfaces what C is to assembly.
+
A Ruby DSL for describing user interfaces.
The semantics are adopted from [Material Design](https://material.io/).
A presenter generates a Presenter Object Model (POM).
A POM fully describes a user interface.
A POM client can fully render user interface from POM.
+## What are voom-presenters?
+
+* A Ruby user interface abstraction.
+* A Ruby DSL to build a user interface.
+* A power washer for building user interfaces.
+
+## Why?
+
+Building a user interface should like Ruby itself:
+> ... a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write.
+
+Instead building a user interface has turned into:
+> How many languages/technologies/frameworks do I need to learn to build a rich user interface/experience?"
+
+A typical web client requires at a minimum the following: HTML, CSS, Javascript, in addition we need Ruby on the server, plus some SQL.
+That is 5 technologies/languages.
+Now lets talk about a new client like an iOS or Android client. If we go native, we can now add Java and Swift to that list. We are up to 7 technologies/languages!
+We didn't even add any popular extras like coffeescript, haml, sass, and we left out frameworks.
+
+What if you could write all my user interface in Ruby and have it rendered natively in ANY client? The voom-presenters _enable_ that. It is a Ruby DSL that describes a user interface.
+It generates an intermediate Presenter Object Model (POM).
+The POM is a declarative user interface that can be rendered by a POM client.
+The core presenters gem provides a Web client as a fully functional reference implementation.
+
+This concept was initially inspired by the Presenters concepts of Ivar Jacobson as presented by Robert Martin.
+
## Demo
[Demo](https://powerful-bastion-96181.herokuapp.com)
Or to run locally:
@@ -16,25 +45,25 @@
git clone git@github.com:rx/presenters.git
cd presenters/
bundle install
rackup
- open htt://localhost:9292
+ open http://localhost:9292
To see the POM:
- open htt://localhost:9292/pom
+ open http://localhost:9292/index.pom
## User Interface Engine
The POM + A POM Client is an interface engine.
This example downloads the POM of the index page.
Then posts it to the reference web client.
That result is then saved to a file and opened up with a browser.
- curl localhost:9292/pom/index > $TMPDIR/index.json && curl -d "@$TMPDIR/index.json" -X POST localhost:9292/index > $TMPDIR/index.html && open $TMPDIR/index.html
+ curl localhost:9292/index.pom > $TMPDIR/index.json && curl -d "@$TMPDIR/index.json" -X POST localhost:9292/index > $TMPDIR/index.html && open $TMPDIR/index.html
## Status
This project is in a pre-beta status. It is changing frequently as the first user interfaces are being built with it.
Any use should be for internal use only until the status becomes beta.