Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 0 additions & 30 deletions AI_USAGE.md

This file was deleted.

20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,26 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.0.1] - 2026-08-18

### Added

- Basic Workflow (Unit Tests + SonarCloud Analysis).
- Complete Workflow (Unit, Integration and System Tests + SonarCloud Analysis).
- Minimum configuration for the backend, frontend, and database.
- Class Component.
- Load components endpoint, function, and interface (RestController, Service, Repository, and Page).
- REST API documentation.
- Full test suite (Unit, Integration and System Tests for backend and frontend).

### Changed

- Updated `CHANGELOG.md`.
- Updated `AI_USAGE.md` and moved to /docs.
- Split documentation into separate files: `README.md`, `ANALYSIS.md`, `AUTHORS.md`, `DETAILED-FEATURES.md`, `DEVELOPMENT-GUIDE.md`, `METHODOLOGY.md`, `OBJECTIVES.md` and `PROJECT-TRACKING.md`.

---

## [0.0.1] - 2026-07-09

### Added
Expand Down
318 changes: 36 additions & 282 deletions README.md

Large diffs are not rendered by default.

64 changes: 64 additions & 0 deletions docs/AI_USAGE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Use of AI in the Development of PCMod

## AI Usage #1 Logo generation for PCMod

* Date: 03/07/2026

* Phase: 1 – Definition of features and user interfaces.

* Objective: Generate logos for the application.

* Tool: Microsoft Copilot.

* Specific Version: Microsoft 365 Copilot.

* Tool Configuration:

* Model: GPT-5 Chat.
* Reasoning level: Automatic.
* Mode: Chat.

* How it was used:

**Prompt:**
```
Generate logos for an e-commerce platform dedicated to buying and selling PC components. You may take inspiration from websites such as PCComponentes or Coolmod. Provide both an icon and a logo including the application name, PCMod.
```

* Tool Extensions: Image generation.

* Context Files Related to AI Usage in the Project: N/A.

* Tools using Repository Files: N/A.

## AI Usage #2 Testing Tools Assistant

* Date: 27/07/2026 and 01/08/2026

* Phase: 2 – Repository, testing and continuous integration.

* Objective: Assist the developer with testing tools and tests implementation.

* Tool: Google Gemini.

* Specific Version: Google Gemini.

* Tool Configuration:

* Model: 3.6 Flash.
* Reasoning level: Automatic.
* Mode: Chat.

* How it was used:

**Prompt:**
```
I'm developing a Spring Boot (Java) + React (TypeScript) + MySQL project, and I'm implementing the unit, integration and system tests.
Explain to me what [testing_tool_name] is, how it works, and show me how to integrate this tool into my project and some basic examples.
```

* Tool Extensions: N/A.

* Context Files Related to AI Usage in the Project: N/A.

* Tools using Repository Files: N/A.
141 changes: 141 additions & 0 deletions docs/ANALYSIS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
# 🧩 Analysis

## 🖥️ Pages and navigation

This section describes the content of each designed page and presents the corresponding *wireframe* for each one.

* **Main page:** The initial page of the web application. It provides access to the component listing page, user registration, login, AI-powered chatbot, and the user dropdown menu.
![Wireframe Main Page](/docs/img/wireframes/wireframe-main-page.png)

* **Available components listing:** Page containing all available components in the store, allowing users to apply filters. It provides access to the component creation page (administrators only).
![Wireframe Products Page](/docs/img/wireframes/wirefreme-products-page.png)

* **Component detail page:** Page displaying the attributes of a component. It provides access to review creation, editing, and deletion (registered non-administrator users and administrators, with ownership control), as well as component editing and deletion (administrators only).
![Wireframe Detail Product Page](/docs/img/wireframes/wireframe-detail-product-page.png)

* **Component creation / editing form:** Page containing a form with the required fields to store a component in the database.
![Wireframe Add / Modify Component Form](/docs/img/wireframes/wireframe-add-modify-form.png)

* **Shopping cart page:** Page displaying the products added to the user's shopping cart and providing access to the payment process.
![Wireframe Cart Page](/docs/img/wireframes/wireframe-cart-page.png)

* **Login page:** Page containing a form to authenticate users using their email address and password. It provides access to the registration page.
![Wireframe LogIn Page](/docs/img/wireframes/wireframe-login-page.png)

* **Registration page:** Page containing a form to register new users and store their information in the database. It provides access to the login page.
![Wireframe Register Page](/docs/img/wireframes/wireframe-register-form.png)

* **Administration panel:** Page displaying statistics, the list of users, and the list of sales (administrators only). It provides access to the user profile page.
![Wireframe Admin Page](/docs/img/wireframes/wireframe-admin-page.png)

* **User profile page:** Page displaying the personal information of the registered user and a list of their completed purchases. It allows profile editing and account deletion.
![Wireframe User Profile Page](/docs/img/wireframes/wireframe-profile-page.png)

* **User menu:** Menu accessible from the website header after login. It provides access to the user profile page, the administration panel (administrators only), and the logout option.
![Wireframe Dropdown User Menu](/docs/img/wireframes/wireframe-user-dropdown.png)

* **AI chatbot prototype:** Page/component that enables users to interact through a chat interface with an artificial intelligence model.
![Wireframe AI Chatbot](/docs/img/wireframes/wireframe-chatbot-AI.png)

* **Error page:** Error page following the visual style of the rest of the application, displaying the error code and message. It provides access to the main page.
![Wireframe Error Page](/docs/img/wireframes/wireframe-error-page.png)

### Navigation Diagram:
![Wireframe Screens](/docs/img/wireframes/Wireframes%20Screens.png)

## 📦 Entities

This section describes the entities present in the PCMod application, along with their corresponding attributes. They are represented in the following class diagram:

![Class Diagram](/docs/img/class_diagram.png)

| Class | Attributes |
|:------:|------------------|
| User | ID, name, surname, username, email, encodedPassword, address, purchaseList, reviewList, image |
| Review | ID, title, content, rating, component, author, date |
| Component | ID, name, description, type, brand, price, stock, reviewList, image |
| Purchase | ID, price, date, status, PurchaseItemList, customer |
| PurchaseItem | ID, unitPrice, quantity, component |

Two enumerated types have been added in order to improve maintainability and facilitate future extensions if required:

| Enum | Values |
|:----:|---------|
| PurchaseStatus | ACTIVE, FINISHED |
| ComponentType | CPU, GPU, RAM, STORAGE, MOTHERBOARD, PSU, CASE |

## 🔒 User Permissions

### 👤 Anonymous Users:

**Available functionalities:**
* Viewing the component listing.
* **NOTE:** *Search filters are available.*
* Viewing a component detail page.
* Viewing the reviews associated with a component.
* User registration.
* **NOTE:** *Email service usage is included.*
* Using the AI-powered chatbot.

**Ownership:** An anonymous user does not own any other element within the application.

### 🧑 Registered Non-Administrator Users:

**Available functionalities:**
* Viewing the component listing.
* **NOTE:** *Search filters are available.*
* Viewing a component detail page.
* CRUD operations for reviews.
* **NOTE:** *A registered non-administrator user can only edit or delete their own reviews.*
* CRUD operations for users.
* **NOTE:** *A registered non-administrator user can only edit or delete their own user account.*
* Purchasing process: Adding/removing products from the shopping cart, viewing cart contents, and completing purchases.
* **NOTE:** *Email service usage and Stripe integration are included.*
* User login.
* Using the AI-powered chatbot.

**Ownership:** A registered non-administrator user owns their completed purchases and created reviews.

### 👨‍💼 Registered Administrator Users:

**Available functionalities:**
* CRUD operations for components.
* **NOTE:** *Search filters are available.*
* CRUD operations for reviews.
* **NOTE:** *Administrator users can edit and delete reviews created by any user.*
* CRUD operations for users.
* **NOTE:** *Administrator users can edit and delete any user's account.*
* Purchasing process: Adding/removing products from the shopping cart, viewing cart contents, and completing purchases.
* **NOTE:** *Email service usage and Stripe integration are included.*
* User login.
* Using the AI-powered chatbot.
* Accessing statistics: Viewing graphical and non-graphical statistics.

**Ownership:** A registered administrator user owns the available components.

## 🖼️ Images

The images associated with the entities are the following:

* **User:** User profile image.
* **Component:** Product image.

## 📊 Charts

The PCMod application includes two charts:

* **Bar chart:** Best-selling products.
* **Pie chart:** Best-selling product types.

