{"id":15637854,"url":"https://github.com/erikwittern/todoit","last_synced_at":"2025-04-28T15:55:28.752Z","repository":{"id":69461745,"uuid":"60389401","full_name":"ErikWittern/TODOit","owner":"ErikWittern","description":"The JavaScript framework for hassle-free TODO application development.","archived":false,"fork":false,"pushed_at":"2019-06-10T18:42:50.000Z","size":72,"stargazers_count":100,"open_issues_count":3,"forks_count":6,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-28T15:55:22.405Z","etag":null,"topics":["frontend-wars","javascript","todo","todolist"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ErikWittern.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-06-04T02:34:02.000Z","updated_at":"2024-11-22T19:48:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"c06132b1-da53-4746-b071-1c7d4cd48d9d","html_url":"https://github.com/ErikWittern/TODOit","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErikWittern%2FTODOit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErikWittern%2FTODOit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErikWittern%2FTODOit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErikWittern%2FTODOit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ErikWittern","download_url":"https://codeload.github.com/ErikWittern/TODOit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251342720,"owners_count":21574244,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["frontend-wars","javascript","todo","todolist"],"created_at":"2024-10-03T11:13:28.941Z","updated_at":"2025-04-28T15:55:28.736Z","avatar_url":"https://github.com/ErikWittern.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TODOit\u0026trade;\n_The_ JavaScript framework for hassle-free TODO application development.\n\n### Why a TODO app-framework?\nIn modern app development, TODO apps are everywhere. The Internet is full of \n[countless](https://parse.com/tutorials/todo-app-with-javascript) \n[tutorials](https://www.sitepoint.com/building-list-jquery-local-storage/) \n[on](https://www.playframework.com/documentation/2.2.x/JavaTodoList) \n[how](http://thejackalofjavascript.com/mean-stack-hands-on-tutorial/) \n[to](https://www.sitepoint.com/starting-android-development-creating-todo-app/)\ndevelop them. Implementing a TODO app is the ultimate, the landmark achievement for [any web app framework](http://www.todomvc.com). And rightly so - who doesn't have TODOs?\n\nBut existing frameworks make writing TODO apps way too hard for developers. Just consider the following stats on some common implementations:\n\n  - [A React/Redux TODO app](http://redux.js.org/docs/basics/ExampleTodoList.html) - 13 JS files, nearly 300 lines of code\n  - [Angular 2 TODO app](https://github.com/davideast/ng2do): nearly 80 lines of code\n  - [Mithril TODO app](http://jsfiddle.net/milesmatthias/fbgypzbr/1/) - nearly 70 lines of code\n  - [Aurelia TODO app](https://github.com/mhoyer/todomvc-aurelia) - 5 JS files, 2 HTML files, nearly 270 lines of code\n\nThat's a whole lot of code! And on top of that, developers of a typical TODO app also have to deal with obscure things like views, state, or different types of HTML tags. Just think how much time it took to build all of [these 64 TODO apps](http://todomvc.com/)! \n\nIn 2016, can't we do better? The answer is **yes** - with TODOit\u0026trade;.\n\n\n### Introducing TODOit\u0026trade;\nTODOit\u0026trade; is a JavaScript framework that takes the hassle out of writing TODO apps. \nJust require the library from your website:\n\n    \u003cscript type=\"text/javascript\" src=\"link/to/todoit-min.js\"\u003e\u003c/script\u003e\n\nAnd then hook up your TODOit\u0026trade; app in an HTML-element with _a single line of code_ to get going:\n\n    TODOit('#some-element-id')\n\nAs a result, you will see a this beauty:\n\n\u003cimg src=\"screenshot.png\" alt=\"TODO app\" width=\"200\"/\u003e\n\nThat's all it takes to write your TODO app with TODOit\u0026trade;! Even compared to the next best framework Mithril, that's a **factor 70 productivity increase**!\n\nEven better, you can have multiple TODO apps on the same page, making multi-tasking a breeze:\n\n    TODOit('#one-element-id')\n    TODOit('#another-element-id')\n\n...resulting in this:\n\n\u003cimg src=\"screenshot_2.png\" alt=\"TODO apps\" width=\"200\"/\u003e\n\n### TODOit\u0026trade; design principles\nTo make this magic possible, TODOit\u0026trade; is carefully built around the following principles:\n\n  - **Reactive:** You just type your TODO and hit that button - TODOit\u0026trade; will react!\n  - **Immutable:** TODOit\u0026trade; takes immutability to the next level: it is released in a production-ready version 1.0.0 and there will be no other versions in the future. Keeping the framework fixed means there will never be any (breaking) changes!\n  - **Full stack:** TODOit\u0026trade; apps cover the full stack - from creating TODOs to marking them done.\n  - **Purely functional:** Write TODOs and mark them done. That's it. Form follows function.\n  - **Convention over configuration:** TODOit\u0026trade; does not provide any configuration options, making it literally a no-brainer to use. In addition, you don't have to learn any conventions.\n  - **Zero-footprint API:** By providing no means to programmatically interact with a TODOit\u0026trade; app, we are able to keep the API to a bare minimum. That adds to TODOit\u0026trade;'s astonishingly steep learning curve. Also, you don't need to go through the kind of extensive documentation so many other frameworks require.\n  - **Stateless:** TODOit\u0026trade; apps avoid all the hassle associated with state. We achieve this by carefully avoiding to persist any data, anywhere. Doing so significantly reduces the developer's cognitive load.\n  - **Microservice:** TODOit\u0026trade; provides a competitively small service.\n  - **DevOps:** We leave the operation of the TODO app to you - the developer!\n  - **Responsive:** We wrote TODOit\u0026trade; from scratch to make sure it doesn't come with any styles. That means you can use a TODOit\u0026trade; app in your responsive website - and it just works.\n  - **Dependency-free:** Considering the recent [left-pad incident](http://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/), having as little dependencies as possible is key. TODOit\u0026trade; has _zero_ runtime dependencies, making it resilient to any ecosystem shenanigans.\n  - **Lightweight:** TODOit\u0026trade; believes that you shouldn't make excessive assumptions about your users' mobile devices or data plans. Thus, the TODOit\u0026trade; framework is only **0.95 kB** in size, making a perfect fit for mobile apps and the Internet of Things. Compare that to other frameworks (React 147 kB, Mithril 7.8 kB gzipped, Ember 461 kB... WITHOUT the application code)!\n  - **Don't repeat yourself:** By not allowing you to delete TODOs, TODOit\u0026trade; apps help users to remember what they did before, allowing them to stay DRY.\n  - **Cutting edge:** TODOit\u0026trade; makes use of the latest technological advances: it uses ES6 where possible and relies on webpack for fast builds.\n\nOn top of that, TODOis\u0026trade; uses native JavaScript, runs in the cloud, and loves big TODO data.\n\n### Try it\nJust clone this repo and open `index.html` in the examples folder in any browser.\n\n### Development\nInstall dependencies:\n\n    npm install\n\nHack TODOit\u0026trade;:\n\n    webpack --progress --colors --watch\n\nFinally, create a minified version:\n\n    PROD_ENV=1 webpack --progress --colors\n\n### License\nTODOit\u0026trade; can be used whenever wherever by whomever for whatever - in any way. Just TODO it.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferikwittern%2Ftodoit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferikwittern%2Ftodoit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferikwittern%2Ftodoit/lists"}