This is the catch-all repo for the following projects:
- demo-web: a minimal pseudo-terminal that can be embedded on a webpage. This is a web client for demo-server.
- demo-cli: a CLI that allows you to run commands from the terminal. This is a go client for demo-server.
- demo-server: a server that runs custom-defined commands in a sandboxed environment. This is a Node.js server for demo-web and demo.go.
- demo-docs: converts code blocks in runnable code samples that sccepts user input (via connecting to demo-server)!
- demonic: an xterm.js and terminado-powered web-app that gives you all the powers of a terminal right in the browser. Acts as it's own client and server model. Like demo-web but more feature-rich and broadly-focused.
|Program||Function||Use if you want...|
|demo-web||Web client||to embed a pseudo-terminal on a website or in online documentation.|
|demo-cli||Go client||to access sandboxed applications from the comfort of the command line.|
|demo-server||Node.js server||to serve custom commands in a sandboxed environment to clients like demo-web and demo-cli.|
|demo-docs||Web docs||to convert code blocks into runnable blocks in HTML-ized markdown files.|
|demonic||Web client & Python server||a fully fleged terminal in the web that also runs sandboxed applications.|
- Why have separate project repositories (submodules) instead of one unified repository?
I'd like each project to be able to function independently, so that user's may be free to switch out clients and servers at their discretion. And developers or contributors should be able to fork or clone only the components they wish to extend or work on. This division between subprojects introduces some added complexity (e.g. submodules), but at least for this project, is balanced out by the added level of choice for users and developers.
demo-web is my own attempt at writing a web-based terminal. It aims to allow users to send code snippets and commands to a self-hosted server, from which they receive output from STDOUT. This model lets you define your own commands and have fine-grained control over the spawning, execution, and termination of those commands. It doesn't handle ASCII-escape sequences (yet!), so no vim or other terminal-specific features. Just plain old text.
demonic is a full web-based terminal/shell combo. This means you can run vim, tmux, lolcat, etc. with ease. It's powered by xterm.js and terminado, which is are awesome projects written by talented groups of contributors and maintainers. For your own web-based terminal projects, those are good places to start. demonic simply leverages both xterm.js and terminado to serve a sandbox of some of my applications for people to try out without having to install them.