## ⚙️ Additional Technologies

The following additional technologies are used:

* ✉️ **JavaMailSender:** Sending emails when registering an account and completing a purchase.
* 📄 **PDF generation:** Generation of PDF files after completing a purchase as an invoice.
* 🤖 **Generative AI API:** AI-powered chatbot available in the application, communicating with an AI API.
* 💵 **Stripe API:** Communication with a secure payment gateway to complete purchases.

## 🔎 Advanced Algorithm or Query

The advanced query algorithm consists of searching for components within the database catalog using filters such as name, price, brand, and/or type.
8 changes: 8 additions & 0 deletions docs/AUTHORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# 👨‍🎓 Author

The development of the PCMod application is carried out as a Bachelor's Thesis in Software Engineering at the ETSII of the URJC.

| Name | Role | Email | GitHub |
|------|------|-------|--------|
| Jaime Esteban García | Author | j.esteban.2023@alumnos.urjc.es | [jaimeeg5](https://github.com/jaimeeg5) |
| Iván Chicano Capelo | Supervisor | ivan.chicano@urjc.es | [ivchicano](https://github.com/ivchicano) |
74 changes: 74 additions & 0 deletions docs/DETAILED-FEATURES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# 🖥️ Basic, intermediate and advanced features

The functionalities available in the application are divided into basic, intermediate, and advanced features as follows:

## 🔧 Basic features:

* Component creation
* Component editing
* Component deletion
* Component listing
* Displaying component detail pages
* Adding components to the shopping cart
* Removing components from the shopping cart
* Viewing components in the shopping cart
* Completing purchases
* Review creation
* Review modification
* Review deletion
* Listing component reviews
* User registration
* User login
* Editing personal information
* User account deletion
* Accessing the user profile page
* Listing all user purchases
* Listing all users
* Listing all PCMod purchases

## 🛠️ Intermediate features:

* Email sending (user registration and purchase completion notifications)
* PDF generation (purchase invoice sent by email)
* Advanced search filtering (component name, type, brand, and price)
* Displaying non-graphical statistics
* Displaying graphical statistics

## ⚙️ Advanced features:

* Stripe payment gateway integration
* AI-powered chatbot integration

# 👤 Features Available by User Role

PCMod users will have access to different functionalities depending on their assigned role:

| Feature | Anonymous User | Registered Non-Administrator User | Registered Administrator User |
|---------|:------:|:------:|:------:|
| Component creation | ❌ | ❌ | ✅ |
| Component editing | ❌ | ❌ | ✅ |
| Component deletion | ❌ | ❌ | ✅ |
| Component listing | ✅ | ✅ | ✅ |
| Component filtering | ✅ | ✅ | ✅ |
| Displaying component detail pages | ✅ | ✅ | ✅ |
| Adding components to the shopping cart | ❌ | ✅ | ✅ |
| Removing components from the shopping cart | ❌ | ✅ | ✅ |
| Viewing components in the shopping cart | ❌ | ✅ | ✅ |
| Completing purchases (Stripe integration) | ❌ | ✅ | ✅ |
| Review creation | ❌ | ✅ | ✅ |
| Review modification (controlled by owner or administrator) | ❌ | ✅ | ✅ |
| Review deletion (controlled by owner or administrator) | ❌ | ✅ | ✅ |
| Listing component reviews | ✅ | ✅ | ✅ |
| User registration | ✅ | ❌ | ❌ |
| User login | ❌ | ✅ | ✅ |
| Editing personal information (controlled by owner or administrator) | ❌ | ✅ | ✅ |
| User account deletion (controlled by owner or administrator) | ❌ | ✅ | ✅ |
| Accessing the user profile page (controlled by owner or administrator) | ❌ | ✅ | ✅ |
| Listing total user purchases | ❌ | ✅ | ✅ |
| Listing users | ❌ | ❌ | ✅ |
| Listing total PCMod purchases | ❌ | ❌ | ✅ |
| Displaying non-graphical statistics | ❌ | ❌ | ✅ |
| Displaying graphical statistics | ❌ | ❌ | ✅ |
| Email service usage | ✅ | ✅ | ✅ |
| PDF generation service usage | ❌ | ✅ | ✅ |
| AI-powered chatbot usage | ✅ | ✅ | ✅ |
Loading
Loading