The new repository can be found at: https://github.com/jaytoy/omni-api
This is a demo API that I built for my bachelor thesis “Omnichannel Architecture for Retail SMEs”. The thesis is trying to solve the challenges that SMEs face when selling in omnichannel. The idea is to create an API to connect to a headless e-commerce storefront and a POS system.
The e-commerce storefront and POS system are the frontend layer of the application. The former provides the user interface for customers to view the products and place an order, while the latter provides the user interface for the store manager or sales associates to process purchases and returns. The backend layer is an API to handle all the requests from the e-commerce website and POS system.
Omnichannel Retailing provides the greatest consumer experience by allowing customers, information, and inventory to move seamlessly between numerous channels throughout the purchasing process. The key point for Omnichannel Retailing is an integrated/seamless experience across all channels.
The API was designed and implemented based on clean architecture.
Details are the elements that are not related to the business domain or business logic, so they belong to the outermost layer in the clean architecture. The inner layers know nothing about the details that the outer layer is implementing.
The business logic is separated from external frameworks or libraries, so there is no hard coupling between services, making the system testable.
In clean architecture, separation of concern is achieved as the code is separated into four layers depending on responsibilities. The dependency rule in clean architecture keeps the dependency direction from outside to inside, so these elements can be changed easily without affecting the system.