Git Product home page Git Product logo

stylo's Introduction

Stylo

Webshop project with CMS and MACH architecture. Built using React and Express. πŸš€

logo

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: πŸ‘‡

Stylo documentation - table of contents

Development team

Role Github username
Frontend, UI design @CroAnna
Frontend, UI design @Fr1k1
Backend @jbudak20-foi
Backend @Robert4361
DevOps @Filip1402

Project description and features

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.

Technologies

Frontend 🎭

  • React - A JavaScript library for building user interfaces
  • react-loader-spinner - A lightweight spinner component for React applications
  • react-responsive-carousel - A responsive carousel component for React applications
  • react-toastify - A React notification library providing customizable toast messages
  • sweetalert2 - A customizable and responsive modal library for React applications
  • yup - A schema validation library for JavaScript objects
  • emailjs - A library for sending emails in JavaScript applications

Backend πŸ•ΈοΈ

  • NodeJS - A server-side JavaScript runtime.
  • Express - A minimal and flexible Node.js web application framework.
  • pdfkit - A JavaScript library for generating PDF documents

CMS βš™οΈ

  • Contentful - A headless Content Management System (CMS) that allows you to manage and deliver digital content across various platforms.

E-commerce πŸ›’

  • Commercetools - A modern and flexible headless commerce platform, providing APIs for building scalable and customizable ecommerce solutions. It was used as database for all products and orders.

Mail service βœ‰οΈ

  • Nodemailer - A powerful and easy-to-use Node.js module for sending emails, enabling seamless integration of email services in applications.

Payment πŸ’΅

  • Stripe -A payment processing platform, facilitating secure and efficient online transactions.

DevOps 🐟

  • Docker - Enables streamlined deployment by encapsulating microservices and the API gateway in portable containers, allowing for simultaneous and efficient start-up.

API gateway πŸ›œ

  • Kong - An open-source API gateway that manages, secures, and scales API requests, providing a centralized point for controlling and monitoring API traffic. The API gateway acts as a middleware connecting the frontend and backend. Its primary role is to route traffic to designated microservices, handling authentication and rate limitation to free up microservices for core business logic. Deployment in Docker and maintaining a dedicated repository are recommended practices.

MACH Architecture in context of our project

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.

Architecture and microservices

Application is composed of 2 parts:

  • Web app frontend: the main UI of the app
  • Backend: which contains 4 microservices

The backend comprises four interconnected microservices, facilitated by an API gateway such as Kong. The microservices include:

  • Products - integrates data from our headless Ecommerce and CMS APIs (products, product details, categories, webshop and homepage layout)
  • Receipts - includes creation of PDF receipt which are meant to be sent to customers
  • Emails - used for sending mails to customers (account verfication, receiving a PDF invoice on email)
  • Customers - customer registration and login

Overall structure of the entire Stylo application:

structure

Frontend component diagram:

compo

Stylo UI

Designed in Figma. homepage product-details product-list-default login-desktop shopping-cart

View full Figma file here. Icons are from Flaticon and Phosphor Icons.

slika

stylo's People

Contributors

croanna avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.