When I had this need I put together https://src.d10.dev/lotter. It takes as input ledger-cli entries and puts out entries with lot info added, which you can then run through `ledger`. You can quickly scan its output and see if what it does makes sense to you.
The repo hasn't seen activity for a while, but AFAIK it still works. I just haven't needed it myself recently.
I've also experimented with Go for both frontend and backend, using WASM. The approach I took was build the client-side like a backend service. What I mean is, some (normal) requests from the browser reach the hosted server, while others reach the local WASM. That code running locally is written like a server, i.e. HTTP handlers.
It's definitely experimental. In my experience it pairs well with HTMX or Unpoly for a good UI. You can see a live demo at https://clientcide.d10.dev/.
The repo hasn't seen activity for a while, but AFAIK it still works. I just haven't needed it myself recently.