[6.4 Prototype] Wishlist and Product Report - FEUP-MEIC-DS-2025-26/madeinportugal.store GitHub Wiki

Overview

This prototype focuses on extending the Jumpseller store experience by implementing and testing two key customer-centric features: Wishlist and Product Report. The goal is to enhance the shopping experience and trustworthiness of the platform by allowing customers to track products they’re interested in and report items that violate marketplace standards.

Through these functionalities, users can easily monitor desired products’ status — such as availability or discounts — and help ensure that all listings remain appropriate, transparent, and secure.

Repositories:

Prototype Functionalities Overview

  1. Wishlist Management
  • Allows users to create, view, and manage a personalized list of products they are interested in.
  • Users can add and remove items, track product status (availability, discounts, out-of-stock), and access products directly from the wishlist page.
  1. Product Reporting
  • Enables users to report products that are offensive, inappropriate, or potentially fraudulent.
  • Users must specify a reason for the report. Reports are sent to moderators for review, and in cases of fraudulent sales, users may be eligible for a refund or replacement.

Technologies Used:

  • Frontend:
    • TypeScript, React (Next.js app router)
    • HTML / JSX, CSS, Tailwind CSS
  • Middleware:
    • TypeScript (Next.js API Routes / server components)
    • Node.js runtime (Next)
  • Backend:
    • PostgreSQL (SQL schema and queries)
    • SQL
    • TypeScript DB access layer (src/database/db.ts, setupDB.ts)

This prototype focuses on extending the Jumpseller store experience by implementing and testing two key customer-centric features: Wishlist and Product Report. The goal is to enhance the shopping experience and trustworthiness of the platform by allowing customers to track products they’re interested in and report items that violate marketplace standards.

Through these functionalities, users can easily monitor desired products’ status — such as availability or discounts — and help ensure that all listings remain appropriate, transparent, and secure.

Repositories:

Architecture diagrams

Component diagram (combined)

graph LR
  Browser -->|HTTP| NextPR[Product Report Next.js]
  Browser -->|HTTP| NextWL[Wishlist Next.js]
  NextPR -->|fetch| JumpsellerAPI[Jumpseller REST API]
  NextWL -->|SQL| Postgres[(PostgreSQL)]
  NextWL -->|optional fetch| JumpsellerAPI

Sequence: Product Report — load products

sequenceDiagram
  participant B as Browser
  participant F as Product Frontend
  participant S as Product API Route
  participant J as Jumpseller

  B->>F: Open product list
  F->>S: GET /api/products
  S->>J: fetch products (Basic Auth)
  J-->>S: products JSON
  S-->>F: products JSON
  F-->>B: render products

Sequence: Wishlist — add item

sequenceDiagram
  participant B as Browser
  participant F as Wishlist Frontend
  participant A as Wishlist API (add)
  participant DB as PostgreSQL

  B->>F: Click add to wishlist
  F->>A: POST /api/wishlist/add { buyerId, productId }
  A->>DB: INSERT INTO wishlist(buyer_id, product_id)
  DB-->>A: inserted row
  A-->>F: 201 Created
  F-->>B: confirmation

Additional Information:

Group: 64

Members:

  • Bernardo Costa (up202207579)
  • Diana Nunes (up202208247)
  • Sofia Gonçalves (up202205020)
  • Teresa Mascarenhas (up202206828)
  • Tiago Ferreira (up202207311)