4 ms·
This is great - thanks for sharing. I am actually building something very similar myself as I started building a couple SaaS and though it would be nice to extr
by zaphodias 10mo ago
This is great - thanks for sharing. I am actually building something very similar myself as I started building a couple SaaS and though it would be nice to extract the common pieces in a template.
My stack is similar, with a few differences:
- Go backend with sqlc, but using ConnectRPC[1]. I chose this as it allows me to define a proper API scheme and generate a decent-quality Typescript client.
- Nuxt (Vue) instead of Next.js (React). I chose this even though I'm new to vue cause I saw the open source components and templates here [2] (especially the dashboard template: [3]) and was convinced.
I'll definitely check out your repo as inspiration.
[1]: https://connectrpc.com/ https://connectrpc.com/
[2]: https://ui.nuxt.com/ https://ui.nuxt.com/
[3]: https://dashboard-template.nuxt.dev/ https://dashboard-template.nuxt.dev/
- moh_quz 10mo agoThanks man, really appreciate it! ConnectRPC looks interesting actually, proper API schema with generated TS client is nice. And that Nuxt dashboard template is clean, hadnt seen that before. If you spot anything in the repo or have ideas, feel free to open a PR. Or just reach out directly if you wanna chat about the stack. Always down to learn from someone building similar stuff
- srameshc 10mo agoThanks for sharing. I am particularly interested in knowing your experience with ConnectRPC. I wasn't aware about this library. I use Go and JS implementation in one of our webapps and it was painful specially on the web but once working it was beautiful. Just curious if you feel it is a much better developer experience with ConnectRPC ?
- zaphodias 10mo agoDid you mean gRPC maybe? In any case, my experience so far has been great. The connect-es generator takes your protobuf and generates a TypeScript library which looks pretty good. You can use ConnectRPC both from the browser and from Node.js (the latter can leverage HTTP/2, while the former uses the native fetch() or a function you provide).