During some work with Tailwind CSS, I came across AlpineJS which is presented as a "lightweight, JavaScript framework", "a rugged, minimal tool for composing behavior directly in your markup. Think of it like jQuery for the modern web.".
While the mention of jQuery might instantly cause PTSD for the majority of us, it's actually pretty good. You can create quite complex applications with two-way model binding straight from plain HTML (no React, webpack, etc).
Here's a basic todo list example I made to demonstrate the framework:
Head over to the AlpineJS documentation to see more.