CAFE is cool, but NOITE stack is coming (Noite, Oxide, Ilha, TypeScript 7, Effect)
Very bullish on the CAFE stack (cloudflare, alchemy, foldkit, effect). Got my own template for it here: github.com/just-be-dev/effec…
🚨 New contributor
Open source ain't dead, and this time @patcon_ found a bug in Noite, then root cause in Ilha and fixed it all with 1 PR. Thanks a lot 🙇♂️
github.com/ilhajs/ilha/pull/…
Based on Ilha and Oxide 🚀
Announcing the preview of Noite, aka Vercelld.
Noite is a self-hosted PaaS based on celld, Rust (Axum), and a UI based almost entirely on my libraries. My goal is to help you get Cloudflare Workers up and running on a potato VPS (I use $5, 2 vCPU and 2 GB RAM as my benchmark).
I'm back! I was fighting Ilha 0.14:
- Rewrote internals to @EffectTS_.
- 50% weight reduction (16->8 KB minzipped).
- Reactivity is now based on Effect's Atom.
- state(), derived(), action() are now just atom().
- API is now async and generator first.
Final Day: By now, you know all the necessary Ilha functions required to build a typical web UI. What's next? I recommend reaching out to the side libs and picking either @ilha/router or @ilha/astro to build a real app. By the way, @ilha/store works really well with them.
Day 6: Islands have a lifecycle, and you may want to act when they are initialized or updated. For example, you might want to render a map or save editor's text to the DB. This is when you use .onMount() and .effect(). Returning a function in these works as a cleanup.
Day 5: By now, you know everything about the state of the island. But how do we change it? You need the .action() method and bind:'s. The action() attaches a function to a DOM event. The Bind API can handle two-way data binding between a state entry and a DOM element's property.
Day 4: Off to my favorite: the derived() function to compute a value based on the state. This elegant API lets you fetch external data and perform calculations. It provides a wrapper for loading state. Like in Svelte, derived values are writable, so they handle optimistic UI.
Day 3: Islands are interactive. To define a property that changes over time, use the .state() function. This defines a signal that tells the island to re-render when the value changes. Note that state can be initialized from the input values from yesterday's lesson.
Day 2: In every computer science course, you'll learn that a computer program takes a user from input to output. This is what the .input() function is all about. You can either specify the TS type or use a schema to do so.
Day 1: What is an island? It's an interactive component that can render on both the server and client sides. Although you share the same component on both ends, the server side can only render the shell of the component, which will be used later on the client side.
Day 0: I want you to learn my UI library, and I think you can do so by reading one tweet a day. By the end of next Sunday, you should be proficient in @ilha_js. In return, I ask you to repost lessons so that more people can learn from it. See you tomorrow for our first lesson!





















