This directory contains a growing number (currently 131) of standalone example projects, including live online versions, build instructions and commented source code.
If you want to contribute an example, please get in touch via PR, issue tracker, email or twitter!
# | Screenshot | Name | Description |
---|---|---|---|
001 | adaptive-threshold | Interactive image processing (adaptive threshold) | |
002 | ascii-raymarch | ASCII art raymarching with thi.ng/shader-ast & thi.ng/text-canvas | |
003 | async-effect | Minimal demo using interceptors with an async side effect | |
004 | big-font | Large ASCII font text generator using @thi.ng/rdom | |
005 | bitmap-font | Figlet-style bitmap font creation with transducers | |
006 | canvas-dial | Canvas based dial widget | |
007 | cellular-automata | 2D transducer based cellular automata | |
008 | color-themes | Probabilistic color theme generator | |
009 | commit-heatmap | Heatmap visualization of this mono-repo's commits | |
010 | commit-table-ssr | Filterable commit log UI w/ minimal server to provide commit history | |
011 | crypto-chart | Basic crypto-currency candle chart with multiple moving averages plots | |
012 | devcards | BMI calculator in a devcards format | |
013 | dominant-colors | Color palette generation via dominant color extraction from uploaded images | |
014 | ellipse-proximity | Interactive visualization of closest points on ellipses | |
015 | fft-synth | Interactive inverse FFT toy synth | |
016 | fiber-basics | Fiber-based cooperative multitasking basics | |
017 | geom-convex-hull | Convex hull & shape clipping of 2D polygons | |
018 | geom-fuzz-basics | geom-fuzz basic shape & fill examples | |
019 | geom-knn | Doodle w/ K-nearest neighbor search result visualization | |
020 | geom-knn-hash | K-nearest neighbor search in an hash grid | |
021 | geom-tessel | Animated, recursive polygon tessellations | |
022 | geom-voronoi-mst | Poisson-disk shape-aware sampling, Voronoi & Minimum Spanning Tree visualization | |
023 | gesture-analysis | Mouse gesture / stroke analysis, simplification, corner detection | |
024 | grid-iterators | Visualization of different grid iterator strategies | |
025 | hdom-basics | Minimal hdom usage example | |
026 | hdom-benchmark | hdom update performance benchmark (old version) | |
027 | hdom-benchmark2 | hdom update performance benchmark w/ config options | |
028 | hdom-canvas-clock | Realtime analog clock demo | |
029 | hdom-canvas-draw | Interactive pattern drawing demo using transducers | |
030 | hdom-canvas-particles | 2D Bezier curve-guided particle system | |
031 | hdom-canvas-shapes | Various hdom-canvas shape drawing examples & SVG conversion / export | |
032 | hdom-dropdown | Custom dropdown UI component for hdom | |
033 | hdom-dropdown-fuzzy | Custom dropdown UI component w/ fuzzy search | |
034 | hdom-dyn-context | Using custom hdom context for dynamic UI theming | |
035 | hdom-elm | Using hdom in an Elm-like manner | |
036 | hdom-inner-html | Higher-order component for rendering HTML strings | |
037 | hdom-local-render | Isolated, component-local DOM updates | |
038 | hdom-localstate | UI component w/ local state stored in hdom context | |
039 | hdom-skip | Skipping UI updates for selected component(s) | |
040 | hdom-skip-nested | Skipping UI updates for nested component(s) | |
041 | hdom-theme | Example for themed components proposal | |
042 | hdom-toggle | Customizable slide toggle component demo | |
043 | hdom-vscroller | Virtual scroller component for large tables / lists | |
044 | hiccup-canvas-arcs | Animated arcs & drawing using hiccup-canvas | |
045 | hiccup-css-image-transition | Generating pure CSS image transitions | |
046 | hydrate-basics | Hiccup / hdom DOM hydration example | |
047 | ifs-fractal | Barnsley fern IFS fractal renderer | |
048 | imgui | Canvas based Immediate Mode GUI components | |
049 | imgui-basics | Minimal IMGUI usage example | |
050 | interceptor-basics | Event handling w/ interceptors and side effects | |
051 | interceptor-basics2 | Event handling w/ interceptors and side effects | |
052 | iso-plasma | Animated sine plasma effect visualized using contour lines | |
053 | json-components | Transforming JSON into UI components | |
054 | kmeans-viz | k-means clustering visualization | |
055 | lispy-repl | Browser REPL for a Lispy S-expression based mini language | |
056 | login-form | Basic SPA example with atom-based UI router | |
057 | mandelbrot | Worker based, interactive Mandelbrot visualization | |
058 | markdown | Markdown to Hiccup to HTML parser / transformer | |
059 | mastodon-feed | Mastodon API feed reader with support for different media types, fullscreen media modal, HTML rewriting | |
060 | multitouch | Basic rstream-gestures multi-touch demo | |
061 | package-stats | CLI util to visualize umbrella pkg stats | |
062 | parse-playground | Parser grammar livecoding editor/playground & codegen | |
063 | pixel-basics | Pixel buffer manipulations | |
064 | pixel-dither | Showcase of various dithering algorithms | |
065 | pixel-indexed | Image dithering and remapping using indexed palettes | |
066 | pixel-normal-map | Normal map creation/conversion basics | |
067 | pixel-sorting | Interactive pixel sorting tool using thi.ng/color & thi.ng/pixel | |
068 | pointfree-svg | Generate SVG using pointfree DSL | |
069 | poisson-circles | 2D Poisson-disc sampler with procedural gradient map | |
070 | poly-spline | Polygon to cubic curve conversion & visualization | |
071 | porter-duff | Port-Duff image compositing / alpha blending | |
072 | ramp-synth | Unison wavetable synth with waveform editor | |
073 | rasterize-blend | Steering behavior drawing with alpha-blended shapes | |
074 | rdom-basics | Demonstates various rdom usage patterns | |
075 | rdom-canvas-basics | Minimal rdom-canvas animation | |
076 | rdom-delayed-update | Dynamically loaded images w/ preloader state | |
077 | rdom-dnd | rdom drag & drop example | |
078 | rdom-key-sequences | rstream & transducer-based FSM for converting key event sequences into high-level commands | |
079 | rdom-lissajous | rdom & hiccup-canvas interop test | |
080 | rdom-search-docs | Full umbrella repo doc string search w/ paginated results | |
081 | rdom-svg-nodes | rdom powered SVG graph with draggable nodes | |
082 | render-audio | Generative audio synth offline renderer and WAV file export | |
083 | rotating-voronoi | Animated Voronoi diagram, cubic splines & SVG download | |
084 | router-basics | Complete mini SPA app w/ router & async content loading | |
085 | rstream-dataflow | Minimal rstream dataflow graph | |
086 | rstream-event-loop | Minimal demo of using rstream constructs to form an interceptor-style event loop | |
087 | rstream-grid | Interactive grid generator, SVG generation & export, undo/redo support | |
088 | rstream-hdom | rstream based UI updates & state handling | |
089 | rstream-spreadsheet | rstream based spreadsheet w/ S-expression formula DSL | |
090 | rstream-sync | Minimal rstream sync() example using rdom | |
091 | scenegraph | 2D scenegraph & shape picking | |
092 | scenegraph-image | 2D scenegraph & image map based geometry manipulation | |
093 | shader-ast-canvas2d | 2D canvas shader emulation | |
094 | shader-ast-evo | Evolutionary shader generation using genetic programming | |
095 | shader-ast-noise | HOF shader procedural noise function composition | |
096 | shader-ast-raymarch | WebGL & JS canvas2D raymarch shader cross-compilation | |
097 | shader-ast-sdf2d | WebGL & JS canvas 2D SDF | |
098 | shader-ast-tunnel | WebGL & Canvas2D textured tunnel shader | |
099 | shader-ast-workers | Fork-join worker-based raymarch renderer (JS/CPU only) | |
100 | shader-graph | Minimal shader graph developed during livestream #2 | |
101 | soa-ecs | Entity Component System w/ 100k 3D particles | |
102 | spline-tangent | Compute cubic spline position & tangent using Dual Numbers | |
103 | stratified-grid | 2D Stratified grid sampling example | |
104 | svg-barchart | Simplistic SVG bar chart component | |
105 | svg-particles | Basic 2D particle system w/ SVG shapes | |
106 | svg-resample | SVG path parsing & dynamic resampling | |
107 | svg-waveform | Additive waveform synthesis & SVG visualization with undo/redo | |
108 | talk-slides | hdom based slide deck viewer & slides from my ClojureX 2018 keynote | |
109 | text-canvas | 3D wireframe textmode demo | |
110 | text-canvas-image | Textmode image warping w/ 16bit color output | |
111 | todo-list | Obligatory to-do list example with undo/redo | |
112 | trace-bitmap | Multi-layer vectorization & dithering of bitmap images | |
113 | transducers-hdom | Transducer & rstream based hdom UI updates | |
114 | triple-query | Triple store query results & sortable table | |
115 | unbiased-normals | Visual comparison of biased vs. unbiased normal vectors projected on the surface of a sphere | |
116 | webgl-channel-mixer | rdom & WebGL-based image channel editor | |
117 | webgl-cube | WebGL multi-colored cube mesh | |
118 | webgl-cubemap | WebGL cube maps with async texture loading | |
119 | webgl-float-fbo | Drawing to floating point offscreen / multi-pass shader pipeline | |
120 | webgl-game-of-life | Game of Life implemented as WebGL2 multi-pass shader pipeline | |
121 | webgl-grid | WebGL instancing, animated grid | |
122 | webgl-msdf | WebGL MSDF text rendering & particle system | |
123 | webgl-multipass | Minimal multi-pass / GPGPU example | |
124 | webgl-shadertoy | Shadertoy-like WebGL setup | |
125 | webgl-ssao | WebGL screenspace ambient occlusion | |
126 | wolfram | 1D Wolfram automata with OBJ point cloud export | |
127 | xml-converter | XML/HTML/SVG to hiccup/JS conversion | |
128 | zig-canvas | Zig-based DOM creation & canvas drawing app | |
129 | zig-cellular | Zig-based 2D multi-behavior cellular automata | |
130 | zig-counter | Simple Zig/WASM click counter DOM component | |
131 | zig-todo-list | Zig-based To-Do list, DOM creation, local storage task persistence |