Simpatico (
https://simpatico.io, MIT on github) is a collection of related ideas and projects.
First, it's a minimalist, user-respecting, single-process, no-build web server written in ~500 lines of node. The server supports caching and file watching, markdown, letsencrypt TLS, and websockets. It does Etag client caching and disallows any 3rd party resource access with headers. https://simpatico.io/reflector
Second, it defines "literate markdown" or "litmd", based on Knuth's literate programming, that executes markdown code blocks in the browser. HTML, CSS, JS and Markdown are supported. This feature started as a hack to get around IntelliJ's inability to do syntax-highlighting on html in the body of a markdown file! Litmd also has good testing support, changing the background and favicon if any exceptions are thrown. Markdown is now my test harness. https://simpatico.io/lit
Third, there is a wonderful encrypted chat client that uses crypto.subtle to generate private/public keys in the browser, per tab, and use them to send messages. Currently these are entirely ephemeral, which aids testing. Eventually they will be stored in local storage. Each client has a GUID URL identifier, which I've exposed as both a link and a QR code for easily connecting with others on a mobile device. I think of it as an "anteroom" for social contact, useful in bars, parties or conferences where giving out more sensitive information like telephone or email may not be desirable. https://simpatico.io/chat
Chat is intended to generalize enable what I call "monomorphic javascript" wherein the browser becomes a server, chat becomes structured, and people code programs locally and share them easily with each other. (The original tagline was "Making software together") This remains the vision. In some ways I'm like a novelist inventing his own typewriter, and so far I only have the typewriter and some essays I wrote with it. But the novel is still there, still driving everything. https://simpatico.io/notes/simpatico
I've liked the tooling so much (tiny, no build, very few and very small dependencies, low start-up time) that I've used it to explore some novel data-structures and algorithms (https://simpatico.io/stree3, https://simpatico.io/combine2), and also to host "kata", or exercises in 3rd party technology like Angular (https://simpatico.io/kata/angular/my-project/bundle), or browser tech like svg (https://simpatico.io/svg) or crypto (https://simpatico.io/crypto).
I'm glad I decided to start running on a public host early. It's been an education. I don't think "full stack" devs who are used to handing off CI/CD and operations to other teams realize how insulated we are from the internet. There are constant probes, scripts trying to get into the system, trying to break it, on all open ports. It's fascinating. It's also been an education in bash scripting, systemd, and ssh (especially reading auth.log). The key here is keeping the stakes low - at best attackers will get a $5/mo VPS. It's amazing how much such a system can do - greatly inspired by Justine Tunney's redbean server, and others. (https://simpatico.io/notes/inspiration)
It's been validating to see how, almost by accident, this project is part of the "indie web" and also "local first". To see other people like DHH (https://twitter.com/dhh/status/1655076668787097607) and projects like Svelte (https://devclass.com/2023/05/11/typescript-is-not-worth-it-f...) start using plain javascript also feels right.
Currently, everything is in one repo so it's not easy to fork and use for yourself. You'd need to do a lot of deleting. One of my todos is to publish to NPM and make the process of spinning up your own reflector easier. However, this is not my primary use case! The primary use case is to get people coding in the browser!