Webshop project with CMS and MACH architecture. Built using React and Express. π
This was a team project and created by 5 students (including myself) and reviewed by IBM iX. It was developed using agile methodology - Scrum and documented in Jira and Confluence.
Watch the video: π
Role | Github username |
---|---|
Frontend, UI design | @CroAnna |
Frontend, UI design | @Fr1k1 |
Backend | @jbudak20-foi |
Backend | @Robert4361 |
DevOps | @Filip1402 |
The Stylo application represents an E-commerce webshop designed to integrate Content Management System (CMS) and E-commerce systems, employing the MACH architecture. The software's core functionalities encompass roles for administrators, employees, and customers, with a current focus on footwear sales.
Employees have the capability to manage products, the categories to which specific products belong, review customer order data, and modify order statuses. Through the CMS, employees can edit, add, and delete web pages. For now, administrators are responsible for adding employees to the system.
Users, or customers in this context, should be able to browse categories and products within a specific category (with features such as filtering and sorting), view individual product displays containing price, image, availability, description, and name, make purchases through a shopping cart using card transactions, and receive invoices via email. Additionally, customers must have the ability to contact employees through a contact/customer support form.
Unregistered users should be able to register in the system. After registration, users receive an email to activate their accounts.
In terms of architecture, it must consist of microservices (resulting in a relatively large number of GitHub repositories) connecting to a single API gateway. The application aims to utilize existing CMS and E-commerce solutions, incorporating specific functionalities as needed (e.g., sending emails to users). The application is intended to be "cloud-agnostic," deployable on any cloud service, facilitated by Docker. The web component of the application must also be responsive.
This architectural framework is built upon the foundation of multiple independent microservices.
The "M" in this context signifies microservices, highlighting the decentralized nature of the system.
The "A" represents the commitment to an API-first approach. This dictates that our application should be conceived with a focus on the APIs our services need to provide, as opposed to developing functionality first and subsequently creating APIs.
The "C" denotes Cloud native, emphasizing the need to leverage the full spectrum of benefits offered by cloud infrastructure. The goal is to design the application to operate seamlessly on any cloud, making it inherently Cloud Agnostic and independent of specific cloud provider technologies.
The "H" stands for "Headless". Iteans decoupling the backend (microservices) from the frontend. It allows flexibility by separating the presentation layer, enabling various frontends to access the same backend services without being tied to a specific format.
Application is composed of 2 parts:
The backend comprises four interconnected microservices, facilitated by an API gateway such as Kong. The microservices include:
Overall structure of the entire Stylo application:
Frontend component diagram:
Designed in Figma.
View full Figma file here. Icons are from Flaticon and Phosphor Icons.