Monorepo: seeking for an advice for bi-lang project

This page summarizes the projects mentioned and recommended in the original post on /r/scala

Our great sponsors
  • WorkOS - The modern API for authentication & user identity.
  • LearnThisRepo.com - Learn 300+ open source libraries for free using AI.
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • orval

    orval is able to generate client with appropriate type-signatures (TypeScript) from any valid OpenAPI v3 or Swagger v2 specification, either in yaml or json formats. 🍺

    Backend is source of truth for types on frontend (backend generated OpenAPI definition with tapir, frontend takes it with orval)

  • tapir

    Declarative, type-safe web endpoints library

    Backend is source of truth for types on frontend (backend generated OpenAPI definition with tapir, frontend takes it with orval)

  • WorkOS

    The modern API for authentication & user identity. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

  • scalajs-react

    Facebook's React on Scala.JS

    Then there's scalajs-react, which can be integrated with existing React ecosystem, but it's just sooo compex: macros, 5-6 type parameters, hundreds and hundreds of cryptic types. We decided to stick with TypeScript instead.

  • tyrian

    Elm-inspired Scala UI library.

    Yes, I have. It didn't work out. There are quite neat libs like Tyrian, but they lack any ecosystem and I struggled to integrate it with pure JS libs - yet our app has a lot of very common components/widgets that we're really hesitating to write ourselves.

  • sbt-npm

    Run npm tasks as part of an sbt build

    I’ve used sbt-npm for exactly this case without issue. FWIW, I would generate both your Scala routes and TypeScript front ends from an OpenAPI spec rather than making the front end “see what the back end does today” with Tapir.

  • Laminar

    Simple, expressive, and safe UI library for Scala.js (by raquo)

    Maybe Laminar?

  • crystal

    Functional, tagless and lens-based, global state management. With scalajs-react fs2.Stream integrations. (by gemini-hlsw)

    In this case, maybe Crystal?

  • LearnThisRepo.com

    Learn 300+ open source libraries for free using AI. LearnThisRepo lets you learn 300+ open source repos including Postgres, Langchain, VS Code, and more by chatting with them using AI!

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts