While working on porting the Small Technology Foundation web site¹ to Kitten², I took the opportunity to pull out base Model and Collection classes that I’ll likely end up including in Kitten proper:
• Model: https://codeberg.org/small-tech/site/src/branch/kitten/app_modules/database/Model.js
• Collection: https://codeberg.org/small-tech/site/src/branch/kitten/app_modules/database/Collection.js
To see them in use, here’s the base Posts class (with RSS generation) that extends Collection:
https://codeberg.org/small-tech/site/src/branch/kitten/app_modules/database/Posts.js
And here’s the concrete EventPosts collection class that extends Posts:
https://codeberg.org/small-tech/site/src/branch/kitten/app_modules/database/EventPosts.js
And the EventPost (showing an implementation of a calculated property):
https://codeberg.org/small-tech/site/src/branch/kitten/app_modules/database/EventPost.js
So all this is possible (persisting and reading back typed model collections, etc.) thanks to JSDB¹ (JavaScript database), a zero-dependency, transparent, in-memory, streaming write-on-update JavaScript database I wrote for the Small Web that persists to a JavaScript transaction log and is included as as first-class citizen in Kitten.
https://codeberg.org/small-tech/jsdb
PS. For a much gentler introduction to persistence in Kitten, see the Kitten Persistence tutorial:
https://kitten.small-web.org/tutorials/persistence/
Enjoy! :kitten:💕
¹ https://small-tech.org
² https://kitten.small-web.org
#Kitten #SmallWeb #SmallTech #JavaScript #database #JSDB #typeSafety #JSDoc #closureCompiler #TypeScript #workInProgress
😺 Fun Kitten¹ fact
Did you know that Kitten has a built-in HTML validator that checks your markup for validity and accessibility issues, etc.?
You’re informed of validation errors in not just terminal but also in your browser’s web developer panel. And, if you select the “Show validation issues on page” link from a validation error in the web developer panel, Kitten will show the validation errors in place on your page.
This helps me catch issues with my markup all the time and I hope it helps you too.
Enjoy!
:kitten:💕
¹ https://kitten.small-web.org
#Kitten #SmallWeb #HTML #HTMLValidator #validation #web #dev #SmallTech #NodeJS #JavaScript #CSS
New Kitten¹ update
Experimental:
• Adds `data` property to Kitten components
• Adds swap target to `page.send` so you can have an element added before, after, as first child of and as last child of another (this is syntactic sugar over htmx and works around some of the complexities with out-of-band swaps in htmx, especially when streaming table rows to tables).
Also, check out the latest live page and page events state view in Kitten’s Settings (every Kitten app has this settings view).
¹ https://kitten.small-web.org
#Kitten #SmallWeb #OOP #eventModel #StreamingHTML #liveComponents #WebSocket #RPC #SmallTech #web #dev #framework #server #platform
I’m sorry folks but I’m going to remove Windows support from Kitten¹.
It’s been a long time coming (read what’s in the Windows tab of the current installation section – https://kitten.small-web.org/#get-started – if you want a longer rant) and I simply refuse to even test under that horribly hostile operating system. I don’t want anything to do with it and nor will I pay Microsoft a single Euro cent for the pleasure of having its AI and surveillance shoved down my throat so I can support that shitty platform with my work.
Windows has absolutely nothing going for it. Want a proper proprietary OS that isn’t shit? Use macOS. Want a proper free and open OS? Use some modern flavour of Linux. There’s no reason to use a proprietary OS that exploits you while having all the usability of a Linux desktop from ten years ago.
(The only valid use case I can see for Windows is if you’re forced to use it by your employer. And that’s why I’ve supported it so far – and then only under WSL, which has its own issues, making the Windows experience sub-par to the macOS and Linux experience anyway.)
I’m only one dev and this move will simplify the codebase further (always a good thing) and free up cycles that can be used to better test/support Kitten on a wider range of Linux distributions.
:kitten:💕
¹ https://kitten.small-web.org
#Kitten #SmallWeb #SmallTech #Microsoft #Windows #BigTech #surveillanceCapitalism
:kitten: New Kitten release
• Improves macOS post-install instructions
• Node runtime upgraded to 22.11.0
• New well-known /💕/ok route for testing new deployments (return 200 success, guaranteed to work even if your app doesn’t)
• Interpolated numbers fix in kitten.html parser.
• Now with many more tests :)
Now that Kitten¹ is rather stable, I’ve decided to write some regression tests before refactoring to add class-based route/component support (in addition to the current—easy to get started with/use—function-based workflow).
I tried using Playwright but it’s quite heavy and not quite right for my needs (Kitten is more than just a server and I need control of it during testing). ~100 lines of code later, I have something that works well using tape and JSDOM :)
GNU social JP is a social network, courtesy of GNU social JP管理人. It runs on GNU social, version 2.0.2-dev, available under the GNU Affero General Public License.
All GNU social JP content and data are available under the Creative Commons Attribution 3.0 license.