A client side app maintaining InterMine Lists offering folder/tag organization and live searches.
The app is powered by Chaplin that itself wraps Backbone.js.
The whole stack is built on top of the node.js platform, make sure it is installed.
Brunch is a HTML5 application builder that's agnostic to programming langs and frameworks.
config.coffee
contains brunch configuration, package.json
contains brunch plugins and node config.
For the latest in Brunch documentation, head over to Read the Docs.
Chaplin is a framework on top of Backbone.js that adds some great predefined structure, like ModelView
, Controller
, mediator
, Application
.
We further extend it by adding classes such as the Garbage
one, that consumes objects to dispose of automatically when they are no longer needed.
All View
objects, when instantiated, will publish a message on the notification
channel saying that they have rendered.
Eco lets you embed CoffeeScript logic in your markup. It's like EJS and ERB, but with CoffeeScript inside.
Stylus is a CSS preprocessor with flexible syntax that looks similar to CoffeeScript, mixins, variables and utility functions for color manipulations that make it easy(-ier) to develop themes.
Flatiron is used to serve files and data. Does not play a large role here.
Install the dependencies:
$ npm install -d
Run the server and compile the client watching for changes:
$ npm start
Visit http://127.0.0.1:1111.
To build the files for production, execute the process with the minify option
:
$ node_modules/.bin/brunch build --minify
Following is a list of high level architectural, design and feature requirements as is/will be implemented/not. Strikethrough are implemented.
- Have folders and subfolders for lists (Boris, Enrico)
Drag & drop lists. Like in Google DocsOrganize lists into a folder. Like in Google DocsCreate a new folder. Like in Google Docs- Drag & drop folders.
- Venn diagrams showing overlap between multiple lists selected (Jie)
- Order lists by date, name, number of objects and have this setting stick around (Simon, Enrico)
- Have tags that can be searched to filter lists (Enrico)
Filter lists by their name(Enrico)- Export lists.
- Edit list description and date (Hilde)
- When upgrading a list say how big it is and how long the upgrade process will probably take (Sergio)
- Share lists with others (new functionality added by Daniela)
Client side JavaScript architecture. Using Chaplin wrapped around BackboneMaintainable templating language. Eco lets us use CoffeeScript inside HTMLCSS preprocessor for easy theming. Stylus as it looks closest to CoffeeScript and has coolio features like Color operationsdarken()
and clear cut functions.Automagically package resources. BrunchMake JS files required through CommonJS/AMD. BrunchAutomagically reload the client on changes. BrunchA nicer more readable language for classes. CoffeeScriptCSS based off of a library. Twitter BootstrapManage resource usage of a client side app. Chaplindispose()
and ourclass Garbage
Implement assertions especially on init of methods/classes to catch the unexpected. ourclass AssertException
Cross-module communication using the Mediator and Publish/Subscribe patterns. ChaplinMake local links accessible from the outside. Lists and Folders map through routes and Flatiron always serves theindex.html
regardless of the route requested and the Chaplin instantiates the appropriate controller method.
- classify list objects so that they can be custom styled by the different mines.