Git Product home page Git Product logo

lagom.github.io's Introduction

Gitter Join the contributors chat at https://gitter.im/lagom/contributors CI / Build and tests Open Source Helpers

Deprecated - Lagom - July 1 2023

This project will only recieve security patches until July 1, 2024, at that point the project will no longer receive any additional patches.

If you are an existing customer of Lightbend and we have not yet contacted you, please reach out to Support.

We recommend migrating any existing work to:

  • Akka for deeply customized projects with complex infrastructure needs. Akka now contains the vast majority of Lagom features.
  • Kalix for a managed scalable environment with an abstraction above the Akka framework layer to allow you to focus only on business logic.

Lagom - The Reactive Microservices Framework

Lagom is a Swedish word meaning just right, sufficient. Microservices are about creating services that are just the right size, that is, they have just the right level of functionality and isolation to be able to adequately implement a scalable and resilient system.

Lagom focuses on ensuring that your application realizes the full potential of the Reactive Manifesto while delivering a high productivity development environment, and seamless production deployment experience.

Learn More

License

Copyright (C) Lightbend Inc. (https://www.lightbend.com).

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this project except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

lagom.github.io's People

Contributors

agemooij avatar dwijnand avatar ennru avatar ignasi35 avatar ihostage avatar jroper avatar lutzh avatar marcospereira avatar mergify[bot] avatar octonato avatar raboof avatar rasummer avatar rstento avatar theoliverwhite avatar yannickdeturck avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lagom.github.io's Issues

Add "current" and "latest" documentation trees

  • current should be a mirror of the current stable version, allowing for a permanent link to the current version of a documentation page (assuming no page name changes)
  • latest can always build from master, allowing us to preview changes that are merged to master but not yet part of an explicitly versioned tree

Update Java sbt instructions to use Tech Hub

The Tech Hub Project Starter creates a project from the Lagom G8 template, includes a distribution sbt, and compresses the file. This is simpler for the user because they do not need to install sbt separately. The Try Lagom >Java flow should be updated to this simpler flow.

[Proposal] Promote misc content to it's own section

There's a few links on the Community Content section but that's a bit out of reach or unnaturally located. We should extract Community Content from under the Documentation index and put it into it's own page.

The proposal is to have an index including:

  • out in the wild blog posts, videos, etc... as we have now.
  • get rid of the Community part in the name and merge community and lightbend provided contents (aka, conference recordings, slides of talks, etc...)
  • an index of Lagom recipes linking back to the recipes repository

I think this new page would still be part of the Documentation section so it won't need a new item in the Nav bar at the top. Then, I would add a subsection with two or three items in the Documentation side menu.

screen_shot_2018-06-01_at_09_46_10

WDYT?
(cc @rstento)

Prefer "-Dsbt.version=0.13.13" to avoid sbt version issues

When running sbt new lagom/lagom-scala.g8 a version 0.13.13+ of the local sbt launcher is required. This implies we must tell users to upgrade.

Alternatively we could suggest using the command sbt new -Dsbt.version=0.13.13 lagom/lagom-scala.g8 (or lagom-scala.g8), that would also lift the need to bump the version of the user's sbt launcher.

Adjust top-level nav "Get Started" to "Try Lagom"

In the usability studies we conducted, there was a bit of confusion over the "Get Started" tab in the nav bar. Some users were looking for "Download", (which was the tab name before, but also caused confusion). Also, lightbend.com is going to change their button to say "Try Lagom" so this issue is to change "Get Started" to "Try Lagom" and see if that helps new visitors navigate more easily.

Highlight links in monospaced text

In the documentation theme, the style for monospace text (wrapped in backticks) overrides the style for links, so there is no visual indication that certain code references are linked.

As an example, look at the first reference to JdbcSession in the Relational Database Read-Side support page:

jdbc-session-screen-shot

You can't tell by looking, but the first JdbcSession is a link to the Javadocs, while the second is not linked. Readers may miss the links to API documentation that are common through the documentation, because they don't look like links.

We can fix this by changing the CSS so that monospace text no longer overrides the font weight and color. Here's what it looks like when I disable those CSS rules in my browser's inspector:

jdbc-session-screen-shot-fixed

Note that we'll need to fix both the theme in this project (for the website build) and the development theme in lagom/lagom.

Update Scala instructions to use Tech Hub

The Tech Hub Project Starter creates a project from the Lagom G8 template, includes a distribution sbt, and compresses the file. This is simpler for the user because they do not need to install sbt separately. The Try Lagom >Scala flow should be updated to this simpler flow.

resolver errors (uses http)

[error] Server access Error: Connection refused (Connection refused) url=http://repo.typesafe.com/typesafe/releases/com/fasterxml/oss-parent/12/oss-parent-12.jar

Full output:

[info] Loading global plugins from /Users/marcospereira/.sbt/0.13/plugins
[info] Updating {file:/Users/marcospereira/.sbt/0.13/plugins/}global-plugins...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Loading project definition from /Users/marcospereira/Projects/lagom/lagom.github.io/project
[info] Updating {file:/Users/marcospereira/Projects/lagom/lagom.github.io/project/}lagom-github-io-build...
[info] Resolving com.fasterxml#oss-parent;12 ...
[error] Server access Error: Connection refused (Connection refused) url=http://repo.typesafe.com/typesafe/releases/com/fasterxml/oss-parent/12/oss-parent-12.jar
[info] Resolving com.fasterxml#oss-parent;11 ...
[error] Server access Error: Connection refused (Connection refused) url=http://repo.typesafe.com/typesafe/releases/com/fasterxml/oss-parent/11/oss-parent-11.jar
[info] Resolving org.iq80.leveldb#leveldb-project;0.5 ...
[error] Server access Error: Connection refused (Connection refused) url=http://repo.typesafe.com/typesafe/releases/org/iq80/leveldb/leveldb-project/0.5/leveldb-project-0.5.jar
[info] Resolving org.sonatype.oss#oss-parent;7 ...
[error] Server access Error: Connection refused (Connection refused) url=http://repo.typesafe.com/typesafe/releases/com/google/guava/guava-parent/12.0/guava-parent-12.0.jar
[info] Resolving org.fusesource#fusesource-pom;1.9 ...
[error] Server access Error: Connection refused (Connection refused) url=http://repo.typesafe.com/typesafe/releases/org/fusesource/leveldbjni/leveldbjni-project/1.7/leveldbjni-project-1.7.jar
[info] Resolving org.fusesource#fusesource-pom;1.9 ...
[error] Server access Error: Connection refused (Connection refused) url=http://repo.typesafe.com/typesafe/releases/org/fusesource/hawtjni/hawtjni-project/1.8/hawtjni-project-1.8.jar
[info] Resolving org.fusesource#fusesource-pom;1.9 ...
[error] Server access Error: Connection refused (Connection refused) url=http://repo.typesafe.com/typesafe/releases/org/fusesource/leveldbjni/leveldbjni-project/1.5/leveldbjni-project-1.5.jar
[info] Resolving org.sonatype.oss#oss-parent;7 ...
[error] Server access Error: Connection refused (Connection refused) url=http://repo.typesafe.com/typesafe/releases/io/apigee/trireme/trireme/0.8.5/trireme-0.8.5.jar
[info] Resolving io.apigee.trireme#trireme;0.8.5 ...
[error] Server access Error: Connection refused (Connection refused) url=http://repo.typesafe.com/typesafe/releases/io/apigee/trireme/trireme-node10/0.8.5/trireme-node10-0.8.5.jar
[info] Resolving org.slf4j#slf4j-parent;1.7.12 ...
[error] Server access Error: Connection refused (Connection refused) url=http://repo.typesafe.com/typesafe/releases/org/slf4j/slf4j-parent/1.7.12/slf4j-parent-1.7.12.jar
[info] Resolving com.typesafe#jstranspiler;1.0.0 ...
[error] Server access Error: Connection refused (Connection refused) url=http://repo.typesafe.com/typesafe/releases/com/typesafe/jstranspiler/1.0.0/jstranspiler-1.0.0.pom
[warn] 	module not found: com.typesafe#jstranspiler;1.0.0
[warn] ==== typesafe-ivy-releases: tried
[warn]   https://repo.typesafe.com/typesafe/ivy-releases/com.typesafe/jstranspiler/1.0.0/ivys/ivy.xml
[warn] ==== sbt-plugin-releases: tried
[warn]   https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe/jstranspiler/1.0.0/ivys/ivy.xml
[warn] ==== local: tried
[warn]   /Users/marcospereira/.ivy2/local/com.typesafe/jstranspiler/1.0.0/ivys/ivy.xml
[warn] ==== public: tried
[warn]   https://repo1.maven.org/maven2/com/typesafe/jstranspiler/1.0.0/jstranspiler-1.0.0.pom
[warn] ==== local-preloaded-ivy: tried
[warn]   /Users/marcospereira/.sbt/preloaded/com.typesafe/jstranspiler/1.0.0/ivys/ivy.xml
[warn] ==== local-preloaded: tried
[warn]   file:////Users/marcospereira/.sbt/preloaded/com/typesafe/jstranspiler/1.0.0/jstranspiler-1.0.0.pom
[warn] ==== Typesafe Releases Repository: tried
[warn]   http://repo.typesafe.com/typesafe/releases/com/typesafe/jstranspiler/1.0.0/jstranspiler-1.0.0.pom
[info] Resolving org.sonatype.oss#oss-parent;7 ...
[error] Server access Error: Connection refused (Connection refused) url=http://repo.typesafe.com/typesafe/releases/org/webjars/when-parent/3.2.2/when-parent-3.2.2.jar
[info] Resolving net.ground5hark.sbt#sbt-concat;0.1.8 ...
[error] Server access Error: Connection refused (Connection refused) url=http://repo.typesafe.com/typesafe/releases/net/ground5hark/sbt/sbt-concat/0.1.8/sbt-concat-0.1.8.jar
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] downloading https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.sbt/sbt-twirl/scala_2.10/sbt_0.13/1.1.1/jars/sbt-twirl.jar ...
[info] 	[SUCCESSFUL ] com.typesafe.sbt#sbt-twirl;1.1.1!sbt-twirl.jar (1162ms)
[info] downloading https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.sbt/sbt-web/scala_2.10/sbt_0.13/1.3.0/jars/sbt-web.jar ...
[info] 	[SUCCESSFUL ] com.typesafe.sbt#sbt-web;1.3.0!sbt-web.jar (1313ms)
[info] downloading https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.sbt/sbt-js-engine/scala_2.10/sbt_0.13/1.1.3/jars/sbt-js-engine.jar ...
[info] 	[SUCCESSFUL ] com.typesafe.sbt#sbt-js-engine;1.1.3!sbt-js-engine.jar (1061ms)
[info] downloading https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.sbt/sbt-stylus/scala_2.10/sbt_0.13/1.0.1/jars/sbt-stylus.jar ...
[info] 	[SUCCESSFUL ] com.typesafe.sbt#sbt-stylus;1.0.1!sbt-stylus.jar (818ms)
[info] downloading https://repo1.maven.org/maven2/net/ground5hark/sbt/sbt-concat_2.10_0.13/0.1.8/sbt-concat-0.1.8.jar ...
[info] 	[SUCCESSFUL ] net.ground5hark.sbt#sbt-concat;0.1.8!sbt-concat.jar (166ms)
[info] downloading https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.sbt/sbt-uglify/scala_2.10/sbt_0.13/1.0.3/jars/sbt-uglify.jar ...
[info] 	[SUCCESSFUL ] com.typesafe.sbt#sbt-uglify;1.0.3!sbt-uglify.jar (794ms)
[info] downloading https://repo1.maven.org/maven2/com/typesafe/akka/akka-http-experimental_2.10/2.0.4/akka-http-experimental_2.10-2.0.4.jar ...
[info] 	[SUCCESSFUL ] com.typesafe.akka#akka-http-experimental_2.10;2.0.4!akka-http-experimental_2.10.jar (990ms)
[info] downloading https://repo1.maven.org/maven2/com/typesafe/play/twirl-compiler_2.10/1.1.1/twirl-compiler_2.10-1.1.1.jar ...
[info] 	[SUCCESSFUL ] com.typesafe.play#twirl-compiler_2.10;1.1.1!twirl-compiler_2.10.jar (112ms)
[info] downloading https://repo1.maven.org/maven2/com/typesafe/play/twirl-api_2.10/1.1.1/twirl-api_2.10-1.1.1.jar ...
[info] 	[SUCCESSFUL ] com.typesafe.play#twirl-api_2.10;1.1.1!twirl-api_2.10.jar (84ms)
[info] downloading https://repo1.maven.org/maven2/com/typesafe/play/twirl-parser_2.10/1.1.1/twirl-parser_2.10-1.1.1.jar ...
[info] 	[SUCCESSFUL ] com.typesafe.play#twirl-parser_2.10;1.1.1!twirl-parser_2.10.jar (150ms)
[info] downloading https://repo1.maven.org/maven2/org/webjars/webjars-locator/0.26/webjars-locator-0.26.jar ...
[info] 	[SUCCESSFUL ] org.webjars#webjars-locator;0.26!webjars-locator.jar (74ms)
[info] downloading https://repo1.maven.org/maven2/org/webjars/webjars-locator-core/0.26/webjars-locator-core-0.26.jar ...
[info] 	[SUCCESSFUL ] org.webjars#webjars-locator-core;0.26!webjars-locator-core.jar (84ms)
[info] downloading https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.3.3/jackson-databind-2.3.3.jar ...
[info] 	[SUCCESSFUL ] com.fasterxml.jackson.core#jackson-databind;2.3.3!jackson-databind.jar(bundle) (341ms)
[info] downloading https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.3.0/jackson-annotations-2.3.0.jar ...
[info] 	[SUCCESSFUL ] com.fasterxml.jackson.core#jackson-annotations;2.3.0!jackson-annotations.jar(bundle) (75ms)
[info] downloading https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/2.3.3/jackson-core-2.3.3.jar ...
[info] 	[SUCCESSFUL ] com.fasterxml.jackson.core#jackson-core;2.3.3!jackson-core.jar(bundle) (116ms)
[info] downloading https://repo1.maven.org/maven2/com/typesafe/jse_2.10/1.1.2/jse_2.10-1.1.2.jar ...
[info] 	[SUCCESSFUL ] com.typesafe#jse_2.10;1.1.2!jse_2.10.jar (113ms)
[info] downloading https://repo1.maven.org/maven2/com/typesafe/npm_2.10/1.1.1/npm_2.10-1.1.1.jar ...
[info] 	[SUCCESSFUL ] com.typesafe#npm_2.10;1.1.1!npm_2.10.jar (95ms)
[info] downloading https://repo1.maven.org/maven2/com/typesafe/akka/akka-contrib_2.10/2.3.11/akka-contrib_2.10-2.3.11.jar ...
[info] 	[SUCCESSFUL ] com.typesafe.akka#akka-contrib_2.10;2.3.11!akka-contrib_2.10.jar (252ms)
[info] downloading https://repo1.maven.org/maven2/io/apigee/trireme/trireme-core/0.8.5/trireme-core-0.8.5.jar ...
[info] 	[SUCCESSFUL ] io.apigee.trireme#trireme-core;0.8.5!trireme-core.jar (181ms)
[info] downloading https://repo1.maven.org/maven2/io/apigee/trireme/trireme-node10src/0.8.5/trireme-node10src-0.8.5.jar ...
[info] 	[SUCCESSFUL ] io.apigee.trireme#trireme-node10src;0.8.5!trireme-node10src.jar (223ms)
[info] downloading https://repo1.maven.org/maven2/io/spray/spray-json_2.10/1.3.2/spray-json_2.10-1.3.2.jar ...
[info] 	[SUCCESSFUL ] io.spray#spray-json_2.10;1.3.2!spray-json_2.10.jar(bundle) (137ms)
[info] downloading https://repo1.maven.org/maven2/org/slf4j/slf4j-simple/1.7.12/slf4j-simple-1.7.12.jar ...
[info] 	[SUCCESSFUL ] org.slf4j#slf4j-simple;1.7.12!slf4j-simple.jar (78ms)
[info] downloading https://repo1.maven.org/maven2/com/typesafe/akka/akka-remote_2.10/2.3.11/akka-remote_2.10-2.3.11.jar ...
[info] 	[SUCCESSFUL ] com.typesafe.akka#akka-remote_2.10;2.3.11!akka-remote_2.10.jar (391ms)
[info] downloading https://repo1.maven.org/maven2/com/typesafe/akka/akka-cluster_2.10/2.3.11/akka-cluster_2.10-2.3.11.jar ...
[info] 	[SUCCESSFUL ] com.typesafe.akka#akka-cluster_2.10;2.3.11!akka-cluster_2.10.jar (483ms)
[info] downloading https://repo1.maven.org/maven2/com/typesafe/akka/akka-persistence-experimental_2.10/2.3.11/akka-persistence-experimental_2.10-2.3.11.jar ...
[info] 	[SUCCESSFUL ] com.typesafe.akka#akka-persistence-experimental_2.10;2.3.11!akka-persistence-experimental_2.10.jar (319ms)
[info] downloading https://repo1.maven.org/maven2/io/netty/netty/3.8.0.Final/netty-3.8.0.Final.jar ...
[info] 	[SUCCESSFUL ] io.netty#netty;3.8.0.Final!netty.jar(bundle) (307ms)
[info] downloading https://repo1.maven.org/maven2/org/uncommons/maths/uncommons-maths/1.2.2a/uncommons-maths-1.2.2a.jar ...
[info] 	[SUCCESSFUL ] org.uncommons.maths#uncommons-maths;1.2.2a!uncommons-maths.jar (76ms)
[info] downloading https://repo1.maven.org/maven2/org/iq80/leveldb/leveldb/0.5/leveldb-0.5.jar ...
[info] 	[SUCCESSFUL ] org.iq80.leveldb#leveldb;0.5!leveldb.jar (109ms)
[info] downloading https://repo1.maven.org/maven2/org/fusesource/leveldbjni/leveldbjni-all/1.7/leveldbjni-all-1.7.jar ...
[info] 	[SUCCESSFUL ] org.fusesource.leveldbjni#leveldbjni-all;1.7!leveldbjni-all.jar(bundle) (352ms)
[info] downloading https://repo1.maven.org/maven2/org/iq80/leveldb/leveldb-api/0.5/leveldb-api-0.5.jar ...
[info] 	[SUCCESSFUL ] org.iq80.leveldb#leveldb-api;0.5!leveldb-api.jar (102ms)
[info] downloading https://repo1.maven.org/maven2/com/google/guava/guava/12.0/guava-12.0.jar ...
[info] 	[SUCCESSFUL ] com.google.guava#guava;12.0!guava.jar (400ms)
[info] downloading https://repo1.maven.org/maven2/org/fusesource/leveldbjni/leveldbjni/1.7/leveldbjni-1.7.jar ...
[info] 	[SUCCESSFUL ] org.fusesource.leveldbjni#leveldbjni;1.7!leveldbjni.jar (95ms)
[info] downloading https://repo1.maven.org/maven2/org/fusesource/leveldbjni/leveldbjni-osx/1.5/leveldbjni-osx-1.5.jar ...
[info] 	[SUCCESSFUL ] org.fusesource.leveldbjni#leveldbjni-osx;1.5!leveldbjni-osx.jar (105ms)
[info] downloading https://repo1.maven.org/maven2/org/fusesource/leveldbjni/leveldbjni-linux32/1.5/leveldbjni-linux32-1.5.jar ...
[info] 	[SUCCESSFUL ] org.fusesource.leveldbjni#leveldbjni-linux32;1.5!leveldbjni-linux32.jar (117ms)
[info] downloading https://repo1.maven.org/maven2/org/fusesource/leveldbjni/leveldbjni-linux64/1.5/leveldbjni-linux64-1.5.jar ...
[info] 	[SUCCESSFUL ] org.fusesource.leveldbjni#leveldbjni-linux64;1.5!leveldbjni-linux64.jar (118ms)
[info] downloading https://repo1.maven.org/maven2/org/fusesource/leveldbjni/leveldbjni-win32/1.5/leveldbjni-win32-1.5.jar ...
[info] 	[SUCCESSFUL ] org.fusesource.leveldbjni#leveldbjni-win32;1.5!leveldbjni-win32.jar (109ms)
[info] downloading https://repo1.maven.org/maven2/org/fusesource/leveldbjni/leveldbjni-win64/1.5/leveldbjni-win64-1.5.jar ...
[info] 	[SUCCESSFUL ] org.fusesource.leveldbjni#leveldbjni-win64;1.5!leveldbjni-win64.jar (121ms)
[info] downloading https://repo1.maven.org/maven2/org/fusesource/hawtjni/hawtjni-runtime/1.8/hawtjni-runtime-1.8.jar ...
[info] 	[SUCCESSFUL ] org.fusesource.hawtjni#hawtjni-runtime;1.8!hawtjni-runtime.jar (84ms)
[info] downloading https://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7.12/slf4j-api-1.7.12.jar ...
[info] 	[SUCCESSFUL ] org.slf4j#slf4j-api;1.7.12!slf4j-api.jar (102ms)
[info] downloading https://repo1.maven.org/maven2/org/webjars/npm/2.11.2/npm-2.11.2.jar ...
[info] 	[SUCCESSFUL ] org.webjars#npm;2.11.2!npm.jar (655ms)
[info] downloading https://repo1.maven.org/maven2/org/webjars/mkdirp/0.3.5/mkdirp-0.3.5.jar ...
[info] 	[SUCCESSFUL ] org.webjars#mkdirp;0.3.5!mkdirp.jar (72ms)
[info] downloading https://repo1.maven.org/maven2/org/webjars/stylus/0.45.1/stylus-0.45.1.jar ...
[info] 	[SUCCESSFUL ] org.webjars#stylus;0.45.1!stylus.jar (173ms)
[info] downloading https://repo1.maven.org/maven2/org/webjars/stylus-nib/1.0.2-1/stylus-nib-1.0.2-1.jar ...
[info] 	[SUCCESSFUL ] org.webjars#stylus-nib;1.0.2-1!stylus-nib.jar (168ms)
[info] downloading https://repo1.maven.org/maven2/org/webjars/when-node/3.2.2/when-node-3.2.2.jar ...
[info] 	[SUCCESSFUL ] org.webjars#when-node;3.2.2!when-node.jar (74ms)
[info] downloading https://repo1.maven.org/maven2/org/webjars/debug/0.8.1/debug-0.8.1.jar ...
[info] 	[SUCCESSFUL ] org.webjars#debug;0.8.1!debug.jar (97ms)
[info] downloading https://repo1.maven.org/maven2/org/webjars/glob/4.0.2/glob-4.0.2.jar ...
[info] 	[SUCCESSFUL ] org.webjars#glob;4.0.2!glob.jar (94ms)
[info] downloading https://repo1.maven.org/maven2/org/webjars/sax/0.6.0/sax-0.6.0.jar ...
[info] 	[SUCCESSFUL ] org.webjars#sax;0.6.0!sax.jar (96ms)
[info] downloading https://repo1.maven.org/maven2/org/webjars/inherits/2.0.1/inherits-2.0.1.jar ...
[info] 	[SUCCESSFUL ] org.webjars#inherits;2.0.1!inherits.jar (179ms)
[info] downloading https://repo1.maven.org/maven2/org/webjars/minimatch/0.3.0/minimatch-0.3.0.jar ...
[info] 	[SUCCESSFUL ] org.webjars#minimatch;0.3.0!minimatch.jar (89ms)
[info] downloading https://repo1.maven.org/maven2/org/webjars/once/1.3.0/once-1.3.0.jar ...
[info] 	[SUCCESSFUL ] org.webjars#once;1.3.0!once.jar (171ms)
[info] downloading https://repo1.maven.org/maven2/org/webjars/lru-cache/2.5.0/lru-cache-2.5.0.jar ...
[info] 	[SUCCESSFUL ] org.webjars#lru-cache;2.5.0!lru-cache.jar (93ms)
[info] downloading https://repo1.maven.org/maven2/org/webjars/sigmund/1.0.0/sigmund-1.0.0.jar ...
[info] 	[SUCCESSFUL ] org.webjars#sigmund;1.0.0!sigmund.jar (101ms)
[info] downloading https://repo1.maven.org/maven2/org/webjars/uglifyjs/2.4.13/uglifyjs-2.4.13.jar ...
[info] 	[SUCCESSFUL ] org.webjars#uglifyjs;2.4.13!uglifyjs.jar (92ms)
[info] downloading https://repo1.maven.org/maven2/org/webjars/async/0.2.10/async-0.2.10.jar ...
[info] 	[SUCCESSFUL ] org.webjars#async;0.2.10!async.jar (129ms)
[info] downloading https://repo1.maven.org/maven2/org/webjars/optimist/0.3.7/optimist-0.3.7.jar ...
[info] 	[SUCCESSFUL ] org.webjars#optimist;0.3.7!optimist.jar (76ms)
[info] downloading https://repo1.maven.org/maven2/org/webjars/source-map/0.1.31-2/source-map-0.1.31-2.jar ...
[info] 	[SUCCESSFUL ] org.webjars#source-map;0.1.31-2!source-map.jar (79ms)
[info] downloading https://repo1.maven.org/maven2/org/webjars/wordwrap/0.0.2/wordwrap-0.0.2.jar ...
[info] 	[SUCCESSFUL ] org.webjars#wordwrap;0.0.2!wordwrap.jar (95ms)
[info] downloading https://repo1.maven.org/maven2/org/webjars/amdefine/0.1.0-1/amdefine-0.1.0-1.jar ...
[info] 	[SUCCESSFUL ] org.webjars#amdefine;0.1.0-1!amdefine.jar (86ms)
[info] downloading https://repo1.maven.org/maven2/com/typesafe/akka/akka-http-core-experimental_2.10/2.0.4/akka-http-core-experimental_2.10-2.0.4.jar ...
[info] 	[SUCCESSFUL ] com.typesafe.akka#akka-http-core-experimental_2.10;2.0.4!akka-http-core-experimental_2.10.jar (727ms)
[info] downloading https://repo1.maven.org/maven2/com/typesafe/akka/akka-parsing-experimental_2.10/2.0.4/akka-parsing-experimental_2.10-2.0.4.jar ...
[info] 	[SUCCESSFUL ] com.typesafe.akka#akka-parsing-experimental_2.10;2.0.4!akka-parsing-experimental_2.10.jar (295ms)
[info] downloading https://repo1.maven.org/maven2/com/typesafe/akka/akka-stream-experimental_2.10/2.0.4/akka-stream-experimental_2.10-2.0.4.jar ...
[info] 	[SUCCESSFUL ] com.typesafe.akka#akka-stream-experimental_2.10;2.0.4!akka-stream-experimental_2.10.jar (924ms)
[info] downloading https://repo1.maven.org/maven2/com/typesafe/akka/akka-actor_2.10/2.3.15/akka-actor_2.10-2.3.15.jar ...
[info] 	[SUCCESSFUL ] com.typesafe.akka#akka-actor_2.10;2.3.15!akka-actor_2.10.jar (520ms)
[info] downloading https://repo1.maven.org/maven2/com/typesafe/ssl-config-akka_2.10/0.1.0/ssl-config-akka_2.10-0.1.0.jar ...
[info] 	[SUCCESSFUL ] com.typesafe#ssl-config-akka_2.10;0.1.0!ssl-config-akka_2.10.jar (134ms)
[info] downloading https://repo1.maven.org/maven2/com/typesafe/ssl-config-core_2.10/0.1.0/ssl-config-core_2.10-0.1.0.jar ...
[info] 	[SUCCESSFUL ] com.typesafe#ssl-config-core_2.10;0.1.0!ssl-config-core_2.10.jar (134ms)
[warn] 	::::::::::::::::::::::::::::::::::::::::::::::
[warn] 	::          UNRESOLVED DEPENDENCIES         ::
[warn] 	::::::::::::::::::::::::::::::::::::::::::::::
[warn] 	:: com.typesafe#jstranspiler;1.0.0: not found
[warn] 	::::::::::::::::::::::::::::::::::::::::::::::
[warn]
[warn] 	Note: Unresolved dependencies path:
[warn] 		com.typesafe:jstranspiler:1.0.0
[warn] 		  +- com.typesafe.sbt:sbt-stylus:1.0.1 (scalaVersion=2.10, sbtVersion=0.13) (/Users/marcospereira/Projects/lagom/lagom.github.io/project/plugins.sbt#L4-5)
[warn] 		  +- default:lagom-github-io-build:0.1-SNAPSHOT (scalaVersion=2.10, sbtVersion=0.13)
sbt.ResolveException: unresolved dependency: com.typesafe#jstranspiler;1.0.0: not found
	at sbt.IvyActions$.sbt$IvyActions$$resolve(IvyActions.scala:313)
	at sbt.IvyActions$$anonfun$updateEither$1.apply(IvyActions.scala:191)
	at sbt.IvyActions$$anonfun$updateEither$1.apply(IvyActions.scala:168)
	at sbt.IvySbt$Module$$anonfun$withModule$1.apply(Ivy.scala:156)
	at sbt.IvySbt$Module$$anonfun$withModule$1.apply(Ivy.scala:156)
	at sbt.IvySbt$$anonfun$withIvy$1.apply(Ivy.scala:133)
	at sbt.IvySbt.sbt$IvySbt$$action$1(Ivy.scala:57)
	at sbt.IvySbt$$anon$4.call(Ivy.scala:65)
	at xsbt.boot.Locks$GlobalLock.withChannel$1(Locks.scala:95)
	at xsbt.boot.Locks$GlobalLock.xsbt$boot$Locks$GlobalLock$$withChannelRetries$1(Locks.scala:80)
	at xsbt.boot.Locks$GlobalLock$$anonfun$withFileLock$1.apply(Locks.scala:99)
	at xsbt.boot.Using$.withResource(Using.scala:10)
	at xsbt.boot.Using$.apply(Using.scala:9)
	at xsbt.boot.Locks$GlobalLock.ignoringDeadlockAvoided(Locks.scala:60)
	at xsbt.boot.Locks$GlobalLock.withLock(Locks.scala:50)
	at xsbt.boot.Locks$.apply0(Locks.scala:31)
	at xsbt.boot.Locks$.apply(Locks.scala:28)
	at sbt.IvySbt.withDefaultLogger(Ivy.scala:65)
	at sbt.IvySbt.withIvy(Ivy.scala:128)
	at sbt.IvySbt.withIvy(Ivy.scala:125)
	at sbt.IvySbt$Module.withModule(Ivy.scala:156)
	at sbt.IvyActions$.updateEither(IvyActions.scala:168)
	at sbt.Classpaths$$anonfun$sbt$Classpaths$$work$1$1.apply(Defaults.scala:1439)
	at sbt.Classpaths$$anonfun$sbt$Classpaths$$work$1$1.apply(Defaults.scala:1435)
	at sbt.Classpaths$$anonfun$doWork$1$1$$anonfun$90.apply(Defaults.scala:1470)
	at sbt.Classpaths$$anonfun$doWork$1$1$$anonfun$90.apply(Defaults.scala:1468)
	at sbt.Tracked$$anonfun$lastOutput$1.apply(Tracked.scala:37)
	at sbt.Classpaths$$anonfun$doWork$1$1.apply(Defaults.scala:1473)
	at sbt.Classpaths$$anonfun$doWork$1$1.apply(Defaults.scala:1467)
	at sbt.Tracked$$anonfun$inputChanged$1.apply(Tracked.scala:60)
	at sbt.Classpaths$.cachedUpdate(Defaults.scala:1490)
	at sbt.Classpaths$$anonfun$updateTask$1.apply(Defaults.scala:1417)
	at sbt.Classpaths$$anonfun$updateTask$1.apply(Defaults.scala:1369)
	at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
	at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
	at sbt.std.Transform$$anon$4.work(System.scala:63)
	at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
	at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
	at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
	at sbt.Execute.work(Execute.scala:237)
	at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
	at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
	at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
	at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
[error] (*:update) sbt.ResolveException: unresolved dependency: com.typesafe#jstranspiler;1.0.0: not found

Rework downloads page

The downloads page needs to be reworked. It needs to provide a clean user experience for the following:

  • Helping the user understand what needs to be downloaded, what purpose those things serve
  • Helping the user understand what choices they have to make, eg choose between Maven/sbt, Scala/Java
  • Links to pre-bundled templates that can be downloaded and run with nothing but a JDK
  • A smooth transition from the downloads page into the Lagom installation and getting started documentation

Add community videos

There are a few videos of community users and hobbyists introducing Lagom in general or concepts Lagom uses in particular.

We could have a section on the community content page including those.

Some links I found on a quick youtube search:

There are a few more presentation by LB employees too:

Add an FAQ page to the website

Although it is good to incorporate answers to frequently asked questions in the documentation, there is a benefit to having an FAQ that captures the language used by our target audience.

Invalid padding of list item in certain situations.

As mentioned in https://github.com/lagom/lagom/pull/516/files#r102375824 there's certain situations in which list items will use the wrong padding.

I tried to nail down the issue but the rules to generate the HTML seem a bit more complex than I anticipated. I used the markdown:

After working through "Getting started with Lagom", follow the path that make the most sense to you:

* single item list (uses smaller font, padding underneath comes from ul-tag):

A separator paragraph, lorem ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

* single item list with nested list (uses smaller font and no padding:
    * asdf
    * asdf
    * asdf

A separator paragraph, lorem ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. 

* first item of a list with nested list (uses bigger font and padding, ¿both from p-tag?):
    * [[Import an existing Maven project into Eclipse|EclipseMavenInt]]
    * [[Create a new Eclipse project using the Lagom Maven archetype|EclipseMavenNew]]
    * [[Import an existing sbt build into Eclipse|EclipseSbt]]

* second item of a list with nested list (uses bigger font and padding, ¿both from p-tag?):
    * [[Import an existing Maven project into Intellij|intellijMaven]]
    * [[Import an existing sbt build into Intellij|IntellijSbtJava]]

* last item of a list (uses bigger font, why?)

Which creates the page:

screen shot 2017-02-22 at 14 24 19

Addd SQLServer and couhcbase on FAQ page

FAQ doesn't list all supported DBs.

No, Lagom supports using either Cassandra or relational databases, including MySQL, PostgreSQL, Oracle and H2. The Lagom development environment provides and uses Cassandra by default because it offers great scalability and replication features. See more in the Java documentation or the Scala documentation.

Restore cross-searching

Starting sometime around mid-september 2020, the search box in lagomframework.com stopped returning results. Inspecting with the JS console on the browser pointed to a 403 status response from the Algolia servers.

The temporary fix in #232 disables cross-search (searching across multiple algolia indices) under the assumption that Algolia implemented more restrictive permissions. The problem is that Akka, Play and Lagom websites are indexed separately by Algolia and each of the sites uses different credentials to query the indices. So, the cross-search implementation in lagomframework.com would send multiple search queries to gather results from all three indices at once. Each query was supposedly built and run using the correct credentials for each index. Apparently only the lagom credentials were being used.

I suspect that in order to restore cross-searching the implementation needs to clearly separate any query to Algolia to use a single index on each request. This will require some rework on our end in order to gather and reorder results depending on what index the results were found on.

Refs https://discuss.lightbend.com/t/documentation-search-does-not-work/7249

Getting started steps for Java/Maven need update

Now that we have an option to download a project built using a Maven archetype from Tech Hub, the Java/Maven instructions need to be updated to parallel the Java/sbt and Scala/sbt instructions. Also, the introductory page needs minor edits.

Upgrade project to sbt 1.0

Bumping the sbt version will allow using newer AkkaHTTp instead of

libraryDependencies += "com.typesafe.akka" % "akka-http-experimental_2.10" % "2.0.4"

Enhancement request: default search version

Currently when you search the doc, the 1.0 version of the docs is searched by default. You have to explicitly select a different version from the dropdown menu. The default version should probably be the latest stable release.

Also, when you move to a new page, the version goes back to 1.0. It would be nice to persist the selection until the visitor changes it. I almost think I'd like more of the functionality of radio buttons than of a dropdown, but that might be messy after many releases.

Clicking a heading anchor scrolls the heading out of view

When you click the § section marker next to a heading, the heading is scrolled behind the fixed header at the top of the page.

This is handled correctly on the initial page load with an anchor, just not when interactively clicking one.

I'm pretty sure this worked correctly in the past and must have regressed recently.

Lagom Documentation Code Samples not always scrollable horizontally on a phone

Code listings on the documentation page are able to be scrolled horizontally only when the code listing is on the bottom section of the screen. Once they are on the middle or top part of the screen, code listings fail to scroll horizontally.
I tried to do a remote debugging on the device, but when inspecting, the problem is not reproducible.

Browser: Chrome 49.0.2623.91
OS: Android 4.4.2

Can't run "sbt webStage"

Trying to run sbt webStage locally fails with :

[error] internal/fs/utils.js:701
[error]     throw new ERR_INVALID_ARG_TYPE(
[error]     ^
[error]
[error] TypeError [ERR_INVALID_ARG_TYPE]: The "data" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received an instance of Object
[error]     at Object.writeFileSync (fs.js:1409:5)

(full stack trace below)

Environment:

$ node --version
v14.11.0

$ java -version
openjdk version "1.8.0_265"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_265-b01)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.265-b01, mixed mode)

$ alias sbt
sbt=sbtx

I also checked in vegemite (the build machine publishing the site nightly), where no error is reported yet:

$ node --version
v11.1.0

$ java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
Full output
sbt webStage
[info] Loading settings for project global-plugins from dependencyGraph.sbt ...
[info] Loading global plugins from /Users/ignasi/.sbt/1.0/plugins
[info] Loading settings for project template-build from plugins.sbt ...
[info] Loading project definition from /Users/ignasi/git/github/lagom/lagom.github.io/template/project
[info] Loading settings for project lagom-docs from build.sbt ...
[info] Set current project to lagom-docs (in build file:/Users/ignasi/git/github/lagom/lagom.github.io/template/)
[info] Updating ...
[info] Done updating.
[warn] There may be incompatibilities among your library dependencies; run 'evicted' to see detailed eviction warnings.
[info] Compiling 36 Scala sources to /Users/ignasi/git/github/lagom/lagom.github.io/template/target/scala-2.12/classes ...
[info] Stylus compiling on 1 source(s)
[error] (node:60762) Warning: Accessing non-existent property 'lineno' of module exports inside circular dependency
[error] (Use `node --trace-warnings ...` to show where the warning was created)
[error] (node:60762) Warning: Accessing non-existent property 'column' of module exports inside circular dependency
[error] (node:60762) Warning: Accessing non-existent property 'filename' of module exports inside circular dependency
[error] (node:60762) Warning: Accessing non-existent property 'lineno' of module exports inside circular dependency
[error] (node:60762) Warning: Accessing non-existent property 'column' of module exports inside circular dependency
[error] (node:60762) Warning: Accessing non-existent property 'filename' of module exports inside circular dependency
[info] Optimizing 1 JavaScript(s) with Uglify
[error] WARN: Collapsing variable iOS [main.js:9,11]
[error] internal/fs/utils.js:701
[error]     throw new ERR_INVALID_ARG_TYPE(
[error]     ^
[error]
[error] TypeError [ERR_INVALID_ARG_TYPE]: The "data" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received an instance of Object
[error]     at Object.writeFileSync (fs.js:1409:5)
[error]     at done (/Users/ignasi/git/github/lagom/lagom.github.io/template/project/target/node-modules/webjars/uglify-js/bin/uglifyjs:516:20)
[error]     at cb (/Users/ignasi/git/github/lagom/lagom.github.io/template/project/target/node-modules/webjars/uglify-js/bin/uglifyjs:324:39)
[error]     at /Users/ignasi/git/github/lagom/lagom.github.io/template/project/target/node-modules/webjars/uglify-js/bin/uglifyjs:391:9
[error]     at FSReqCallback.readFileAfterClose [as oncomplete] (internal/fs/read_file_context.js:63:3) {
[error]   code: 'ERR_INVALID_ARG_TYPE'
[error] }
[info] Done compiling.
[info] Packaging /Users/ignasi/git/github/lagom/lagom.github.io/template/target/scala-2.12/lagom-docs_2.12-0.1.0-SNAPSHOT.jar ...
[info] Done packaging.
[info] Running com.lightbend.lagom.docs.DocumentationGenerator /Users/ignasi/git/github/lagom/lagom.github.io/template/target/web/generated-html /Users/ignasi/git/github/lagom/lagom.github.io/template/src/docs /Users/ignasi/git/github/lagom/lagom.github.io/template/src/main/markdown /Users/ignasi/git/github/lagom/lagom.github.io/template/src/blog 915635b767f34655325b4ad249b57fa06ba4b6fe
[error] com.typesafe.sbt.jse.SbtJsTask$JsTaskFailure: WARN: Collapsing variable iOS [main.js:9,11]
[error] internal/fs/utils.js:701
[error]     throw new ERR_INVALID_ARG_TYPE(
[error]     ^
[error]
[error] TypeError [ERR_INVALID_ARG_TYPE]: The "data" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received an instance of Object
[error]     at Object.writeFileSync (fs.js:1409:5)
[error]     at done (/Users/ignasi/git/github/lagom/lagom.github.io/template/project/target/node-modules/webjars/uglify-js/bin/uglifyjs:516:20)
[error]     at cb (/Users/ignasi/git/github/lagom/lagom.github.io/template/project/target/node-modules/webjars/uglify-js/bin/uglifyjs:324:39)
[error]     at /Users/ignasi/git/github/lagom/lagom.github.io/template/project/target/node-modules/webjars/uglify-js/bin/uglifyjs:391:9
[error]     at FSReqCallback.readFileAfterClose [as oncomplete] (internal/fs/read_file_context.js:63:3) {
[error]   code: 'ERR_INVALID_ARG_TYPE'
[error] }
[error]
[error] 	at com.typesafe.sbt.jse.SbtJsTask$.$anonfun$executeJsOnEngine$1(SbtJsTask.scala:218)
[error] 	at scala.util.Success.$anonfun$map$1(Try.scala:251)
[error] 	at scala.util.Success.map(Try.scala:209)
[error] 	at scala.concurrent.Future.$anonfun$map$1(Future.scala:288)
[error] 	at scala.concurrent.impl.Promise.liftedTree1$1(Promise.scala:29)
[error] 	at scala.concurrent.impl.Promise.$anonfun$transform$1(Promise.scala:29)
[error] 	at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:60)
[error] 	at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
[error] 	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
[error] 	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
[error] 	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
[error] 	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:175)
[error] (webPipeline) com.typesafe.sbt.jse.SbtJsTask$JsTaskFailure: WARN: Collapsing variable iOS [main.js:9,11]
[error] internal/fs/utils.js:701
[error]     throw new ERR_INVALID_ARG_TYPE(
[error]     ^
[error]
[error] TypeError [ERR_INVALID_ARG_TYPE]: The "data" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received an instance of Object
[error]     at Object.writeFileSync (fs.js:1409:5)
[error]     at done (/Users/ignasi/git/github/lagom/lagom.github.io/template/project/target/node-modules/webjars/uglify-js/bin/uglifyjs:516:20)
[error]     at cb (/Users/ignasi/git/github/lagom/lagom.github.io/template/project/target/node-modules/webjars/uglify-js/bin/uglifyjs:324:39)
[error]     at /Users/ignasi/git/github/lagom/lagom.github.io/template/project/target/node-modules/webjars/uglify-js/bin/uglifyjs:391:9
[error]     at FSReqCallback.readFileAfterClose [as oncomplete] (internal/fs/read_file_context.js:63:3) {
[error]   code: 'ERR_INVALID_ARG_TYPE'
[error] }
[error] Total time: 21 s, completed Sep 21, 2020 4:01:27 PM

Remove invalid `Icon\r` files

As attempted by @TimMoore in 52be306 we have to remove 3 weird files (0-byte, CR reserved char on the filename).

Those are rebuilt nightly by vegemite so we'd have to get this solved in the core repo or the build machine (?).

Please document withAutoACL

In reference to my post on gitter. Please document with AutoACL

@orefalo I can’t find it in the doc, so I guess we forgot about it. Please, file a ticket. In a nutshell, by default services’ endpoints are NOT exposed to the service gateway (and are not accessible to the outside world when running in production). If you want all endpoints of a service to be expose, you can do so with Descriptor#withAutoACL(true). If you want a single endpoint to be exposed, you can call withAutoACL(true) on the endpoint definition.

Sincerely,

Running sbt run fails without running web-stage first

Error

java.io.IOException: Cannot run program "python" (in directory "/Users/tmoore/Projects/lagom.github.io/target/web/stage"): error=2, No such file or directory

Reproduction

rm -r target && sbt run

Workaround

sbt web-stage run

Minor changes to Home page

We want visitors to be more aware of Lightbend and have links to learn more about Akka and Play and our commercial offerings.

pathCall() and restCall() cannot accept multi-value parameters

I would like to be able to bind multi-value parameters using pathCall() and restCall() as illustrated by the snippet below:

trait UserService extends Service {
    def lookupByUsername(tenantId: String, username: Seq[String])
    override final def descriptor = {
        import Service._
        named("users").withCalls {
            restCall(Method.GET, "/tenants/:tenantId/users?username", lookupByUsername _)
        } 
    }
}
curl http://localhost:9000/tenants/abcdef/users?username=ghijkl&username=mnopqr&username=stuvwx

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.