Fractalify
Not just a clojure example app
fractalify.com is a entertainment and educational webapp for creating & sharing fractal images made via so called L-systems.
Originally, I started this app as a little app for practicing lovely language Clojure & Clojurescript, but over time it somehow became fully usable and nice webapp :)
Main reason I share this code is that I spent fair amount of time finding out how various libraries work together, so every Clojure beginner can take a quick look into this code if he struggles using same libraries.
List of notable libraries used in this project:
Clojure:
- Ring
- Liberator - Awesome stuff for creating REST API
- HTTP Kit - Used as HTTP server
- Component - Dependency Injection for Clojure, lovely!
- Monger - Superb Clojure MongoDB client
- Friend - Authentication library for Clojure/Ring
- Midje - Perfect test framework, used for REST API tests
- cloudinary_java Java library used to upload images to Cloudinary
Clojurescript:
- re-frame - Reagent Framework for SPAs (so simple, yet so powerful!)
- Reagent - Minimalistic React interface
- material-ui - Material Design components for React. See my library for simpler adding material-ui your project. Not used here.
- pushy - HTML5 pushState
- monet - JS Canvas interop
- Figwheel Hot loads for cljs
- cljs-ajax
- WebWorkers - I haven't used any library for this, because none worked for me. It was quite challenging, you can see the code how I eventually managed to get it working.
Both CLJ & CLJS:
- Schema - Data validation (this is gold!)
- Plumbing - Utility functions (very useful)
- Specter - Advanced manipulating lists & maps
- bidi - Server & Client side routing
- Transit Format - Format used between client & server
Infinite thanks to creators or Clojure and creators of all these amazing libraries!
Feel free to use code in any way or if you know how to improve it, please let me know.
Enjoy!
@matuslestan