A short list of graphql relay style backends or libraries

I asked in the graphql discord server channel, what people used to build their graphql relay style backends.
Here I’ll list the responses.

Language: Go
Toolkit: gqlgen with ent and entgql extension

I made a starter package one can clone and adapt. It uses openid-connect for authentication and postgresql as the data storage. It can also use sqlite in-memory for development purposes.
https://github.com/dlukt/graphql-backend-starter


Language: Scala
Toolkit: Caliban


Language: Node.js
Toolkit: Pothos

Another member of the graphql discord server created a starter package with Prisma, Pothos and Better Auth.
https://github.com/nkzw-tech/server-template


Language: Python
Toolkit: Strawberry GraphQL


Language: Elixir/Phoenix
Toolkit: Absinthe


Language: C#/.net
Toolkit: Chillicream


If you know more, please comment and I’ll extend the post

Remix JS: Does Remix use process.env or import.meta.env?

Does Remix use vite’s import.meta.env or process.env?

The answer is, both. However it’s better to rely on vite’s import.meta.env because of 2 things:
1. Only VITE_ prefixed environment variables are imported
2. It’s also available in the non-SSR context, while process.env is a NODE thing only and not propagated to the browser.

So what does that mean?

You can have a
.env.development
and a
.env.production
file in the project root and add things like

and you can access those variables with e.g.

but this also gives you access to other variables, which are present by default

Uncaught RangeError: date value is not finite in DateTimeFormat.format()

Playing with Flowbite React and their Datepicker component, I had data coming from the backend in this or similar form:

aka

React is a bit of a cringy special child. Angular, no problemo. Vue, no problemo.
Anyhow.

I have to set defaultValues in a React-hook-form form, because React is special with controlled and uncontrolled components.
aka

So, I’m using dayjs for my date/time stuff, and this line essentially means, parse the Date before assigning it to a form value (or create a new Date(), because React and controlled/uncontrolled forms is not a happy story).

TL;DR: Parse the date value coming from the backend into a Date object. e.g.

A list of self-hosted OSS or free PaaS solutions

Kamal

https://kamal-deploy.org/
https://github.com/basecamp/kamal

+:
No central management interface needed, per project configuration

-;
Uses “kamal-proxy”, not nginx. Kamal-proxy is written in Go and significantly slowerthan nginx, as is Traefic and Caddy.


Coolify

https://coolify.io
https://github.com/coollabsio/coolify

+:
Nice looking UI and has continuous integration

-:
Requires 2CPU 2GB RAM and 30GB per node for the UI alone.


Caprover

https://caprover.com
https://github.com/caprover/caprover


Dokku

https://dokku.com/
https://github.com/dokku/dokku

Beware of ent (entgo.io)

If you’re using Go, you’ve likely heard of ent. Some Ex-Facebook employee maintaining and developing an open source version of the public version of Meta’s entity framework for Go.

Well there’s a catch.
Migrations.

They sweet talk you in their documentation to use Atlas. Ariga’s Atlas, not the MongoDB one.
But Atlas is a proprietary cloud offering.
There might be a free tier, but who cares?
You have to give other parties access to your schema, if you want to containerize your binary or even if you’re not distributing your schema with your binary. Not just your schema, also your database.

To me that is a breach of trust.

That is “open source” software being used as bait for a lock-in cloud offering.

Update 18.01.2025: Apparently this post, criticizng their company got me banned from their github and discord server, from the discord server just for asking why I was banned. So I’d be double as careful when dealing with this arbitrary Dictator Ariel from ent.