aantron/dream

Is Heroku dead for OSS? Remove the Heroku example and CI

Opened this issue · 9 comments

As I understand it, it's no longer possible to deploy to Heroku for free, which complicates maintenance with the need to be on a paid plan. I also suspect that Heroku is much less popular as a result of this. So, I'm inclined to remove the Heroku example, as it probably won't be updated. It can still be found in the repo history if anyone needs it.

Looks like I opened a duplicate issue on my own repo... #273

@aantron how about trying out Railway or Replit? Both of them provide a Nix-based approach, meaning that you have flexibility over choosing packages. Personally, I've struggled with using opam as I'm a beginner myself (you're forced to use only Nix and not the in-built package manager, I think?), but I've tried Replit with SvelteKit, and I think it's quite nice.

I'd be happy to add either one. Would you (or someone) be willing to create an initial PR? I would polish it afterwards (as we did with Fly.io by @dangdennis and as I've recently done to maintain our existing deployment examples). It would be a great help to me to not have to figure out each platform on its own from zero, but to have some initial instructions I could get started with.

I personally found Railway intriguing in the last few days. Haven't looked into Replit yet.

I made a template on railway for dream fwiw. https://railway.app/template/mxESzS

while railway created nixpacks, for unsupported languages, docker is still the way to go.

I made a template on railway for dream fwiw. https://railway.app/template/mxESzS

while railway created nixpacks, for unsupported languages, docker is still the way to go.

Great! What's the best way for us to present it in the Dream repo? As a link? As an example within the Dream repo?

I think I can write a minimalistic example based on this.

Railway does seem to lack a free plan. The issue here is not money (Dream already pays much more to host dream.as). I don't think I can justify the time cost of managing an extra entanglement for a hosting platform at this point.

@aantron fair point. I think I remember why I deleted my account immediately. At least from a beginner's PoV, they would prefer a free hosting service. Perhaps Replit would be a fair place to write a few tutorials? What would be a example tutorial you'd recommend me to try out?

Edit: Looks like OCaml already exists, and the example, although not a Dream project, can be swapped easily with the example.

We'd probably wantt just the simplest "Hello, world!" type of example, like the Heroku one:

let () =
  Dream.run ~interface:"0.0.0.0" ~port:80
  @@ Dream.logger
  @@ Dream.router [
    Dream.get "/" (fun _ -> Dream.html "Dream running in Reeplit!");
  ]