4 ms·
I love reading the comments. There are no simple answers. I was and still am in a similar situation. Since performance, ease of use and resource consumption
by lakomen 4y ago
I love reading the comments.
There are no simple answers.
I was and still am in a similar situation.
Since performance, ease of use and resource consumption are important my backend language of choice is Go.
So I wrote a simple backend generator with RESTful CRUD endpoints.
The workflow is, you define the data models in your models package. The generator then analyzes those models, creates all the routes and repositories and handlers, then creates Angular model definitions (interfaces) and finally vuex-orm model definitions.
It's very simple and primitive.
If you want to change anything you have to regenerate.
So this gives you a skeleton backend app. No auth.
But that's the general idea.
It uses mongodb as a database target.
And most importantly it supports data updates via websocket.
I initially worked with Angular on the frontend but have been using Vue for the last 2 years.
Angular sadly only has ngrx-data which is incomplete. Relationships are not supported and have to be done manually.
So I found vuex-orm, which is far from perfect, but works well and is productive, supports relationships.
However vuex has been deprecated in favor of Pinia.
Someone did a Pinia version of vuex-orm-next, but I haven't tried it yet.
So that's all I have.
I've been thinking to rewrite it. I wanted a simple tool, that doesn't get in my way.
I've been thinking to have a clumsy model definition way like entgo.io . And the more I worked with it, the more I see that their way is a better way. Have elaborate model definitions and relationship definitions.
I was thinking about that for a while and ent made it.
But ent is far from perfect too. It doesn't generate client models, it's complicated, the documentation is lacking. The developers assume you're smart. I'm not smart when I have to crawl through someone else's code.
They're going a certain route, and both their graphql and grpc implementations are lacking.
I tried to write an extension but the learning curve was too steep.
And now they have migrations with some external library, am I'm just sitting there thinking, why do you assume your libraries are a part of my world. The whole thing is a mix of marketing and hype development. They have their own company now and of course they want to make money.
I prefer something less hype driven. Something where when you criticize you don't self censor in order to not hurt their reputation. And I hate that.
So I'm thinking make such library myself but how can I monetize?
Who would pay me to create a useful tool to solve this 20+ year old problem? This a serious question.
I could open source my tool so far. But I didn't because it could be used by competitors to provide what I provide.
Currently my income is so low that I'm actually seeking either employment or freelance work, which I haven't done in at least 8 years.
An alternative would be Spring Boot 3. Learn Java. But could I handle the Java bs on a regular basis? Sometimes when I hate Go, I experiment doing that same backend with Spring Boot. I do the JPA definitions, do the security setup and then I just say fuck it because deep diving requires more Java knowledge and the community is very unfriendly and walled-off.
I'll continue reading the other comments now.
- a8m 4y agoHey, I am the creator of entgo.io. I'm sorry to hear that your experience with the project was not great. I try to be available on our Discord, Slack, or the issue tracker, but sometimes I do miss some messages. If you ever consider to rejoin the community, please don't hesitate to drop me a message on our Discord. I would also like to emphasize that Ent is an open-source project under the Linux Foundation, and it is not monetized in any way. Most of my work on it in the last years was on my free time, including when I was working at Facebook and wanted to OSS it. We (heavily) use Ent in our own products today, and that is why we continue to sponsor and maintain the project. I love it and I find it useful. Thanks for the honest feedback. I appreciate it.