# Awesome choo
:steam_locomotive::train::train::train::train::train:

> choo is a `4kb` framework for creating sturdy frontend applications

## Contents

- Official resources
- Dependencies
- Demos
- Community
- Plugins and addons
- Elements
- CLI Templates
- Resources
- Projects using choo

### Official resources

- Docs
- Handbook
- Repo
- Website
- Twitter thread

### Dependencies

`choo` is a modular framework. These are the dependencies it glues together under the hood:

- bel - Create composable DOM elements using template strings.
- hyperx - Convert template strings to library backends.
- nanomorph - Hyper fast diffing algorithm for real DOM nodes.
- nanoraf - Only call RAF when needed.
- nanorouter - Smol frontend router.
- nanobus - Tiny message bus.
- nanolocation - Small window.location library.
- nanohref - Tiny href click handler library.
- nanoquery - Tiny querystring module.
- nanotiming - Small timing library.

### Demos

- Input example - (repo)
- HTTP effects
- Mailbox routing
- TodoMVC - (repo)
- choo-firebase - (repo)
- Grow - (repo)
- Chatbot - (repo)
- chat-random
- choo-leaflet-demo
- choo-scriber - (repo)

### Community

- Freenode

### Plugins and addons

- choo-location-electron - Fix `choo`’s router in electron.
- choo-log - Development logger for choo.
- choo-test - Easy choo app unit testing.
- choo-persist - Synchronize choo state with LocalStorage.
- choo-promise - Use promises in effects and subscriptions.
- choo-pull - Wrap handlers to use pull-stream in a choo plugin.
- choo-redirect - Redirect a view to another view.
- choo-model - Experimental state management lib for choo.
- choo-resume - choo-resume + hot-rld = hot app reload in choo.
- choo-detached - Use `choo` as a mountable, simple stand-alone component (no routing).
- choo-service-worker - Service worker loader for `choo`.
- choo-websocket - Small wraper around WebSocket browser API, for `choo` apps.
- choo-store - Lightweight state structure for choo apps.

### Elements

- dom-notifications - Atom-inspired notifications component.
- choodown - A simple markdown component for choo.
- choo-md-editor - Lightweight markdown editor that can be used inside Choo app or as a standalone library.
- choo-chartist - A little component for using Chartist with the choo framework.

### CLI Templates

Templates for choo-cli

- trainyard/template-basic
- haroenv/template-webpack
- simonwjackson/atomic-choo - An opinionated project seed to get started developing with electron, webpack and choo.

Other CLI templates - graforlock/choo-bandwagon

### Resources

> :movie_camera: : videos :computer: : tutorials :book: : articles

- :computer: Your first choo app
- :movie_camera: TCBY community live hangout
- :book: A better frontend experience
- :book: Composition in CycleJS, choo, React and Angular2
- :book: Stupidly smart components in choo

### Projects using choo

- boxcar - A choo-based grid/spreadsheet editor.
- choo-sortable - Building sortable code with choo.
- hacker-choo - Hacker Typer clone written in choo.
- footprint-rechoo - A choo rewrite of footprint-review.
- minidocs – A documentation site generator built with choo.
- dataface - Desktop application to manage databases.
- BlankUp - Multiplatform markdown editor.
- hackernews-choo - A Hacker News reader built with choo.
- tic-tac-choo - Progressive tic tac toe game, made with choo.
- enviar - Chat interface for SMS / text messages.
- kaktus - A new minimalistic web browser, built on `choo` and IndexedDB.
- civicdr.org - Website for CiviCDR.
- nekocafe - Web chat room :cat: :speech_balloon:.
- Robotopia - Introducing kids to coding with tiny virtual robots!
- busca - A small web-extension to search the current tab on reddit.
- choo-ban - Simple kanban to manage board tasks, built with `choo`.
- boowa - A fun blog generator, built with `choo`.
- hyperamp - Humble music player.

### License

To the extent possible under law, Yerko Palma has waived all copyright and related or neighboring rights to this work.

choo.md Github