You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{"payload":{"allShortcutsEnabled":false,"fileTree":{"":{"items":[{"name":"architecture-examples","path":"architecture-examples","contentType":"directory"},{"name":"bower_components","path":"bower_components","contentType":"directory"},{"name":"dependency-examples","path":"dependency-examples","contentType":"directory"},{"name":"labs","path":"labs","contentType":"directory"},{"name":"media","path":"media","contentType":"directory"},{"name":"site-assets","path":"site-assets","contentType":"directory"},{"name":"tasks","path":"tasks","contentType":"directory"},{"name":"template","path":"template","contentType":"directory"},{"name":"vanilla-examples","path":"vanilla-examples","contentType":"directory"},{"name":".editorconfig","path":".editorconfig","contentType":"file"},{"name":".gitattributes","path":".gitattributes","contentType":"file"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".jshintrc","path":".jshintrc","contentType":"file"},{"name":".nojekyll","path":".nojekyll","contentType":"file"},{"name":"CNAME","path":"CNAME","contentType":"file"},{"name":"app-spec.md","path":"app-spec.md","contentType":"file"},{"name":"bower.json","path":"bower.json","contentType":"file"},{"name":"changelog.md","path":"changelog.md","contentType":"file"},{"name":"codestyle.md","path":"codestyle.md","contentType":"file"},{"name":"contributing.md","path":"contributing.md","contentType":"file"},{"name":"index.html","path":"index.html","contentType":"file"},{"name":"learn.json","path":"learn.json","contentType":"file"},{"name":"learn.template.json","path":"learn.template.json","contentType":"file"},{"name":"license.md","path":"license.md","contentType":"file"},{"name":"readme.md","path":"readme.md","contentType":"file"}],"totalCount":25}},"fileTreeProcessingTime":9.797936,"foldersToFetch":[],"incompleteFileTree":false,"repo":{"id":14409346,"defaultBranch":"gh-pages","name":"todomvc","ownerLogin":"torifat","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2013-11-14T22:55:30.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/208544?v=4","public":true,"private":false,"isOrgOwned":false},"codeLineWrapEnabled":false,"symbolsExpanded":false,"treeExpanded":true,"refInfo":{"name":"gh-pages","listCacheKey":"v0:1618724195.067573","canEdit":false,"refType":"branch","currentOid":"d8022a08670a8bc163dfbe32776d40361d3e77fb"},"path":"index.html","currentUser":null,"blob":{"rawLines":["\u003c!doctype html\u003e","\u003chtml lang=\"en\"\u003e","\t\u003chead\u003e","\t\t\u003cmeta charset=\"utf-8\"\u003e","\t\t\u003ctitle\u003eTodoMVC\u003c/title\u003e","\t\t\u003cmeta name=\"description\" content=\"Helping you select an MV* framework - Todo apps for Backbone.js, Ember.js, AngularJS, Spine and many more\"\u003e","\t\t\u003cmeta name=\"viewport\" content=\"width=device-width,initial-scale=1\"\u003e","\t\t\u003cmeta name=\"twitter:card\" content=\"summary\"\u003e","\t\t\u003cmeta property=\"og:url\" content=\"http://todomvc.com\"\u003e","\t\t\u003cmeta property=\"og:title\" content=\"TodoMVC\"\u003e","\t\t\u003cmeta property=\"og:image\" content=\"https://raw.github.com/tastejs/todomvc/gh-pages/site-assets/screenshot.png\"\u003e","\t\t\u003cmeta property=\"og:description\" content=\"Helping you select an MV* framework - Todo apps for Backbone.js, Ember.js, AngularJS, Spine and many more\"\u003e","\t\t\u003clink rel=\"shortcut icon\" href=\"site-assets/favicon.ico\"\u003e","\t\t\u003clink rel=\"stylesheet\" href=\"bower_components/bootstrap/docs/assets/css/bootstrap.css\"\u003e","\t\t\u003clink rel=\"stylesheet\" href=\"bower_components/bootstrap/docs/assets/css/bootstrap-responsive.css\"\u003e","\t\t\u003clink rel=\"stylesheet\" href=\"site-assets/main.css\"\u003e","\t\u003c/head\u003e","\t\u003cbody\u003e","\t\t\u003cdiv class=\"container\"\u003e","\t\t\t\u003cheader class=\"row\"\u003e","\t\t\t\t\u003cdiv class=\"span8\"\u003e","\t\t\t\t\t\u003cimg class=\"logo\" src=\"site-assets/logo.svg\" width=\"500\" height=\"86\" alt=\"TodoMVC\"\u003e","\t\t\t\t\t\u003cp\u003eHelping you \u003cstrong\u003eselect\u003c/strong\u003e an MV* framework\u003c/p\u003e","\t\t\t\t\t\u003cnav\u003e","\t\t\t\t\t\t\u003ca href=\"https://github.com/tastejs/todomvc/zipball/1.2.0\" class=\"zocial red\"\u003eDownload (1.2)\u003c/a\u003e","\t\t\t\t\t\t\u003ca href=\"https://github.com/tastejs/todomvc\" class=\"zocial red\"\u003eView project on GitHub\u003c/a\u003e","\t\t\t\t\t\u003c/nav\u003e","\t\t\t\t\u003c/div\u003e","\t\t\t\t\u003cdiv class=\"span4\"\u003e","\t\t\t\t\t\u003cimg class=\"logo-icon\" src=\"site-assets/logo-icon.png\" width=\"330\" height=\"330\" alt=\"TodoMVC\"\u003e","\t\t\t\t\u003c/div\u003e","\t\t\t\u003c/header\u003e","\t\t\t\u003cdiv class=\"row\"\u003e","\t\t\t\t\u003cdiv class=\"span4\"\u003e","\t\t\t\t\t\u003ch2\u003eIntroduction\u003c/h2\u003e","\t\t\t\t\t\u003cp\u003eDevelopers these days are spoiled with choice when it comes to \u003ca href=\"http://coding.smashingmagazine.com/2012/07/27/journey-through-the-javascript-mvc-jungle/\"\u003eselecting\u003c/a\u003e an \u003cstrong\u003eMV* framework\u003c/strong\u003e for structuring and organizing their JavaScript web apps.\u003c/p\u003e","\t\t\t\t\t\u003cp\u003eBackbone, 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?\u003c/p\u003e","\t\t\t\t\t\u003cp\u003eTo help solve this problem, we created \u003ca href=\"https://github.com/tastejs/todomvc\"\u003eTodoMVC\u003c/a\u003e - a project which offers the same Todo application implemented using MV* concepts in most of the popular JavaScript MV* frameworks of today.\u003c/p\u003e","\t\t\t\t\t\u003ca href=\"https://twitter.com/tastejs\" class=\"twitter-follow-button\" data-show-count=\"false\" data-show-screen-name=\"false\"\u003e\u003c/a\u003e","\t\t\t\t\t\u003ca href=\"https://twitter.com/share\" class=\"twitter-share-button\" data-via=\"tastejs\" data-url=\"http://todomvc.com\" data-text=\"TodoMVC - Helping you select an MV* framework - Todo apps for Backbone.js, Ember.js, AngularJS, and more\"\u003e\u003c/a\u003e","\t\t\t\t\t\u003cdiv class=\"g-plusone\" data-size=\"medium\" data-annotation=\"none\" data-href=\"http://todomvc.com\"\u003e\u003c/div\u003e","\t\t\t\t\u003c/div\u003e","\t\t\t\t\u003cdiv class=\"span8\"\u003e","\t\t\t\t\t\u003ch2\u003eJavaScript Apps\u003c/h2\u003e","\t\t\t\t\t\u003cul class=\"applist\"\u003e","\t\t\t\t\t\t\u003cli class=\"routing\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"architecture-examples/backbone/\" data-source=\"http://documentcloud.github.com/backbone/\" data-content=\"Backbone.js gives structure to web applications by providing models with key-value binding and custom events, collections with a rich API of enumerable functions, views with declarative event handling, and connects it all to your existing API over a RESTful JSON interface.\"\u003eBackbone.js\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"architecture-examples/angularjs/\" data-source=\"http://angularjs.org\" data-content=\"What HTML would have been had it been designed for web apps\"\u003eAngularJS\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"architecture-examples/emberjs/\" data-source=\"http://emberjs.com\" data-content=\"Ember is a JavaScript framework for creating ambitious web applications that eliminates boilerplate and provides a standard application architecture.\"\u003eEmber.js\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"architecture-examples/knockoutjs/\" data-source=\"http://knockoutjs.com\" data-content=\"Simplify dynamic JavaScript UIs by applying the Model-View-View Model (MVVM) pattern\"\u003eKnockoutJS\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"architecture-examples/dojo/\" data-source=\"http://dojotoolkit.org\" data-content=\"Dojo saves you time and scales with your development process, using web standards as its platform. It’s the toolkit experienced developers turn to for building high quality desktop and mobile web applications.\"\u003eDojo\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"architecture-examples/yui/\" data-source=\"http://yuilibrary.com\" data-content=\"YUI's lightweight core and modular architecture make it scalable, fast, and robust. Built by frontend engineers at Yahoo!, YUI powers the most popular websites in the world.\"\u003eYUI\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"architecture-examples/agilityjs/\" data-source=\"http://agilityjs.com\" data-content=\"Agility.js is an MVC library for Javascript that lets you write maintainable and reusable browser code without the infrastructural overhead found in other MVC libraries. The goal is to enable developers to write web apps at least as quickly as with jQuery, while simplifying long-term maintainability through MVC objects.\"\u003eAgility.js\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"architecture-examples/knockback/\" data-source=\"http://kmalakoff.github.com/knockback/\" data-content=\"Knockback.js provides Knockout.js magic for Backbone.js Models and Collections.\"\u003eKnockback.js\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"architecture-examples/canjs/\" data-source=\"http://canjs.us\" data-content=\"CanJS with jQuery. CanJS is a client-side, JavaScript framework that makes building rich web applications easy. It provides can.Model (for connecting to RESTful JSON interfaces), can.View (for template loading and caching), can.Observe (for key-value binding), can.EJS (live binding templates), can.Control (declarative event bindings) and can.route (routing support).\"\u003eCanJS\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"architecture-examples/maria/\" data-source=\"https://github.com/petermichaux/maria\" data-content=\"An MVC framework for JavaScript applications. The real MVC. The Smalltalk MVC. The Gang of Four MVC. The three core design patterns of MVC (observer, composite, and strategy) are embedded in Maria's Model, View, and Controller objects. Other patterns traditionally included in MVC implementations (e.g. factory method and template) make appearances too.\"\u003eMaria\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"architecture-examples/polymer/index.html\" data-source=\"http://polymer-project.org\" data-content=\"Polymer is a new type of library for the web, built on top of Web Components, and designed to leverage the evolving web platform on modern browsers. It is comprised of core platform features (e.g Shadow DOM, Custom Elements, MDV) enabled with polyfills and a next generation web application framework built on these technologies.\"\u003ePolymer\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/cujo/index.html\" data-source=\"http://cujojs.com\" data-content=\"cujoJS is an architectural framework for building highly modular, scalable, maintainable applications in Javascript. It provides architectural plumbing, such as modules (AMD and CommonJS), declarative application composition, declarative connections, and aspect oriented programming.\"\u003ecujoJS\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/dermis/\" data-source=\"https://github.com/wearefractal/dermis\" data-content=\"dermis is a tiny framework that provides models, collections, controllers, and data-binding out of the box. dermis is designed to be the simplest possible solution for creating complex applications\"\u003edermis\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/montage/\" data-source=\"http://montagejs.org\" data-content=\"Montage simplifies the development of rich HTML5 applications by providing modular components, real-time two-way data binding, CommonJS dependency management, and many more conveniences.\"\u003eMontage\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/extjs/\" data-source=\"http://www.sencha.com/products/extjs\" data-content=\"Ext JS 4 is the next major advancement in our JavaScript framework. Featuring expanded functionality, plugin-free charting, and a new MVC architecture it's the best Ext JS yet. Create incredible web apps for every browser.\"\u003eExt.js\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/sammyjs/\" data-source=\"http://sammyjs.org\" data-content=\"Sammy.js is a tiny JavaScript framework developed to ease the pain and provide a basic structure for developing JavaScript applications.\"\u003eSammy.js\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/stapes/\" data-source=\"http://hay.github.com/stapes\" data-content=\"Stapes is a (really) tiny Javascript MVC micro-framework (1.7kb) that has all the building blocks you need when writing an MVC app. It includes a powerful event system, support for inheritance, use with AMD, plugin support and more. A RequireJS Todo application is \u003ca href='labs/dependency-examples/stapes_require/index.html'\u003ealso\u003c/a\u003e available.\"\u003eStapes\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/epitome/\" data-source=\"http://dimitarchristoff.github.com/Epitome\" data-content=\"Epitome is a new extensible and modular open-source MVP* framework, built out of MooTools Classes and Events.\"\u003eEpitome\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/somajs/\" data-source=\"http://somajs.github.com/somajs\" data-content=\"soma.js is a framework created to build scalable and maintainable javascript applications.\"\u003esoma.js\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/duel/www/\" data-source=\"https://bitbucket.org/mckamey/duel/wiki/Home\" data-content=\"DUEL is a dual-side templating engine using HTML for layout and 100% pure JavaScript as the binding language. The same views may be executed both directly in the browser (client-side template) and on the server (server-side template).\"\u003eDUEL\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/kendo/\" data-source=\"http://www.kendoui.com/\" data-content=\"Kendo UI is a comprehensive HTML5, JavaScript framework for modern web and mobile app development\"\u003eKendo UI\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/puremvc/\" data-source=\"http://puremvc.github.com\" data-content=\"PureMVC is a lightweight framework for creating applications based upon the classic Model-View-Controller design meta-pattern.\"\u003ePureMVC\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/olives/\" data-source=\"https://github.com/flams/olives\" data-content=\"Olives is a JS MVC framework that helps you create realtime UIs. It includes a set of AMD/CommonJS modules that are easily extensive, a high level of abstraction to reduce boilerplate and is based on socket.io, to provide a powerful means to communicate with node.js.\"\u003eOlives\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/plastronjs/\" data-source=\"https://github.com/rhysbrettbowen/PlastronJS\" data-content=\"PlastronJS is an mvc framework built on top of the Closure Library and built to compile with projects that use the Closure Compiler.\"\u003ePlastronJS\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/dijon/\" data-source=\"https://github.com/creynders/dijon-framework\" data-content=\"Dijon is an IOC and DI micro-framework for Javascript. Originally it was meant to be a port of Robotlegs, but deviated to something quite different. It remains however heavily inspired by Robotlegs, and more specifically Swiftsuspenders.\"\u003eDijon\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/rappidjs/\" data-source=\"http://www.rappidjs.com\" data-content=\"rAppid.js is a declarative JavaScript framework for rapid web application development. It supports dependency loading, Model-View binding, View-Model binding, dependency injection and i18n.\"\u003erAppid.js\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/knockoutjs_classBindingProvider/\" data-source=\"https://github.com/rniemeyer/knockout-classBindingProvider\" data-content=\"This project is an adaptation of /architecture-examples/knockoutjs with Ryan Niemeyer's Class Binding Provider.\"\u003eKnockout +\u003cbr\u003e ClassBinding\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/extjs_deftjs/\" data-source=\"http://deftjs.org/\" data-content=\"Essential extensions for enterprise web and mobile application development with Ext JS and Sencha Touch\"\u003eDeftJS + ExtJS\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/ariatemplates/\" data-source=\"http://ariatemplates.com/\" data-content=\"Aria Templates has been designed for web apps that are used 8+ hours a day, and that need to display and process high amount of data with a minimum of bandwidth consumption.\"\u003eAria Templates\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/dependency-examples/enyo_backbone/\" data-source=\"http://enyojs.com/\" data-content=\"Enyo is a simple but powerful encapsulation model, which helps you factor application functionality into self-contained building blocks that are easy to reuse and maintain.\"\u003eEnyo +\u003cbr\u003eBackbone.js\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"architecture-examples/angularjs-perf/\" data-source=\"http://angularjs.org\" data-content=\"What HTML would have been had it been designed for web apps. A version with several performance optimizations.\"\u003eAngularJS \u003cbr\u003e(optimized)\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/react/\" data-source=\"http://facebook.github.io/react/\" data-content=\"React is a JavaScript library for building user interfaces.\"\u003eReact\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/sapui5/\" data-source=\"http://scn.sap.com/community/developer-center/front-end\" data-content=\"SAPUI5 is SAP's HTML5-based UI technology that allows you to build rich, interactive Web applications.\"\u003eSAPUI5\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/exoskeleton/\" data-source=\"http://exosjs.com/\" data-content=\"A faster and leaner Backbone for your HTML5 apps.\"\u003eExoskeleton\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/atmajs/\" data-source=\"http://atmajs.com/\" data-content=\"HMVC and the component-based architecture for building client, server or hybrid applications\"\u003eAtma.js\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\u003c/ul\u003e","\t\t\t\t\t\u003cul class=\"legend\"\u003e","\t\t\t\t\t\t\u003cli\u003e\u003cb\u003e*\u003c/b\u003e \u003cspan class=\"label\"\u003eR\u003c/span\u003e = App also demonstrates routing\u003c/li\u003e","\t\t\t\t\t\t\u003cli\u003e\u003cb\u003e*\u003c/b\u003e \u003cspan class=\"labs-example\"\u003eMaroon\u003c/span\u003e = App requires further work to comply with \u003ca href=\"https://github.com/tastejs/todomvc/wiki/App-Specification\"\u003ethe spec\u003c/a\u003e\u003c/li\u003e","\t\t\t\t\t\u003c/ul\u003e","\t\t\t\t\t\u003chr\u003e","\t\t\t\t\t\u003ch2\u003eCompile To JavaScript\u003c/h2\u003e","\t\t\t\t\t\u003cul class=\"applist ctojs\"\u003e","\t\t\t\t\t\t\u003cli class=\"routing\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"architecture-examples/spine/\" data-source=\"http://spinejs.com\" data-content=\"Spine is a lightweight framework for building JavaScript web applications. Spine gives you an MVC structure and then gets out of your way, allowing you to concentrate on the fun stuff, building awesome web applications.\"\u003eSpine\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"architecture-examples/dart/web/\" data-source=\"http://dartlang.org\" data-content=\"Dart firstly targets the development of modern and large scale browser-side web apps. It's an object oriented language with a C-style syntax. It has two run modes : it can be compiled to JS, and will later run in native VM in compliant browsers (just in a dedicated Chromium provided with Dart SDK for the moment).\"\u003eDart\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"architecture-examples/gwt/\" data-source=\"https://developers.google.com/web-toolkit/\" data-content=\"Google Web Toolkit (GWT) is an MVP development toolkit for building and optimizing complex browser-based applications. GWT is used by many products at Google, including Google AdWords.\"\u003eGWT\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"architecture-examples/closure/\" data-source=\"http://code.google.com/closure/library/\" data-content=\"The Closure Library is a broad, well-tested, modular, and cross-browser JavaScript library. You can pull just what you need from a large set of reusable UI widgets and controls, and from lower-level utilities for DOM manipulation, server communication, animation, data structures, unit testing, rich-text editing, and more.\"\u003eClosure\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/batman/\" data-source=\"http://batmanjs.org\" data-content=\"Batman.js is a framework for building rich web applications with CoffeeScript or JavaScript. App code is concise and declarative, thanks to a powerful system of view bindings and observable properties. The API is designed with developer and designer happiness as its first priority.\"\u003eBatman.js\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/typescript-backbone/\" data-source=\"http://typescriptlang.org\" data-content=\"TypeScript is a language for application-scale JavaScript development. It offers classes, modules, interfaces and type-checking at compile time to help you build robust components.\"\u003eTypeScript \u003cbr\u003e+ Backbone.js\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"labs routing\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/typescript-angular/\" data-source=\"http://typescriptlang.org\" data-content=\"An AngularJS + TypeScript implementation of TodoMVC. The only significant difference between this and the vanilla Angular app is that dependency injection is done via annotated constructors, which allows minification of JavaScript.\"\u003eTypeScript \u003cbr\u003e+ AngularJS\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/serenadejs/\" data-source=\"https://github.com/elabs/serenade.js\" data-content=\"Serenade.js is yet another MVC client side JavaScript framework. Why do we indulge in recreating the wheel? We believe that Serenade.js more closely follows the ideas of classical MVC than competing frameworks.\"\u003eSerenade.js\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\u003c/ul\u003e","\t\t\t\t\t\u003chr\u003e","\t\t\t\t\t\u003ch2\u003eMVC Extension Frameworks\u003c/h2\u003e","\t\t\t\t\t\u003cul class=\"applist\"\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/backbone_marionette/\" data-source=\"http://marionettejs.com\" data-content=\"Backbone.Marionette is a composite application library for Backbone.js that aims to simplify the construction of large scale JavaScript applications.\"\u003eMarionetteJS\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/thorax/\" data-source=\"http://thoraxjs.org\" data-content=\"An opinionated, battle tested Backbone + Handlebars framework to build large scale web applications.\"\u003eThorax\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/dependency-examples/chaplin-brunch/public/\" data-source=\"http://chaplinjs.org\" data-content=\"Chaplin is an architecture for JavaScript applications using the Backbone.js library. Chaplin addresses Backbone’s limitations by providing a lightweight and flexible structure that features well-proven design patterns and best practises.\"\u003eChaplin + Brunch\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\u003c/ul\u003e","\t\t\t\t\t\u003chr\u003e","\t\t\t\t\t\u003ch2\u003eModule Loaders\u003c/h2\u003e","\t\t\t\t\t\u003cul class=\"applist amd\"\u003e","\t\t\t\t\t\t\u003cli class=\"routing\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"dependency-examples/backbone_require/\" data-source=\"http://requirejs.org\" data-content=\"RequireJS is a JavaScript file and module loader. It is optimized for in-browser use, but it can be used in other JavaScript environments, like Rhino and Node. Using a modular script loader like RequireJS will improve the speed and quality of your code.\"\u003eBackbone.js + RequireJS\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"dependency-examples/flight/\" data-source=\"http://twitter.github.com/flight\" data-content=\"Flight is a lightweight, component-based JavaScript framework that maps behavior to DOM nodes. Twitter uses it for their web applications.\"\u003eFlight\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/dependency-examples/knockoutjs_require/\" data-source=\"http://knockoutjs.com\" data-content=\"This project is an adaptation of /architecture-examples/knockoutjs with require.js.\"\u003eKnockout + RequireJS\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/dependency-examples/angularjs_require/\" data-source=\"http://angularjs.org\" data-content=\"What HTML would have been had it been designed for web apps. This is an example of using it with AMD modules.\"\u003eAngularJS + RequireJS\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/dependency-examples/canjs_require/\" data-source=\"http://canjs.us\" data-content=\"CanJS is a client-side, JavaScript framework that makes building rich web applications easy. The AMD version lets you use the framework in a fully modular fashion and will only what you actually need.\"\u003eCanJS + RequireJS\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/dependency-examples/troopjs_require/\" data-source=\"https://github.com/troopjs/\" data-content=\"TroopJS attempts to package popular front-end technologies and bind them with minimal effort for the developer. It includes jQuery for DOM manipulation, When.js for promises, RequireJS for modularity and Has.js for feature detection. On top, it includes Pub/Sub support, templating, weaving (widgets to DOM) and auto-wiring.\"\u003eTroopJS + RequireJS\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/dependency-examples/thorax_lumbar/public/\" data-source=\"http://walmartlabs.github.com/lumbar\" data-content=\"An opinionated, battle tested Backbone + Handlebars framework to build large scale web applications. This implementation uses Lumbar, a route based module loader.\"\u003eThorax + Lumbar\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/dependency-examples/somajs_require/\" data-source=\"http://somajs.github.com/somajs\" data-content=\"soma.js is a framework created to build scalable and maintainable javascript applications.\"\u003esoma.js + RequireJS\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/dependency-examples/durandal/\" data-source=\"http://durandaljs.com/\" data-content=\"Single Page Apps Done Right\"\u003eDurandal\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/dependency-examples/lavaca_require/\" data-source=\"http://getlavaca.com\" data-content=\"A curated collection of tools for building mobile web applications.\"\u003eLavaca + RequireJS\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\u003c/ul\u003e","\t\t\t\t\t\u003chr\u003e","\t\t\t\t\t\u003ch2\u003eReal-time\u003c/h2\u003e","\t\t\t\t\t\u003cul class=\"applist amd\"\u003e","\t\t\t\t\t\t\u003cli class=\"labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"http://todomvcapp.meteor.com\" data-source=\"http://meteor.com\" data-content=\"Meteor is an ultra-simple environment for building modern websites. A Meteor application is a mix of JavaScript that runs inside a client web browser, JavaScript that runs on the Meteor server inside a Node.js container, and all the supporting HTML fragments, CSS rules, and static assets. Meteor automates the packaging and transmission of these different components. And, it is quite flexible about how you choose to structure those components in your file tree.\"\u003eMeteor\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"http://todomvc.derbyjs.com\" data-source=\"http://derbyjs.com\" data-content=\"MVC framework making it easy to write realtime, collaborative applications that run in both Node.js and browsers.\"\u003eDerby\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"https://github.com/tastejs/todomvc/blob/gh-pages/labs/architecture-examples/socketstream/readme.md\" data-source=\"http://www.socketstream.org\" data-content=\"SocketStream is a fast, modular Node.js web framework dedicated to building realtime single-page apps\"\u003e
56C9
SocketStream\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"labs/architecture-examples/firebase-angular/\" data-source=\"https://www.firebase.com\" data-content=\"Firebase is a scalable realtime backend that lets you build apps without managing servers. Firebase persists and updates JSON data in realtime and is best used in combination with a JavaScrpt MV* framework such as AngularJS or Backbone.\"\u003eFirebase + AngularJS\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003c!--","\t\t\t\t\t\t// Link is currently not working.","\t\t\t\t\t\t\u003cli class=\"routing labs\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"http://todomvc.crypho.com\" data-source=\"https://github.com/ggozad/Backbone.xmpp\" data-content=\"Backbone.xmpp is a drop-in replacement for Backbone’s RESTful API, allowing models/collections to be persisted on XMPP Pub-Sub nodes providing real-time updates.\"\u003eBackbone.xmpp\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t--\u003e","\t\t\t\t\t\u003c/ul\u003e","\t\t\t\t\t\u003chr\u003e","\t\t\t\t\t\u003ch2\u003eCompare these to a non-framework implementation\u003c/h2\u003e","\t\t\t\t\t\u003cul class=\"applist\"\u003e","\t\t\t\t\t\t\u003cli class=\"routing\"\u003e","\t\t\t\t\t\t\t\u003ca href=\"vanilla-examples/vanillajs/\" data-source=\"https://developer.mozilla.org/en/JavaScript\" data-content=\"You know JavaScript right? :P\"\u003eVanilla JS\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\t\u003cli\u003e","\t\t\t\t\t\t\t\u003ca href=\"architecture-examples/jquery/\" data-source=\"http://jquery.com\" data-content=\"jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript.\"\u003ejQuery\u003c/a\u003e","\t\t\t\t\t\t\u003c/li\u003e","\t\t\t\t\t\u003c/ul\u003e","\t\t\t\t\u003c/div\u003e","\t\t\t\u003c/div\u003e","\t\t\t\u003chr\u003e","\t\t\t\u003cdiv class=\"row\"\u003e","\t\t\t\t\u003cdiv class=\"span6 quotes\"\u003e","\t\t\t\t\t\u003cblockquote class=\"quote speech-bubble\"\u003e","\t\t\t\t\t\t\u003cp\u003e\u003c/p\u003e","\t\t\t\t\t\t\u003cfooter\u003e","\t\t\t\t\t\t\t\u003cimg width=\"40\" height=\"40\" alt=\"\"\u003e","\t\t\t\t\t\t\t\u003ca\u003e\u003c/a\u003e","\t\t\t\t\t\t\u003c/footer\u003e","\t\t\t\t\t\u003c/blockquote\u003e","\t\t\t\t\u003c/div\u003e","\t\t\t\t\u003cdiv class=\"span6\"\u003e","\t\t\t\t\t\u003cimg class=\"screenshot\" src=\"site-assets/screenshot.png\" width=\"558\" height=\"246\" alt=\"Todo app screenshot\"\u003e","\t\t\t\t\u003c/div\u003e","\t\t\t\u003c/div\u003e","\t\t\t\u003chr\u003e","\t\t\t\u003cdiv class=\"row\"\u003e","\t\t\t\t\u003cdiv class=\"span4\"\u003e","\t\t\t\t\u003ch2\u003eNew in 1.2 - 2013-08-06\u003c/h2\u003e","\t\t\t\t\u003cul class=\"whats-new\"\u003e","\t\t\t\t\u003cli\u003eWe now have 21 stable apps and 45 in labs.","\t\t\t\t\t\u003clabel for=\"news-expander\"\u003e\u003ca\u003eNew since 1.1 ▼\u003c/a\u003e\u003c/label\u003e","\t\t\t\t\t\u003cinput type=\"checkbox\" id=\"news-expander\"\u003e","\t\t\t\t\t\u003cul class=\"collapsed\" id=\"new-apps\"\u003e","\t\t\t\t\t\u003cli\u003e\u003ca href=\"architecture-examples/polymer/\"\u003ePolymer\u003c/a\u003e\u003c/li\u003e","\t\t\t\t\t\u003cli\u003e\u003ca href=\"dependency-examples/flight/\"\u003eFlight\u003c/a\u003e\u003c/li\u003e","\t\t\t\t\t\u003cli\u003e\u003ca href=\"labs/architecture-examples/react/\"\u003eReact\u003c/a\u003e\u003c/li\u003e","\t\t\t\t\t\u003cli\u003e\u003ca href=\"vanilla-examples/vanillajs\"\u003eVanillaJS Rewrite\u003c/a\u003e\u003c/li\u003e","\t\t\t\t\t\u003cli\u003e\u003ca href=\"labs/architecture-examples/sapui5/\"\u003eSAPUI5\u003c/a\u003e\u003c/li\u003e","\t\t\t\t\t\u003cli\u003e\u003ca href=\"labs/architecture-examples/firebase-angular/\"\u003eAngularJS + Firebase\u003c/a\u003e\u003c/li\u003e","\t\t\t\t\t\u003c/ul\u003e","\t\t\t\t\u003c/li\u003e","\t\t\t\t\u003cli\u003eWe have a brand-new Info Bar\u003c/li\u003e","\t\t\t\t\u003cli\u003eAll application now use Bower for dependency management\u003c/li\u003e","\t\t\t\t\u003cli\u003eVarious consistency fixes across all apps\u003c/li\u003e","\t\t\t\t\u003cli\u003eMany app frameworks and libraries have been upgraded to the latest version\u003c/li\u003e","\t\t\t\t\u003c/ul\u003e","\t\t\t\t\u003c/div\u003e","\t\t\t\t\u003cdiv class=\"span4\"\u003e","\t\t\t\t\t\u003ch2\u003eSelecting a Framework\u003c/h2\u003e","\t\t\t\t\t\u003cp\u003eOnce you've downloaded the latest release and played around with the apps, you'll want to decide on a specific framework to try out.\u003c/p\u003e","\t\t\t\t\t\u003cp\u003eStudy 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.\u003c/p\u003e","\t\t\t\t\t\u003cp\u003ePlease 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.\u003c/p\u003e","\t\t\t\t\u003c/div\u003e","\t\t\t\t\u003cdiv class=\"span4\"\u003e","\t\t\t\t\t\u003ch2\u003eGetting Involved\u003c/h2\u003e","\t\t\t\t\t\u003cp\u003eIs there a bug we haven't fixed or an MV* framework you feel would benefit from being included in TodoMVC?\u003c/p\u003e","\t\t\t\t\t\u003cp\u003eIf so, feel free to fork the repo, read our \u003ca href=\"https://github.com/tastejs/todomvc/wiki\"\u003econtribution guidelines\u003c/a\u003e, and submit a pull request \u0026mdash; we'll be happy to review it for inclusion.\u003c/p\u003e","\t\t\t\t\t\u003cp\u003eMake sure you use the \u003ca href=\"https://github.com/tastejs/todomvc/tree/gh-pages/template\"\u003etemplate\u003c/a\u003e as a starting point and read the \u003ca href=\"https://github.com/tastejs/todomvc/blob/gh-pages/app-spec.md\"\u003eapp specification\u003c/a\u003e.\u003c/p\u003e","\t\t\t\t\t\u003cp\u003e","\t\t\t\t\t\t\u003ca class=\"zocial small gray\" href=\"https://github.com/tastejs/todomvc/wiki\"\u003eSubmit Pull Request \u0026raquo;\u003c/a\u003e","\t\t\t\t\t\u003c/p\u003e","\t\t\t\t\u003c/div\u003e","\t\t\t\u003c/div\u003e","\t\t\t\u003chr\u003e","\t\t\t\u003cfooter class=\"credit\"\u003e","\t\t\t\t\u003cp\u003eBrought to you by","\t\t\t\t\t\u003ca href=\"https://github.com/addyosmani\"\u003e\u003cimg src=\"http://gravatar.com/avatar/96270e4c3e5e9806cf7245475c00b275?s=80\" width=\"40\" height=\"40\" alt=\"Addy Osmani\"\u003eAddy Osmani\u003c/a\u003e","\t\t\t\t\t\u003ca href=\"https://github.com/sindresorhus\"\u003e\u003cimg src=\"http://gravatar.com/avatar/d36a92237c75c5337c17b60d90686bf9.png?s=80\" width=\"40\" height=\"40\" alt=\"Sindre Sorhus\"\u003eSindre Sorhus\u003c/a\u003e","\t\t\t\t\t\u003ca href=\"https://github.com/passy\"\u003e\u003cimg src=\"http://gravatar.com/avatar/be451fcdbf0e5ff07f23ed16cb5c90a3.png?s=80\" width=\"40\" height=\"40\" alt=\"Pascal Hartig\"\u003ePascal Hartig\u003c/a\u003e","\t\t\t\t\t\u003ca href=\"https://github.com/stephenplusplus\"\u003e\u003cimg src=\"http://gravatar.com/avatar/098cfe2d360e77c3229f2cd5298354c4?s=80\" width=\"40\" height=\"40\" alt=\"Stephen Sawchuk\"\u003eStephen Sawchuk\u003c/a\u003e","\t\t\t\t\u003c/p\u003e","\t\t\t\u003c/footer\u003e","\t\t\u003c/div\u003e","\t\t\u003cscript src=\"bower_components/jquery/jquery.min.js\"\u003e\u003c/script\u003e","\t\t\u003cscript src=\"bower_components/bootstrap/docs/assets/js/bootstrap.min.js\"\u003e\u003c/script\u003e","\t\t\u003cscript src=\"site-assets/main.js\"\u003e\u003c/script\u003e","\t\t\u003cscript\u003e!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.async=true;js.src=\"//platform.twitter.com/widgets.js\";fjs.parentNode.insertBefore(js,fjs);}}(document,\"script\",\"twitter-wjs\");\u003c/script\u003e","\t\t\u003cscript\u003e(function(){var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;po.src = 'https://apis.google.com/js/plusone.js';var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);})();\u003c/script\u003e","\t\t\u003cscript\u003evar _gaq=[['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script'));\u003c/script\u003e","\t\u003c/body\u003e","\u003c/html\u003e"],"stylingDirectives":null,"colorizedLines":null,"csv":null,"csvError":null,"dependabotInfo":{"showConfigurationBanner":false,"configFilePath":null,"networkDependabotPath":"/torifat/todomvc/network/updates","dismissConfigurationNoticePath":"/settings/dismiss-notice/dependabot_configuration_notice","configurationNoticeDismissed":null},"displayName":"index.html","displayUrl":"https://github.com/torifat/todomvc/blob/gh-pages/index.html?raw=true","headerInfo":{"blobSize":"30 KB","deleteTooltip":"You must be signed in to make or propose changes","editTooltip":"You must be signed in to make or propose changes","ghDesktopPath":"https://desktop.github.com","isGitLfs":false,"onBranch":true,"shortPath":"559b9f9","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Ftorifat%2Ftodomvc%2Fblob%2Fgh-pages%2Findex.html","isCSV":false,"isRichtext":false,"toc":null,"lineInfo":{"truncatedLoc":"336","truncatedSloc":"336"},"mode":"file"},"image":false,"isCodeownersFile":null,"isPlain":false,"isValidLegacyIssueTemplate":false,"issueTemplate":null,"discussionTemplate":null,"language":"HTML","languageID":146,"large":false,"planSupportInfo":{"repoIsFork":null,"repoOwnedByCurrentUser":null,"requestFullPath":"/torifat/todomvc/blob/gh-pages/index.html","showFreeOrgGatedFeatureMessage":null,"showPlanSupportBanner":null,"upgradeDataAttributes":null,"upgradePath":null},"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_dockerfile","releasePath":"/torifat/todomvc/releases/new?marketplace=true","showPublishActionBanner":false},"rawBlobUrl":"https://github.com/torifat/todomvc/raw/refs/heads/gh-pages/index.html","renderImageOrRaw":false,"richText":null,"renderedFileInfo":null,"shortPath":null,"symbolsEnabled":true,"tabSize":8,"topBannersInfo":{"overridingGlobalFundingFile":false,"globalPreferredFundingPath":null,"showInvalidCitationWarning":false,"citationHelpUrl":"https://docs.github.com/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files","actionsOnboardingTip":null},"truncated":false,"viewable":true,"workflowRedirectUrl":null,"symbols":null},"copilotInfo":null,"copilotAccessAllowed":false,"modelsAccessAllowed":false,"modelsRepoIntegrationEnabled":false,"csrf_tokens":{"/torifat/todomvc/branches":{"post":"Nm-khVhUUZI3eAyts_lqG7evfLf_-77iKNxN9wxjm1d92puvCOyeOT3q6ng_51ZYCDtSBNRiFFtm0Rpg_vVcyg"},"/repos/preferences":{"post":"_qbBR-MJONHEqv3uT7RZGGYGEygU-7llJAjCMPd2iq1_spwMYHNGjVcJnVjd9XyPvYojdW4trhInr_xlEiSk8g"}}},"title":"todomvc/index.html at gh-pages · torifat/todomvc","appPayload":{"helpUrl":"https://docs.github.com","findFileWorkerPath":"/assets-cdn/worker/find-file-worker-263cab1760dd.js","findInFileWorkerPath":"/assets-cdn/worker/find-in-file-worker-1b17b3e7786a.js","githubDevUrl":null,"enabled_features":{"code_nav_ui_events":false,"react_blob_overlay":false,"accessible_code_button":true}}}