The web application provides metrics for cycling and running (or for other kind of sports) activities. The statistics page compares yearly aggregated data, such as distance, hours ridden, elevation gained and shows year to date series as well. The yearly data is presented as a heatmap, so it is easy to compare the efforts for a given period of the year. Athletes' data feed is collected via the Strava API. It helps you find the best component prices via the product aggregator page.
Building the cycling platform provides a good opportunity to experiment and learn new technologies or languages in a
"live" environment.
The infrastructure is built following the "Infra as code" principle, the FE is written in React, web gateway in Scala
with the Play Framework exposing the contract with Swagger.
Services are communicating via http with each other, exploring various languages and technologies:
- web-app with
ScalaandPlay Framework,ZIO - web-frontend with
React - crawler-service with
Scala,http4s,cats-effect,circe(Typelevel stack) - exchange-rate-service with
Rust(has been extracted in a separate repository) - data-provider with various database support
postgresql,orientdb,rethinkdb, etc - data-search - with
zinc-searcha lightweight replacement for elasticsearch - user-service - with
JavaandSpring Boot - weather-service - with
Kotlin(has been extracted in a separate repository) - health-check-service - with
Go
Visit the page at http://velocorner.com, I'd love to hear your feedback!
Follows the infrastructure as code approach.
Start local infrastructure and deploy the stack
Some useful plugins
sbt unusedCode
sbt "scalafix WarnUnusedCode"