- 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.
[2]: https://ui.nuxt.com/
- I don't think there are humans involved. I've now seen countless PRs to some repos I maintain that claim to be fixing non-existent bugs, or just fixing typos. One that I got recently didn't even correctly balanced the parenthesis in the code, ugh.
I call this technique: "sprAI and prAI".
- I remember seeing the concept of "torrents with dynamic content" a few years ago, but apparently never became a thing[1]. I kind of wish it did, but I don't know if there are critical problems (i.e. security?).
- 14 points
- I'm doing the same, I have family plans with my friends for pretty much anything so I don't think I ever reached such high monthly costs though.
I started my home server for self hosting Immich, not only for the cost but because I like to have my images close to me.
I also recently replaced Lightroom with ON1, it's definitely not the same quality but, as hobbyist, it didn't make much sense to pay that much for me anymore. It was by far the most expensive subscription I had.
- While I think you're right (generics might be useful there), it's fairly easy to wrap the `sync` primitives such as `sync.Pool` and `sync.Map` into your specific use case.
Go is pretty strict about breaking changes, so they probably won't change the current implementations; maybe we'll see a v2 version, or maybe not. The more code you have, the more code you have to maintain, and given Go's backward-compatibility promises, that's a lot of work.
- 1 point
- I think author chose the wrong mantra too!
What happens in fast paced startups is that you ship what essentially is a MVP as soon as possible (i.e. you stop at the "make it work" step) because you need to build your customer base, finances, etc.
A better mantra would've been Facebook's "move fast and break things". But, that only works if you can fix the things later. You wouldn't do it if you're building an aircraft for example.
- While I don't disagree (broadly speaking) with you about the complexity of webdev, it looks like you don't have a full understanding of what Tailwind is:
a (CSS) code generator.
It happens to be written in JS so it can be integrated as part of existing build steps or bundling. That's the rationale behind it. :) It's build-time, not something client-side.
- hey there, honestly I haven't tried prql yet but I think I already saw it on HN before.
What would you expect from a language integration? I'd like to work on something in Go, which doesn't make it easy to have Rust bindings.
One nice challenge for me would be to rewrite the compiler in pure Go, but maybe it's too complex of a task bringing little value to the project overall :)
What other tools do you need? E.g. what kind of CLIs? What do you mean by alternative backends?
- 1 point
- it doesn't look worse than OpenAPI's yaml to me
it's fairly concise, the method and the request/response types are well separated and readable
the only thing I could argue with is mixing validation and type defs, as it looks like one of these things that quickly evolve over time and you end up duplicating both in the schema and the business logic
- Usually the Go team scrapes from GitHub and open source programs how people use something before breaking them; I suspect they found little usage of { and } in HTTP handler paths. They also provide a way of opting out the new behaviour, so they don't force you to change anything in your code (but yes, it does require you to set a new env var).
The change to the for loop semantic is another example in this release; it effectively is a breaking change.
All Go programs continue to compile and run, though with minor behavioural changes. I think Go took a pragmatic approach, and that was one of the reasons for its success.
- 152 points
- I had the same idea as you and rewrote my blog CMS. Initially it was very similar to yours, with Maud [1].
Then I started a little library for replacing Maud, for a better developer experience [2] (still looking for a better name).
The important thing for me is having fun in the process, my personal website is a sandbox for playing and experimenting :)
- 5 points
- 1 point
- 5 points
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).