Chatting with a friend today and we were discussing easily deployable web apps, not tied to any particular build tool or framework. Aspirationally, just using a simple vanilla JS, HTML, and CSS stack.
LLMs are good at building with this stack and deploying them is a matter of hosting them as static assets. Generally, we don’t build with this stack because as things get more complicated, the codebase struggles to scale to the needs of the project. Or at least this is the conventional wisdom.
So, for me what came to mind was a random repo I had seen within the last few months showing a sort of anti-framework approach to writing vanilla Javascript to build a web app. But I looked through all my browser history and bookmark folders and couldn’t find it. I tried Perplexity, I tried ChatGPT’s search, I tried Google, I tried DuckDuckGo. I could not find it - and I generally consider myself pretty good at finding things around the web.
And then I tried Exa. I had initially misremembered the repo somehow involving Elm inspiration, but when I ran the following query, I actually found it!
no dependency vanilla javascript approach to building webapps
The repo in question was this one: https://github.com/matthewp/views-the-hard-way
I tried to make a 4 player pong game with this approach and Sonnet.
Then again with Gemini 2.5 Pro, which one-shotted it, but didn’t really use the approach and opted to use a canvas
.
We should be open sourcing our system prompts in a more consistent way.
system_prompts
, llm_templates
– it feels like there is something here.
Maybe more personal than fabric
.
But also, maybe I need to use fabric
more…
But the reason I was thinking this:
{
"permissions": {
"allow": [
"Bash(mkdir:*)",
"Bash(ls:*)"
],
"deny": []
}
}
I’m going to need to bring these (or whatever equivalent is for whatever agent I am using) around with me. I need to have different versions of them for different types of systems and, of course, for different projects.
I haven’t read any spec of this file, but let’s note the apparent structure:
Bash(ls:*)
I’ve allowlisted all inputs to the Bash
tool whose commands are ls
and mkdir
and match *
.