# Beyond Cloud Technology - Website Stress Test

![Website Stress Test Dashboard](screenshots/hero.png)

## 🌐 Public Access
**Live URL:** [https://website-stress-test.beyondcloud.technology/](https://website-stress-test.beyondcloud.technology/)

---

## 🚀 Overview
The **Website Stress Test** is a professional-grade load testing tool designed to simulate realistic traffic patterns on your web applications. It helps developers and QA engineers identify bottlenecks, test scalability, and ensure production readiness.

Built with a **modern, high-performance architecture**, it includes a custom NodeJS proxy server to bypass CORS restrictions and allow testing of any target URL.

## ✨ Key Features

### 🛠️ Core Functionality
*   **Custom HTTP Methods**: Support for GET, POST, PUT, DELETE, and PATCH.
*   **Configurable Load**: Adjust concurrent users (up to 5000) and test duration.
*   **Traffic Patterns**:
    *   **Steady**: Constant load.
    *   **Burst**: Sudden spikes to test resilience.
    *   **Ramp-up**: Gradual increase to find breaking points.
    *   **Random**: Simulate unpredictable real-world traffic.
*   **Crawler Mode**: Automatically crawls the target website to test multiple pages and paths, not just the entry point.

### 📊 Real-Time Analytics
*   **Interactive Charts**: Live visualization of Requests Per Second (RPS) and Response Times.
*   **Detailed Metrics**: Track Active Users, Bandwidth, Success Rates, and Error breakdown (4xx, 5xx, Timeouts).
*   **Percentiles**: Monitor P50, P95, and P99 latency metrics.

### 🎨 User Experience
*   **Modern UI**: Sleek, glassmorphism-inspired design with Light/Dark mode support.
*   **Git Versioning**: Automatic display of the current Git Commit ID and deployment age in the UI.
*   **Responsive Design**: Fully functional on desktop and tablet devices.

---

## 📦 Installation & Setup

### Prerequisites
*   Node.js (v18 or higher)
*   Nginx (for production deployment)
*   PM2 (for process management)

### 💻 Local Development
1.  **Clone the Repository**
    ```bash
    git clone https://github.com/DeNNiiInc/Website-Stress-Test.git
    cd Website-Stress-Test
    ```

2.  **Install Dependencies**
    ```bash
    npm install
    ```

3.  **Start the Proxy Server**
    ```bash
    npm start
    ```
    The server will start on `http://localhost:3000`.

4.  **Open the Application**
    Open `index.html` in your browser or serve it using a static file server (e.g., Live Server).

---

## 🚀 Deployment Guide (Proxmox / Ubuntu)

This project includes automated deployment scripts for Proxmox/Ubuntu environments.

### 1. Configuration
Copy `deploy-config.example.json` to `deploy-config.json` and update with your server details:
```json
{
  "host": "YOUR_SERVER_IP",
  "username": "root",
  "password": "YOUR_PASSWORD",
  "remotePath": "/var/www/website-stress-test",
  "repoUrl": "https://github.com/DeNNiiInc/Website-Stress-Test.git",
  "githubToken": "YOUR_GITHUB_TOKEN",
  "appName": "website-stress-test"
}
```

### 2. Auto-Deployment
Run the PowerShell deployment script:
```powershell
./start-deployment.ps1
```
This script will:
*   Connect to your server via SSH.
*   Install Nginx and Node.js if missing.
*   Clone/Pull the latest code.
*   Configure Nginx as a reverse proxy.
*   Set up a Cron job for auto-updates.

### 3. Auto-Sync
The system automatically checks for Git updates every 5 minutes. If changes are detected, it pulls the code, installs dependencies, and restarts the backend process without downtime.

**Manual Update Trigger:**
```bash
/var/www/website-stress-test/auto-sync.sh
```

---

## 🔧 Architecture

### Backend (`proxy-server.js`)
*   **Role**: Handles CORS requests and authenticates traffic.
*   **Port**: 3000 (Internal).
*   **Endpoints**:
    *   `/proxy`: Forwards stress test requests.
    *   `/git-info`: Returns current commit hash and deployment date.

### Frontend (`index.html` + `script.js`)
*   **Technology**: Vanilla JS + Chart.js.
*   **Communication**: Fetch API to the Proxy Server.

---

## 📝 License
MIT License - Copyright (c) 2025 Beyond Cloud Technology.
