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


Dokploy

https://dokploy.com