npono21 / mini-shopify

0 stars 0 forks source link

Mini-Shopify

SYSC 4806 A Project

Table of Contents

  1. Contributors
  2. Description
  3. Milestones
  4. Use Cases
  5. CI/CD/CT
  6. Issues
  7. Kanban
  8. Procedures
  9. Diagrams

Contributors

Name Student Number
Arthur Atangana 101005197
Nicholai Ponomarev 101182048
Rebecca Elliott 101199034
Michael De Santis 101213450

Description

Visit the Mini-Shopify web application!

The Mini-Shopify project is a web application, developed using the Java Spring Boot framework, that provides a simple and easy forum for merchants and customers to interact in an online marketplace. Merchants are able to create one or more shops where they may list various products for purchase. Customers may browse merchant shops to view and purchase items, or they may rely on the site's various search mechanisms to help them find the products they want. Customers may add items to their cart from a vendor's shop, and initiate purchase of the items in their shop through a transaction.

Milestones

Project milestones.

Milestone 1: Early Prototype (2024/11/11)

Goals

Completed Use Cases

  1. Register a Merchant Account
  2. Create a Shop

Use Cases

Use Cases for this project used to drive the design and implementation.

Use Case 1: Register a Merchant Account

Use Case 2: Create a Shop

CI/CD/CT

Continuous Integration (CI)

The Mini-Shopify project is being developed with Continuous Integration (CI) (aka. Trunk-Based Development) practices, as described by Fowler. All source code is version controlled by git, with additional CI functionality provided by GitHub. Once developers have taken their sprint issues at weekly scrums, development branches for each issue are forked from the repository's mainline. When developer's are ready to commit their changes, they issue a Pull Request (PR) for the development branch directly against the project mainline, with each PR subject to code reviews by at least 2 other developers. When a PR is successfully merged, corresponding GitHub issues are closed.

Continuous Deployment (CD)

This project also takes advantages of the Continuous Deployment (CD) capabilities provided by GitHub Actions. Upon every successful merge to the repository's mainline, the updated application is automatically deployed to Azure. The GitHub Actions Workflow for deployment is defined in the file main_sysc4806-shopify.yml, and may be actively monitored or later reviewed here.

Continuous Testing (CT)

Unit and integration tests are automatically executed upon every mainline and feature branch push to the remote repository as a GitHub Action. The Workflow for these tests are defined in the file run-tests.yml, and may be actively monitored or later reviewed here. N.B. If tests do not pass on the project's mainline, this is because they are caused by known bugs tracked in our project's GitHub Issues and Kanban board that are actively being worked on.

Issues

For a list of all issues, please refer to the GitHub Issues page on this project's repository.

Kanban

To view the Kanban board for this project, please refer to the GitHub Kanban page on this project's repository.

Procedures

Relevant retrieval, build, and usage procedures for this project.

Source Code Retrieval

Retrieve this repository's source code through one of the following methods:

Building and Executing the Project Locally

To build and execute the project locally in IntelliJ, select the AccessingDataJpaApplication.java class in the Project browser, and select Run (SHIFT + F10).

Running Unit and Integration Tests

Unit and integration tests are automatically executed upon every mainline and feature branch push to the remote repository as a GitHub Action; however, tests may also be run locally. If you wish to execute the entire suite of unit and integration tests locally under Maven, you may issue the following command from the project's root:

mvn -B test --file pom.xml

Diagrams

Design diagrams generated for this project.

UML Class Diagram

The current UML class diagram for the project is visualized below: Milestone 1: UML Class Diagram

Database Schema

The current relational database schema design for the project is visualized below: Milestone 1: Database Schema