## Introduction

Developers these days are spoiled with choice when it comes to selecting an MV* framework for structuring and organizing their JavaScript web apps.

Backbone, Ember, AngularJS, Spine... the list of new and stable solutions continues to grow, but just how do you decide on which to use in a sea of so many options?

To help solve this problem, we created TodoMVC - a project which offers the same Todo application implemented using MV* concepts in most of the popular JavaScript MV* frameworks of today.

## Our Stable Apps

- Backbone.js
- Ember.js
- AngularJS
- Spine
- KnockoutJS
- Dojo
- YUI
- Batman.js
- Closure
- Agility.js
- Knockback.js
- GWT

## Apps using RequireJS/AMD

- Backbone.js + RequireJS
- Ember.js + RequireJS

## Compare these to a non-framework implementation

- Vanilla JS
- jQuery

* R = App also demonstrates routing

## Scroll down for 30+ more framework apps in Labs

## What's new in 1.0.x

- All main apps have been completely rewritten for consistency
- Routing has been added to many of these
- We now have 30+ apps being worked on in Labs
- We're using a kick-ass new template
- Framework authors and contributors have been consulted to ensure our apps adhere to best practices
- We're helping AMD users by adding AMD versions of many apps

## Selecting a Framework

Once you've downloaded the latest release and played around with the apps, you'll want to decide on a specific framework to try out.

Study the syntax required for defining models, views and (where applicable) controllers and classes in the frameworks you're interested in and try your hand at editing the code to see how it feels using it first-hand.

Please ensure that if you're happy with this, you do spend more time investigating the framework (including reading the official docs, the source and its complete feature list). There's often a lot more to a framework than what we present in our examples.

## Getting Involved

Is there a bug we haven't fixed or an MV* framework you feel would benefit from being included in TodoMVC?

If so, feel free to fork the repo, read our contribution guidelines, and submit a pull request — we'll be happy to review it for inclusion.

Make sure you use the template as a starting point and read the app specification.

Submit Pull Request »

## Labs

- Maria
- cujo.js
- Meteor
- Derby
- Montage
- SocketStream + jQuery
- Ext.js
- Sammy.js
- JavaScriptMVC
- Stapes
- Epitome
- TroopJS
- soma.js
- DUEL
- PureMVC
- Fidel
- Olives
- PlastronJS
- Dijon
- rAppid.js
- Funnyface.js
- Knockout + RequireJS
- AngularJS + RequireJS
- AngularJS (optimized)
- Backbone.xmpp
- MarionetteJS
- Thorax
- CanJS (Dojo)
- CanJS (Dojo Widget)
- CanJS (jQuery)
- CanJS (jQuery Widget)
- CanJS (MooTools)
- CanJS (YUI)
- CanJS (YUI Widget)