{"repo":"gvolpe/trading","free":true,"listed":false,"github":"https://github.com/gvolpe/trading","clone":"git clone https://github.com/gvolpe/trading.git","description":"💱 Trading application written in Scala 3 that showcases an Event-Driven Architecture (EDA) and Functional Programming (FP)","language":"Scala","stars":662,"topics":["event-driven-architecture","functional-programming","fp","eda","fs2","cats-effect","apache-pulsar","apache-kafka","elm-lang","elm-architecture"],"license":"Apache-2.0","category":"trading","readme_excerpt":"trading ======= Reference application developed in the Functional event-driven architecture: Powered by Scala 3 book. Table of contents Web App ScalaJS Overview Requirements Services Lib Domain Core Feed Forecasts Processor Snapshots Alerts WS Server Tracing Tests X Demo X QA Monitoring Topic compaction Web App The web application allows users to subscribe/unsubscribe to/from symbol alerts such as EURUSD , which are emitted in real-time via Web Sockets. It is written in Elm and can be built as follows. There's also a development shell handy for local development. If Nix is not your jam, you can install Elm by following the official instructions and then compile as usual. ScalaJS There is also a replica of the Elm application written in Scala using the Tyrian framework that can be built as follows. You can then run it via Nix as shown below (it requires flakes). NOTICE: The nix run command will create a directory for the Parcel cache, which needs write permissions. We use fullLinkJS to create a fully optimized JS file. However, we can use fastLinkJS for faster iterations. For such cases, it may be more convenient to use yarn directly. However, this is not fully reproducible and can't be guaranteed this will work in the future. Without Nix, you need to install yarn and parcel , and use yarn as shown above. Overview Here's an overview of all the components of the system. - Dotted lines: Pulsar messages such as commands and events. - Bold lines: read and writes from / to external","default_branch":null,"files":null,"tree":[],"storefront":"/r/gvolpe","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/gvolpe/trading/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}