This repository is a personal fork and continuation of a group project developed for ECSE 321: Introduction to Software Engineering (Fall 2024) at McGill University.
Original repository: https://github.com/McGill-ECSE321-Fall2024/project-group-5
The original system was developed collaboratively by a team of six students. This fork preserves the original work and commit history. Further development, experiments, and improvements in this repository are my own.
Backend:
- Java
- Spring Boot
- Gradle
- PostgreSQL
Frontend:
- React.js
- Vite
- Node.js
After the completion of the course project, I continued working on this repository to explore additional improvements and features.
Examples of ongoing work include:
- Improving backend architecture
- Adding additional features w/ testing
- Added gitignore and CI/CD
- Full frontend rework
- Functional frontend/backend interactions
In a team of 6, we are tasked with developing a web application that will allow the expansion of the independent game shop with an online store. We will do this by gathering requirements, designing a multi-tier software solution to satisfy those requirements, implementing the system, validating that the system is satisfying the requirements, and developing a release pipeline to automate the software delivery process. To simplify, we will follow the four key activities in the software engineering process: specification, development, validation and evolution.
The main features of the web application are listed as follows:
- Customer Accounts: Without having to create an account, customers will be able to browse the catalog of games. While customers with accounts, will also be able to purchase games, track their order history, save items to a wish list for future purchases, and post reviews for the games they have purchased.
- Employee Accounts: Employees will each own an account for management purposes, allowing them to update the inventory, and request the addition and removal games as well as specify their category.
- Manager Account: In addition to having all the functionalities of an employee account, manager accounts will also be able to approve requests made by employees to publish games to the catalog. They will also be able to reply to reviews.
- Reviews: The system will also allow the general public to pay for a parking spot, without the need of an account.
| Team Member | GitHub | Role | Major | Year |
|---|---|---|---|---|
| Ana-Maria Floarea | anafloarea | Software Developer | Mechanical Engineering | U4 |
| Alisha Malik | alishamalik00 | Software Developer | Software Engineering | U2 |
| Viviane-Laura Tain | vivianeltain | Software Developer | Mechanical Engineering | U4 |
| Romain Teyssier | rom618 | Software Developer | Computer Engineering | U3 |
| Caroline Thom | carolinethom2 | Software Developer | Mechanical Engineering | U4 |
| Reswanth Reji Pillai | jumpman786 | Software Developer | Software Engineering | U2 |
- Docker & Docker Compose (Recommended for Quick Build)
- PostgreSQL 17 (If running manually)
- username: postgres | password: postgres | port: 5432
- Java 23 (OpenJDK 23)
- Gradle 9.3.1
- Node.js v22.11.0+ & Npm 10.9.0+
- Vite 8.0.4 & React 19.2.4
- TypeScript 6.0.2
The easiest way to get the entire stack (Database, Backend, and Frontend) running simultaneously.
- Ensure you have Docker and Docker Compose installed.
- From the project root, run:
docker-compose up --build docker-compose up
- Open command line
- Access postgres:
psql -U postgresand enter passwordpostgres - Create database:
create database gamestoredb; - Quit:
\q
- Inside the backend directory:
cd /path/to/project-group-5/GameStore-Backend - Build grade:
./gradlew build - Run application:
- via Gradle:
./gradlew bootRun - via an IDE: run the application from
/GameStore-Backend/src/main/java/ca/mcgill/ecse321/gamestore/GameStoreApplication.java
- Application should be started on
localhost:8080
- Backend should be started first
- Inside the frontend directory:
cd /path/to/project-group-5/GameStore-Frontend - Install node modules with
npm install - Start the Vite server with
npm run dev - The frontend server should be started on
localhost:5173
* Note that this runs a development server, a production version should be built using npm run build and then ran using a webserver module such as serve