Omchaya
A ClojureScript + Om frontend for Kandan. An example app that's actually useful.
Project features
- Reasonable mobile support
- Composable plugin system (Thank you real data structures!)
- Mentions
- Emoji
- Youtube/Vimeo/Image embed
- /me support
- Inline-pastie
- RGB/Hex color embed
- Collaborative music player and queueing system
- Real-time narrowing search across people, media, music, and messages
- Keybindings
- Deep-linking
Getting the project
git clone https://github.com/sgrove/omchaya.git
cd omchaya
Example usage
Omchaya is just for local usage right now. Try a couple of commands:
@mention-a-name
/play <url to an audio-tag-compatible source (mp3, etc.)>
rgb(r,g,b)
#hheexx or #hex
Any youtube/vimeo/img/link will be picked up
Basic pastie support is there
Debug keybindings
ctrl-/
: Open the history playerctrl-esc
: Open the state (Ankha) inspector in an in-app windowctrl-1
: Change the path to display for the state inspector window
I don't have Clojure, but I still want to see it!
Use the demo branch:
git checkout demo
scripts/run_server.sh
open http://localhost:9000/dev.html
Running locally
scripts/run_server.sh
This will compile the CLJS code to JS once and start the server hosting the assets.
Developing locally
Start the auto recompiler for the CLJS code:
lein cljsbuild auto
Serve the assets:
python -m SimpleHTTPServer 9000
open http://localhost:9000/dev.html
Omchaya Design
- Rendering all done via Om/React
- Each component sends app-logic events to router via core.async channels
- State transition managed centrally via controller
- Imperative/side-effects restricted to post-controller
Facebook React Devtools Support
Omchaya uses Om > 0.5.1
to implement IDisplayName
for components, so we can take advantage of the Facebook React Devtools > 0.8
to see the structure of your web app in terms of the components you expect.
Here's an idea of what it looks like - notice the name of the tags shown:
License
Omchaya is released under the MIT license, see LICENSE for further details.
Copyright (c) 2014 BUSHIDO INC. unless otherwise mentioned.