A shared core for browser apps in Rust/wasm, no UI framework, client and server from one source
Hello.
Sharing my recent projects, still at 0.x.
I'm building a shared core that builds both the browser client (wasm32) and the native server from the same source, through the development of two apps: a web calendar (day/week/month views, recurring events, reservations) and a tool for
the Call of Cthulhu 7e tabletop RPG (character sheets, dice rolls, logs).
The core, which I think is the most interesting part, is just wasm-bindgen + web-sys, one event loop owned by the app, the talc allocator, OPFS for local storage (switch to std::fs with unix targets), and a size-tuned release profile. It lives in animagram-jp/app, still 0.0.x, with a first release planned for the end of November (or possibly December).
While laying out the calendar I needed bounding-box ops on grids whose columns have their own widths. That became a rectlinear grids library (no-std, optional geometry feature): crates.io: Rust Package Registry
A wasm app shouldn't feel heavier than a JS-only one, in bytes shipped, first paint or input latency. No existing CSS framework fit that bar, so I wrote one, now a sibling repo (plain CSS, @layer, renders without JS).
Note: I use Claude Code in development. Most translation (to English) and some commits are by them.
If something like this already exists, I'd love a pointer. Otherwise, curious whether you find the approach worth pursuing.
- GitHub - animagram-jp/app: A general-purpose boilerplate for GUI applications that edit and read structured data. · GitHub
- GitHub - animagram-jp/rectgrid: Region operations on rectilinear grids with arbitrary unit systems. · GitHub
- GitHub - animagram-jp/css: Interface design system and DOM implements. · GitHub
For scale: the calendar ships as a 312 KiB wasm (120 KiB gzipped), including
argon2 + chacha20poly1305 for the local vault, serde_json, and the whole UI.
1 post - 1 participant