All Projects → vmunier → Akka Http Scalajs.g8

vmunier / Akka Http Scalajs.g8

Licence: apache-2.0
Giter8 template to get started with Akka HTTP and Scala.js.

Programming Languages

scala
5932 projects
scalajs
39 projects

Labels

Projects that are alternatives of or similar to Akka Http Scalajs.g8

podpodge
Convert YouTube playlists to audio-only RSS feeds for podcast apps to consume.
Stars: ✭ 32 (-69.52%)
Mutual labels:  akka-http
Akka Http Microservice
Example of http (micro)service in Scala & akka-http
Stars: ✭ 701 (+567.62%)
Mutual labels:  akka-http
Akka Http
The Streaming-first HTTP server/module of Akka
Stars: ✭ 1,163 (+1007.62%)
Mutual labels:  akka-http
Endpoints4s
Scala library to define HTTP-based communication protocols
Stars: ✭ 331 (+215.24%)
Mutual labels:  akka-http
Akka Http Json
Integrate some of the best JSON libs in Scala with Akka HTTP
Stars: ✭ 530 (+404.76%)
Mutual labels:  akka-http
Scale
Another example of a REST API with Akka HTTP
Stars: ✭ 23 (-78.1%)
Mutual labels:  akka-http
typebus
Framework for building distributed microserviceies in scala with akka-streams and kafka
Stars: ✭ 14 (-86.67%)
Mutual labels:  akka-http
Squbs
Akka Streams & Akka HTTP for Large-Scale Production Deployments
Stars: ✭ 1,365 (+1200%)
Mutual labels:  akka-http
Tapir
tapir, or Typed API descRiptions
Stars: ✭ 677 (+544.76%)
Mutual labels:  akka-http
Sttp
The Scala HTTP client you always wanted!
Stars: ✭ 1,078 (+926.67%)
Mutual labels:  akka-http
Akka Grpc
Akka gRPC
Stars: ✭ 361 (+243.81%)
Mutual labels:  akka-http
Akka Http Session
Web & mobile client-side akka-http sessions, with optional JWT support
Stars: ✭ 429 (+308.57%)
Mutual labels:  akka-http
Chronicler
Scala toolchain for InfluxDB
Stars: ✭ 24 (-77.14%)
Mutual labels:  akka-http
typed-schema
Typelevel http service definition DSL
Stars: ✭ 151 (+43.81%)
Mutual labels:  akka-http
Swagger Akka Http Sample
Sample demonstrating use of swagger-akka-http
Stars: ✭ 79 (-24.76%)
Mutual labels:  akka-http
scala-web-development
Scala Web 开发 - 使用 Akka
Stars: ✭ 42 (-60%)
Mutual labels:  akka-http
Es Cqrs Shopping Cart
A resilient and scalable shopping cart system designed using Event Sourcing (ES) and Command Query Responsibility Segregation (CQRS)
Stars: ✭ 19 (-81.9%)
Mutual labels:  akka-http
Akka Http Quickstart Scala.g8
Stars: ✭ 103 (-1.9%)
Mutual labels:  akka-http
Scala Ddd Example
🎯 λ Hexagonal Architecture + DDD + CQRS applied in Scala using Akka HTTP
Stars: ✭ 86 (-18.1%)
Mutual labels:  akka-http
Spark As Service Using Embedded Server
This application comes as Spark2.1-as-Service-Provider using an embedded, Reactive-Streams-based, fully asynchronous HTTP server
Stars: ✭ 46 (-56.19%)
Mutual labels:  akka-http

Akka HTTP with Scala.js

License

This is a Giter8 template showing how you can integrate an Akka HTTP project with a Scala.js project.

Run the application

$ sbt new vmunier/akka-http-scalajs.g8
$ cd akka-http-scalajs
$ sbt
> project server
> ~reStart
$ open http://localhost:8080

The application contains three directories:

  • server Akka HTTP application (server side)
  • client Scala.js application (client side)
  • shared Scala code that you want to share between the server and the client

Features

The application uses the sbt-web-scalajs sbt plugin and the scalajs-scripts library.

  • compile, run, reStart trigger the Scala.js fastOptJS task
  • ~compile, ~run, ~reStart continuous compilation is also available
  • Set scalaJSStage to FullOptStage when packaging your application for fullOptJS to be executed instead of fastOptJS:
    sbt 'set scalaJSStage in Global := FullOptStage' universal:packageBin
    
  • Source maps
    • Open your browser dev tool to set breakpoints or to see the guilty line of code when an exception is thrown.
    • Source Maps are enabled in both fastOptJS and fullOptJS by default. If you wish to disable Source Maps in fullOptJS, then add scalaJSLinkerConfig in (Compile, fullOptJS) ~= (_.withSourceMap(false)) in the Scala.js projects.

Load the server project at sbt startup

Add the following line to build.sbt if you wish to load the server project at sbt startup:

onLoad in Global := (onLoad in Global).value.andThen(state => "project server" :: state)

Cleaning

The root project aggregates all the other projects by default. Use this root project to clean all the projects at once.

$ sbt
> clean

IDE integration

IntelliJ

In IntelliJ, open Project wizard, select Import Project, choose the root folder and click OK. Select Import project from external model option, choose SBT project and click Next. Select additional import options and click Finish. Make sure you use the IntelliJ Scala Plugin v2017.2.7 or higher. There are known issues with prior versions of the plugin.

Eclipse

  1. Add addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.2.4") to project/plugins.sbt
  2. Add the following lines to the server's settings in build.sbt:
// Compile the project before generating Eclipse files, so that generated .scala or .class files for Twirl templates are present
EclipseKeys.preTasks := Seq(compile in Compile)
  1. Run $ sbt "eclipse with-source=true"
  2. Inside Eclipse, File/Import/General/Existing project..., choose the root folder. Uncheck the third checkbox to only import client, server and shared/.jvm, click Finish. Alt text

Classpath during development

The assets (js files, sourcemaps, etc.) are added to the classpath during development thanks to the following lines:

WebKeys.packagePrefix in Assets := "public/",
managedClasspath in Runtime += (packageBin in Assets).value

Note that packageBin in Assets also executes any tasks appended to pipelineStages, e.g. gzip. You may want to avoid executing tasks under pipelineStages during development, because it could take long to execute.

In that case, in order to still have access to the assets under WebKeys.packagePrefix in Assets during development, you can use the following code instead:

lazy val server = (project in file("server")).settings(
...
WebKeys.packagePrefix in Assets := "public/",
WebKeys.exportedMappings in Assets ++= (for ((file, path) <- (mappings in Assets).value)
  yield file -> ((WebKeys.packagePrefix in Assets).value + path)),
...
)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].