All Projects → lukewyman → ecommerce

lukewyman / ecommerce

Licence: other
A project for exploring Akka with Scala

Programming Languages

scala
5932 projects
HTML
75241 projects

Projects that are alternatives of or similar to ecommerce

Es Cqrs Shopping Cart
A resilient and scalable shopping cart system designed using Event Sourcing (ES) and Command Query Responsibility Segregation (CQRS)
Stars: ✭ 19 (-20.83%)
Mutual labels:  cats, akka, akka-http, slick
Scala Ddd Example
🎯 λ Hexagonal Architecture + DDD + CQRS applied in Scala using Akka HTTP
Stars: ✭ 86 (+258.33%)
Mutual labels:  akka, akka-http, sbt
akka-cookbook
提供清晰、实用的Akka应用指导
Stars: ✭ 30 (+25%)
Mutual labels:  akka, akka-http, akka-persistence
typelevel-stack.g8
📚 Unofficial Giter8 template for the Typelevel Stack (Http4s / Doobie / Circe / Cats Effect / Fs2) based on Cats v1.x.x
Stars: ✭ 63 (+162.5%)
Mutual labels:  cats, sbt, circe
akka-http-circe-json-template
Akka HTTP REST API Project Template using Akka HTTP 10.0.4 with Circe 0.7.0 targeting Scala 2.12.x
Stars: ✭ 21 (-12.5%)
Mutual labels:  akka, akka-http, circe
Kebs
Scala library to eliminate boilerplate
Stars: ✭ 113 (+370.83%)
Mutual labels:  akka, akka-http, slick
telepooz
Functional Telegram Bot API wrapper for Scala on top of akka, circe, cats, and shapeless
Stars: ✭ 26 (+8.33%)
Mutual labels:  cats, akka, circe
Quark
Quark is a streaming-first Api Gateway using Akka
Stars: ✭ 13 (-45.83%)
Mutual labels:  akka, akka-http
facebook4s
An asynchronous non-blocking Scala client for Facebook Graph API (Facebook api REST)
Stars: ✭ 18 (-25%)
Mutual labels:  akka-http, circe
generator-jvm
Generate JVM (java, kotlin, scala) project with gradle / maven / sbt build systems and docker / docker-compose for rapid development
Stars: ✭ 40 (+66.67%)
Mutual labels:  akka, akka-persistence
slicebox
Microservice for safe sharing and easy access to medical images
Stars: ✭ 18 (-25%)
Mutual labels:  akka, akka-http
freecli
Command line parsing library using Free Applicative
Stars: ✭ 29 (+20.83%)
Mutual labels:  cats, circe
khermes
A distributed fake data generator based in Akka.
Stars: ✭ 94 (+291.67%)
Mutual labels:  akka, akka-http
akka-persistance-ignite
Akka persistance plugin implementation with Apache Ignite
Stars: ✭ 20 (-16.67%)
Mutual labels:  akka, akka-persistence
akka-stream-kafka-template.g8
Template for Akka Streams & Kafka. Default impl: mirror a topic onto another one
Stars: ✭ 14 (-41.67%)
Mutual labels:  akka, sbt
akka-persistence-foundationdb
A replicated Akka Persistence journal backed by FoundationDB
Stars: ✭ 43 (+79.17%)
Mutual labels:  akka, akka-persistence
influencer-stats
Playground for measuring performance of functional programming tools in Scala. Gathers statistics about videos.
Stars: ✭ 24 (+0%)
Mutual labels:  cats, akka-http
scala-functional-programming-tutorial
Functional Programming in Scala Tutorial
Stars: ✭ 23 (-4.17%)
Mutual labels:  cats, circe
Akka
Examples and explanations of how Akka toolkit works
Stars: ✭ 20 (-16.67%)
Mutual labels:  akka, akka-persistence
jwt-akka-http
An example how to implement a very simple authentication and authorization with Akka HTTP. Related to https://blog.codecentric.de/en/2017/09/jwt-authentication-akka-http
Stars: ✭ 23 (-4.17%)
Mutual labels:  akka, akka-http

e-commerce

e-commerce is a resume portfolio project to show-case my skills in Scala and Akka, using the old-as-time domain of the online shopping site. This project is currently in progress, so I will update this readme on a regular basis to update prospective viewers on my progress. Feel free to hit me up on LinkedIn if you like what you see!

Motivation and Strategy

I'm open to the criticism that this project is a little too ambitious for a single developer. The idea is to create a big playground for myself to romp around in as I grow my skills in Scala, Akka and related technologies. Up till now, I've been building out different areas of the solution as I learn different aspects of Akka. I'm getting to the point where I'm about to start standing up various microservices and getting it to run as an integrated solution. Once I have that wrapped up, I'll start working on the DevOps side of things with Docker, AWS and the like. I'm a little behind on unit tests, but working on getting to complete coverage.

Skills Demonstrated

  • Scala
  • cats
  • Akka
  • Akka HTTP
  • REST
  • Kafka

Architecture

The high level view of e-commerce is based on Domain-Driven Design, implemented through the Microservices approach. Each module is designed as a microservice that does one thing and does it well. I don't plan on adding a UI to the project, as it is intended to demo backend dev skills.

Orchestrator (Integration)

The Orchestrator module is the command-and-control of the project, and it's API is what a potential front-end would communicate with. The REST API uses Akka HTTP. The Orchestrator actors demonstrate concurrency with Scala Futures. Cats typeclasses make the Scala code that manages Futures and Either microservice responses nice and clean.

Microservices (Modules)

Each module in ecommerce is represented by a microservice, implemented as an Akka application. Each application has a REST API, implemented with Akka HTTP.

  • product-catalog - uses single-use Akka Actors and Slick to retreive product information from a MySql database.
  • shoppingcart - Clustered persistent actors that represent shopping carts
  • inventory - Clustered persistent actors that represent the in-stock and backorder quantities for a given product. Holds for customers that have placed the item in their carts are also managed here.
  • receiving - Clustered persistent actors that represent in-bound shipments to replenish product supply. This microservice will likely remain dead simple. It's mostly here to demonstrate the orchestrator coordinating calls to Inventory.
  • order-tracking - (skeleton and some REST API) - will manage the status of an order as it changes state.
  • shipping - (not done) - vague idea of using third party APIs to submit outbound shipments to UPS, USPS, etc.
  • fulfillment - (not done) - will manage order item fulfilments as they happen in the warehouse.
  • payment - (not done) - no idea what this will look like. I'd like to do something with third party APIs for Visa and PayPal, etc.

Bibliography

I used various resources to both learn Akka itself, as well as for ideas with regard to patterns for Reactive architecture:

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].