Permalink
Browse files

add readme and license

  • Loading branch information...
1 parent 4d9fecf commit fbc19777b58c930252ff53b78b56d036feff2da2 @brentkirby brentkirby committed Sep 12, 2012
Showing with 124 additions and 3 deletions.
  1. +20 −0 LICENSE
  2. +104 −3 README.md
View
20 LICENSE
@@ -0,0 +1,20 @@
+Copyright 2012 Brent Kirby / kurb media, llc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
View
107 README.md
@@ -1,4 +1,105 @@
-interface
-=========
+#Transit
+### Simple Content Management
-Frontend GUI
+Transit is a backend agnostic approach to content management, using the power of Backbone.js. Typical CMS platforms are all-in-one solutions, containing both
+a back-end application, and front-end interface. Transit aims to be only the latter.
+
+###Goals
+
+1. Provide a solid interface for managing content inline within a page
+2. Compatibility with any REST based backend, using JSON as its data structure.
+3. Allow easy integration into any backend environment by utilizing conventions over configuration
+4. Support full customization of the interface, both functionally and aesthetically. This is achieved through the use of `handler` functions and javascript templates.
+
+--
+###Architecture
+
+**Contexts and Deliverables**
+
+The model architecture is based around a primary "Deliverable", which contains one or more "Contexts". Deliverables are typically things like a page, or
+a blog post, but can be anything which contains multiple Contexts.
+
+Contexts can be any type of structured content. Examples could be headings (h1-h6), general text blocks (paragraphs/lists/basic formatting), audio files, videos,
+image galleries... or any other content which can be described in HTML. Each deliverable has a `has_many` relationship to a collection of contexts,
+which can be organized and arranged in any particular order. As an example, consider a `Post` deliverable, which contains some content and a video:
+
+```html
+<article id="post">
+ <h2>The Post Title</h2>
+ <div data-context-id="xxx" class="content">
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit....</p>
+ </div>
+ <h3 data-context-id="xxx">A Sub Heading</h3>
+ <video data-context-id="xxx" src="some_random.mp4" poster="poster.jpg" />
+</article>
+```
+In the example above, the Post's contexts would consist of the body copy (div.content), the sub-heading (h3), and a video. Items like the post title (h2)
+would be described within the Post itself. A JSON representation of the Post "Deliverable" would be as follows:
+
+```json
+{
+ "id" : 1,
+ "_type" : "Post",
+ "title" : "The Post Title",
+ "contexts":[
+ {
+ "id" : 1,
+ "_type" : "TextBlock",
+ "body" : "Lorem ipsum dolor sit amet, consectetur adipisicing elit....",
+ "position": 1
+ },
+ {
+ "id" : 2,
+ "_type" : "Heading",
+ "body" : "A Sub Heading",
+ "node" : "h3",
+ "position": 2
+ },
+ {
+ "id": 3,
+ "_type" : "Video",
+ "source" : "some_random.mp4",
+ "poster" : "poster.jpg",
+ "position": 3
+ }
+ ]
+}
+```
+
+Each model, whether deliverable or context, contains a `_type` attribute (yeah, we use Mongoid a lot) which represents the type of model to be used.
+This is particularly useful when data is loaded, as Transit will automatically map each item to the appropriate Backbone model within your app
+(falling back to a generic `Context` model) before adding it to the deliverable's `contexts` attribute. Contexts also include a `position`
+attribute, which determines the ordering of each context within the deliverable.
+
+The `id`, `_type` and `position` attributes are the only two that are required, additional attributes would be dependent on your particular integration.
+
+Transit also includes an Asset model, which is used for general, user-uploaded files and images.
+
+**Interface**
+
+The UI is designed around the concept of a unified toolbar, which functions similar to a typical "tabbed" interface. The toolbar can contain one or more
+panels, which can be added and removed as necessary depending on the content to be managed.
+
+--
+### Managing Content
+
+...more information coming
+
+--
+### Contributing
+
+Transit is written in [CoffeeScript](http://jashkenas.github.com/coffee-script/), and is designed to function as a NPM package (currently the library has not been pushed).
+Tests are written using [jasmine](http://pivotal.github.com/jasmine/) and coffeescript.
+
+To contribute, fork the [repository on GitHub](https://github.com/kurbmedia/transit) and [send a pull request](http://help.github.com/pull-requests/). Be sure to
+include the issue # of your fix or feature implementation (if applicable), as well as any relevant tests/specs. Pull requests without associated (and passing) tests
+will not be merged.
+
+To assist with backend integration, additional libraries are either planned or in development. This includes a Rails engine (nearing completion), and a
+restful PHP backend (in planning). If you'd be interested in contributing to either of these, please shoot us a message on Github.
+
+--
+### License
+
+Transit is &copy;2011-2012 kurb media, llc. Licensed under the [MIT license](http://en.wikipedia.org/wiki/MIT_License). Do whatever you'd like,
+but contributing any cool features / functionality you may add would simply make you awesome.

0 comments on commit fbc1977

Please sign in to comment.