Caffeine is a livecoding environment for web browsers, Node.js, and WebAssembly. After adding it to a webpage, you can use it to make live persistent changes to that page and other pages running Caffeine, without reloading.
You can interact with Caffeine from JavaScript in several ways:
- as a headless Web Worker, with which you post and receive messages (you are responsible for all DOM manipulation).
- as an IDE in a headful IFrame, with Caffeine able to manipulate the DOM directly.
- on a headless Node server, with which you also exchange messages (over a WebSocket).
- through a headful DevTools panel IDE, using the Chrome Debugging Protocol to manipulate every page your browser is running.
Caffeine's underlying computation engine is SqueakJS, an open-source Smalltalk. It features a bi-directional JavaScript bridge, enabling Smalltalk methods to send messages to JavaScript objects, and provide Smalltalk block closures as JavaScript promises or callback functions.
Caffeine has support for Squeak, Pharo, Cuis, 3D VR (via A-Frame and OSC), zooming 3D presentations (via impress.js), VueJS, WebMIDI, Observable, Web Workers, DevTools and many other JS frameworks.
You can read more about the design of Caffeine, and new features, at my blog, https://thiscontext.com. Check out the teaser trailer on YouTube.
This repository is the content for the Caffeine website, caffeine.js.org. It provides these endpoints:
| ------------------------------------------------- | ---------------------------- | | / | this page | | /talk | an impress-powered presentation about Caffeine and livecoding | | /developer | a developer-oriented overview of Caffeine, with a tutorial for developing with it | | /2d | Caffeine on a single-page-application site | | /3d | an A-Frame-powered in-world virtual reality livecoding space | | /pharo | a demo of Pharo 7 | | /cuis | a demo of Cuis | | /tabulator | a tabs-management app, with a VueJS user interface | | /files | a listing of the files Caffeine has stored in your web browser's cache. You can download files from it, and drop new files into it. |
There are issues and projects to follow; please do! Current activity is focused on making Caffeine a productive in-world VR livecoding environment, and deploying livecoded VueJS web apps.
Craig Latta
[Black Page Digital](http://blackpagedigital.com)
Amsterdam :: San Francisco
[@ccrraaiigg](https://twitter.com/ccrraaiigg)