We have static #programming languages that are both adequate for the server-side and can target the client-side (Javascript, WASM, native, etc), such as #Scala, #Kotlin, #Rust, #FSharp, #Typescript.

The biggest advantage of using the same language is that you can share code, starting with the data models, alongside serialization, and parsing/validation rules. The API can thus be easily kept in sync, and a server-side test is also relevant on the client-side.

@alexelcu
Indeed so, I chose #Scala3 for SWIM :
https://swim.benmatthews.eu
as I can write a complex society-climate #model, complex web GUI, and handle many historical datasets, all in one language - and I'm amazed how robustly #scalajs works for this. This is - so far - a one-man project. However individuals can keep coding longer than fashions in tech, or even mega corporations. Scala needs a broader influx, such examples of science code can help show python is not the only option.
Scalable World Interactive Model

@benjhm @jasmith Your project looks great and quite an inspiration! I have an open-source educational computing project that I have been thinking about for years and I finally want to get started. #scala 3 + #scalajs would be an excellent fit.

Scala 2 was my primary server-side language from 2009-2018. Two moderately large systems are still in production. I am learning what is new in Scala 3.

Can you recommend a SPA framework and a back-end service framework licensed for open-source release?

@jasmith @benjhm Another possible choice for an Easy Stack is to use https://com-lihaoyi.github.io/cask with https://com-lihaoyi.github.io/scalatags and https://htmx.org/ in a server-side rendered application. It's completely at the other side of the spectrum, but it's a no-brainer to get started. You can probably swap Cask with Play and fastparse with Twirl if you want something more production-proof.
Cask: a Scala HTTP micro-framework

@lolgab @benjhm Thanks much! I really like Li Haoyi’s libraries. The code is clean and pragmatic. In this case I was not sure if Cask supports Scala 3 and the framework does not seem to be oriented towards async programming. I plan to put most of the logic and UI in the client (Scala JS) and use the back-end for data communications and synchronization. So mainly for services.

I also wanted to also look at Vert.x .. it’s not especially a Scala project, but it seems usable from Scala.