armanbilge/calico

Kitchen sink export for simple prototyping

hejfelix opened this issue · 6 comments

It would be nice to have a batteries included object to just import all members and givens to get started.

It feels like a lot to import cats, cats effect, fs2, calico with all the correct implicits and syntax just to get rolling.

Alternatively it could be part of the "WebApp" (forgot the exact name).

Yeah, gathering all the imports tends to be an issue with Typelevel libraries :)

We were just discussing this on the Typelevel Discord. I think the obvious strategy would be to use Scala 3 export, but it sounds like IDEs have some trouble with it right now 😕 see scalameta/metals#4325

Related:

What a timing, I wanted to make this issue as well :P, and congratulations on the first milestone 0.2 release!.

One added bonus of providing the "kitchen sink", is that it could be used as a gateway drug, through docs or examples, to Cats Effect, fs2 without people realizing it.
Now the amount of Scala frontend developers is tiny(relatively speaking) of course, but it could be a way to get non-Scala people doing FP without realizing it.

I think a "Typelevel frontend toolkit" could be interesting. It would be a single artifact and single import, which includes:

  • Calico, specifically the IO-based DSL
  • IO and Signal from CE/FS2
  • FetchClient from http4s-dom
  • Circe

Probably, that would be enough to build some simple and interesting things.

I think one prerequisite of such a frontend toolkit would be that the toolkit plays nice as well with sbt and Mill no?
sbt/sbt#7133

Until then either way, we could get a lot of mileage out of making a vite + those libs template

plays nice as well with sbt and Mill no

Hm, I mean what are you looking for here? I was thinking as simple as:

libraryDependencies += "org.typelevel" %%% "toolkit-frontend" % "0.1.0"
import org.typelevel.toolkit.frontend.{*, given}

plays nice as well with sbt and Mill no

Hm, I mean what are you looking for here? I was thinking as simple as:

libraryDependencies += "org.typelevel" %%% "toolkit-frontend" % "0.1.0"
import org.typelevel.toolkit.frontend.{*, given}

Actually ignore me, that is a lot better. I was overthinking it.