GateOne
electric
GateOne | electric | |
---|---|---|
6 | 24 | |
6,241 | 1,630 | |
- | 1.5% | |
0.0 | 9.2 | |
about 1 year ago | 7 days ago | |
JavaScript | Clojure | |
GNU General Public License v3.0 or later | Eclipse Public License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
GateOne
-
LiveView Is Best with Svelte
It was Gate One: https://github.com/liftoff/GateOne
(Note: Company no longer exists so it is unmaintained, fork at will =)
It's been so long since I've looked at the code but I did write excellent documentation, most of which is generated from docstrings. Example:
https://github.com/liftoff/GateOne/blob/master/gateone/core/...
You can read the documentation here:
https://liftoff.github.io/GateOne/
If you look at the bookmarks plugin you can see an example of how I performed this style of client<->server synchronization using an Update Sequence Number (USN):
https://github.com/liftoff/GateOne/blob/6ae1d01f7fe21e2703bd...
After the web client connects to the websocket all the plugin's `init()` methods are called and the bookmarks plugin's javascript file calls `userLoginSync()`:
https://github.com/liftoff/GateOne/blob/6ae1d01f7fe21e2703bd...
It sends the current USN (which is retrieved from `localStorage`) to the server (the routing is quite sophisticated... Just know that the message ends up going to the correct function =) and if it's different from the USN on the server the server will send an updated list of bookmarks to the client at which point the client will take care of that via its own handler:
https://github.com/liftoff/GateOne/blob/6ae1d01f7fe21e2703bd...
If you examine the bookmarks.js from top to bottom (it's not THAT long) you should get the gist of where and how various states are stored. That plugin mostly deals with stuff in `localStorage` but if you poke around in Gate One you'll see vastly more sophisticated state synchronization and state update routines at work.
-
Concept of a webbased Open-Source SSH client
or GateOne
-
SSH session recording/logging with new GitHub project SSHLog
GateOne is also fantastic for this too!
-
Web Based Terminal
GateOne is nice, can also be run in docker
-
Browser Emacs
You can also do it using gateone to emulate a full terminal. https://github.com/liftoff/GateOne
-
Is there a program that works like a webserver, but for command line tools and SSH instead of web apps and HTTP?
Something like this might be a better approach. Or there's GateOne which could do whatever you needed it to, I'd imagine.
electric
-
LiveView Is Best with Svelte
The cleanest way to handle the backend and frontend charade I've seen until now is using https://github.com/hyperfiddle/electric which is a clojure DSL on top of react
-
Imba – The friendly full-stack language
Opa was ahead of its time by at least 10 years. Have you seen Electric Clojure [0]?
[0] https://github.com/hyperfiddle/electric
- Htmx is part of the GitHub Accelerator
- London Clojurians talk: Electric Clojure — compiler managed datasync for rich web apps
-
Should all Clojure functions be polymorphic by default?
Scala's ZIO/ZLayer is a great implementation of this idea where the monadic types are visible to userland DSL. Electric Clojure (which I lead) is a Clojure implementation of similar ideas (specialized to web development) where the types are concealed, "just write Clojure". In practice with Electric, we are building really complex/dynamic abstractions (think pure functional app-builder and highly concurrent UI) and we haven't even felt a need to implement multimethods yet. https://github.com/hyperfiddle/electric
- Isomorphic Development
- Humble Chronicles: Managing State with Signals
-
Use of Posh for frontend development?
I'd expect your auth stuff to mostly just work with some minor jiggling of the middlewares. We have a few out of the box approaches to routing, the tutorials app uses hyperfiddle.router which is an experimental composable router (may be a bit hard to use), the easiest starting point would be a simple goog.history integration. Someone posted a retit integration in the slack iirc. And you can of course roll your own.
-
lumberdev/tesserae: A Clojure spreadsheet and more!
Built with Electric Clojure and Missionary! https://github.com/hyperfiddle/electric
What are some alternatives?
Guacamole - The Guacamole project is now Apache Guacamole (http://guacamole.apache.org/). This repository has been repurposed as the base for the Apache Guacamole packages built for Glyptodon Enterprise.
fulcro - A library for development of single-page full-stack web applications in clj/cljs
OS.js - OS.js - JavaScript Web Desktop Platform
hoplon - Simple and powerful tool for building web apps out of highly composable elements in ClojureScript.
ultimate-backend - Multi tenant SaaS starter kit with cqrs graphql microservice architecture, apollo federation, event source and authentication
posh - A luxuriously simple and powerful way to make front-ends with DataScript and Reagent in Clojure.
oneye
helix - A simple, easy to use library for React development in ClojureScript.
guacamole-server - Mirror of Apache Guacamole Server
subscriptions - A subscriptions library over a source of data (forked + extracted from re-frame)
ttyd - Share your terminal over the web
odoyle-rules - A rules engine for Clojure(Script)