# HyperMC Panel

Welcome to **HyperMC Panel**, a powerful and user-friendly web-based control panel for managing Minecraft servers within the My-MC Infrastructure with ease. Built with modern technologies like Node.js, Express, WebSocket, and Docker, this panel provides real-time server monitoring, mod management, player administration, and seamless integration with Minecraft server features. Whether you're a server admin or a casual player, HyperMC Panel simplifies server management with an intuitive interface and robust functionality.

Note: This repository is not designed for use in self-hosted environments, as its core components rely on our internal APIs and Docker infrastructure.

The code is provided for research and learning purposes. You're welcome to fork, download, and modify it to meet your needs!

![Panel Screenshot](https://git.ssh.surf/hypermc/panel/raw/branch/main/public/screenshots/panel.png)

## Features

- **Real-Time Monitoring**: Track server status, CPU, and memory usage with live-updating charts powered by Chart.js.
- **Server Control**: Start, stop, restart, and edit server properties (`server.properties`) directly from the panel.
- **Player Management**: Kick, ban, op, deop, send private messages, and give items to players with pre-configured loadouts or custom items.
- **Mod Management**: Search, install, and uninstall mods effortlessly with an integrated mod search system.
- **Console Access**: Send RCON commands and view real-time server logs in a sleek terminal interface using xterm.js.
- **Link Generation**: Create temporary connection links for Minecraft, Geyser (Bedrock support), and SFTP access with status indicators.
- **Docker Integration**: Manage Docker containers for your Minecraft server, including stats and logs.
- **WebSocket Communication**: Ensures low-latency, real-time updates for all server activities.
- **Secure Authentication**: API key-based login with temporary auto-login links for admins.
- **Responsive Design**: A modern, Tailwind CSS-styled interface that works seamlessly on desktop and mobile devices.

## Tech Stack

- **Backend**: Node.js, Express.js, WebSocket (ws), Dockerode, node-fetch, unirest
- **Frontend**: HTML, JavaScript, Tailwind CSS, Chart.js, xterm.js, FitAddon
- **Environment Management**: dotenv for configuration
- **Other Tools**: crypto for secure link generation, child_process for executing status checks

## Prerequisites

- **Node.js** (v16 or higher)
- **Docker** (for container management)
- **Git** (to clone the repository)
- A running Minecraft server with Docker support
- Access to an authentication endpoint for API key generation
- Environment variables configured (see [Configuration](#configuration))

## Folder Structure

```
├── public/
│   ├── css/
│   │   └── styles.min.css       # Compiled Tailwind CSS
│   ├── favicon/                 # Favicon assets
│   └── index.html               # Main HTML file
├── includes/
│   ├── api.js                   # API request handling
│   ├── auth.js                  # Authentication and login link logic
│   ├── docker.js                # Docker-related functions
│   ├── status.js                # Connection status checking functions
│   ├── websocket.js             # WebSocket connection handling
├── index.js                     # Main server entry point
├── app.js                       # Frontend JavaScript logic
├── .env                         # Environment variables (not tracked)
├── package.json                 # Node.js dependencies
└── README.md                    # Project documentation
```

## Acknowledgments

- **Chart.js**: For beautiful, responsive charts.
- **xterm.js**: For the terminal interface.
- **Tailwind CSS**: For the sleek, modern UI.
- **Dockerode**: For seamless Docker integration.
- **SNXRaven**: For creating this project with ❤️ ([raven-scott.fyi](https://raven-scott.fyi)).

## Contact

For questions, issues, or suggestions, please open an issue on the [repository](https://git.ssh.surf/hypermc/panel) or contact the maintainer at [raven-scott.fyi](https://raven-scott.fyi).