Skip to content

salieri009/IoTBay

Repository files navigation

IoTBay

IoTBay

Full-stack e-commerce platform for IoT devices

CI Deploy Java SQLite Docker Tests

Browse, purchase, and manage IoT devices — Smart Home, Industrial, Healthcare, and more.

Quick Start · Features · Tech Stack · Docs


Features

User & Auth

  • Registration with email validation
  • SHA-256 salted password hashing
  • Role-based access: Customer / Staff / Admin
  • Session management & audit trail

Product Catalog

  • Full-text search with category, price & stock filters
  • 6 product categories
  • Paginated listing with sort controls

Shopping & Checkout

  • Persistent session cart
  • Multi-step checkout with shipping options
  • Payment history & order confirmation

Order Management

  • Full order lifecycle tracking
  • Shipment creation & tracking numbers
  • Customer order cancellation

Admin Dashboard

  • KPI overview — sales, users, products
  • Product CRUD & user activation/deactivation
  • Bulk data export (CSV & JSON)

Security

  • CSRF token validation
  • SQL injection prevention (prepared statements)
  • XSS output encoding
  • Full access log

Quick Start

Prerequisites: Java 11+, Maven 3.6+

git clone https://github.com/salieri009/IoTBay.git
cd IoTBay
mvn jetty:run

Open http://localhost:8080.

# Run the full E2E test suite (server must be running)
mvn test

No Java? Use Docker instead:

docker compose up

Tech Stack

Layer Technology
Backend Java Servlets JSP
Database SQLite
Frontend Tailwind CSS TypeScript
Server Jetty Tomcat
Testing JUnit Selenium
CI/CD GitHub Actions Docker

Architecture

flowchart TD
    A[Browser] --> B[JSP Views]
    B --> C[Servlet Controllers]
    C --> D[Service Layer\nCart · Order · Product · User · Review]
    D --> E[DAO Layer\ninterface + impl per entity]
    E --> F[(SQLite)]
Loading
Domain model — 10 core entities
Entity Key Relationships
User has many Order, Review, CartItem, AccessLog
Product belongs to Category; has many Review, OrderProduct
Order has many OrderProduct, one Payment, one Shipment
CartItem links UserProduct
Review links UserProduct
Shipment belongs to Order
Payment belongs to Order
Supplier supplies Product
AccessLog records every authenticated action
Feature coverage — F01–F10 (118 E2E tests)
ID Feature Tests
F01 Access Log 6
F02 Product Catalog 10
F03 Order Management 8
F04 Payment 8
F05 Shipment 12
F06 User Management 10
F07 Customer Management 12
F08 Staff Management 12
F09 Supplier Management 10
F10 Data Management (CSV/JSON) 16
Security Boundary Tests 14
Total 118

Documentation

Full documentation index
Section Links
Getting Started Project Overview · Quick Start · Setup Guide
Architecture Components · Database Design · Security Architecture
Requirements Features · User Stories · API Reference
Development Backend Guide · Frontend Guide · Contributing
Deployment Docker Setup · Local · Production
Testing E2E Guide · Test Strategy · Test Data

Java Servlets · JSP · SQLite · Tailwind CSS · Selenium WebDriver
297 commits · 8 contributors · 111 source files · 118 E2E tests

UTS 41025 Introduction to Software Development — Autumn 2025 (Semester 1, 2025)