Skip to content

Architecture

Benjamin Atkin edited this page Sep 6, 2019 · 3 revisions
  • Frontend
    • Store (state tree, can be synced with backend)
      • Channels
        • Channel (can be synced with different backends, or local-only [local storage or ephermeral, history limit or no])
          • Messages
          • Collections (can be a full collection or just a link to a collection)
          • Commands
          • Completion/Input engine
          • Output/Display engine
    • App commands, such as creating, joining, and switching between channels

Installing: simply build or release and deploy to a static host, and use the interface to create a backend and log into it

Plugins

  • service add github name

Syntax

python-like positional and keyword arguments. input parsed like this:

command subcommand pos-arg1 pos-arg2 key-arg-1:yeah key-arg-2:foo

variable position arguments

argument values are an expression, if surrounded by (), [], {}, ``, '', "", can contain spaces

kebab-case gets converted to camelCase?

if it isn't a command, the input gets processed, but in a non-destructive way

up arrow selects above, doesn't . hitting enter brings up menu.

every answer loads as a summary, but it can automatically

a bunch of apps: docs, quiz, gif, snippets, fn (lambda), vm (virtual machine). these are from plugins and can be added under different names, for example to have a shared gif collection.

a gee whiz feature: if variables are used ($foo or ${foo}) and the variable doesn't exist, let me define it, for example in http requests and sql queries

Clone this wiki locally