86 lines
2.5 KiB
Markdown
86 lines
2.5 KiB
Markdown
|
|
# FTC Ticketing System (Refactored)
|
||
|
|
|
||
|
|
A comprehensive ticketing solution for Minecraft (CC:Tweaked) with a modern Web Control Panel.
|
||
|
|
|
||
|
|
## Features
|
||
|
|
|
||
|
|
* **Ticket Machine (Lua)**: Issue tickets, print receipts, write to floppy disks.
|
||
|
|
* **Gate (Lua)**: Validate tickets, control redstone doors, track entries/exits.
|
||
|
|
* **Web Console**:
|
||
|
|
* **Real-time Dashboard**: Live updates of sales and passenger flow via Socket.IO.
|
||
|
|
* **Visual Line Editor**: Manage stations and lines with an interactive SVG map.
|
||
|
|
* **Fare Management**: Configure fares with a visual fare chart.
|
||
|
|
* **Logs**: Track ticket usage and system operations.
|
||
|
|
* **System Settings**: Configure API endpoints and promotions.
|
||
|
|
* **File Manager**: Upload and manage audio files (`.dfpwm`) for devices.
|
||
|
|
|
||
|
|
## Project Structure
|
||
|
|
|
||
|
|
* `server/`: Node.js Backend (Express + Socket.IO).
|
||
|
|
* `services/`: Data and logic handling.
|
||
|
|
* `routes/`: API endpoints.
|
||
|
|
* `web/`: Frontend (Vue 3 + Socket.IO Client).
|
||
|
|
* `index.html`: The new Control Panel.
|
||
|
|
* `index.js`: Vue 3 logic.
|
||
|
|
* `Lua/`: CC:Tweaked scripts.
|
||
|
|
|
||
|
|
## Installation
|
||
|
|
|
||
|
|
1. **Prerequisites**: Node.js 16+.
|
||
|
|
2. **Install Dependencies**:
|
||
|
|
```bash
|
||
|
|
npm install
|
||
|
|
```
|
||
|
|
|
||
|
|
## Running the Server
|
||
|
|
|
||
|
|
### Development
|
||
|
|
```bash
|
||
|
|
npm start
|
||
|
|
```
|
||
|
|
Access the console at `http://localhost:23333`.
|
||
|
|
|
||
|
|
### Production (PM2)
|
||
|
|
This project includes an `ecosystem.config.js` for PM2.
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Start
|
||
|
|
pm2 start ecosystem.config.js
|
||
|
|
|
||
|
|
# View logs
|
||
|
|
pm2 logs ticket-machine
|
||
|
|
|
||
|
|
# Restart
|
||
|
|
pm2 restart ticket-machine
|
||
|
|
```
|
||
|
|
|
||
|
|
## Configuration
|
||
|
|
|
||
|
|
* **Server Port**: Default `23333`. Set `PORT` environment variable to change.
|
||
|
|
* **Data Storage**: All data is stored in `web/data/`.
|
||
|
|
* **CC:Tweaked Devices**:
|
||
|
|
* Run `install_machine.lua` or `install_gate.lua` on your turtles/computers.
|
||
|
|
* Point them to your server's IP (e.g., `http://YOUR_IP:23333/api`).
|
||
|
|
|
||
|
|
## API
|
||
|
|
|
||
|
|
* `/api`: Admin API (Stations, Lines, Fares, Logs).
|
||
|
|
* `/api/public`: Public API for devices (Ticket queries, Orders).
|
||
|
|
* **WebSocket**: Connect to `/` for real-time events (`stations:updated`, `stats:ticket:updated`, etc.).
|
||
|
|
|
||
|
|
## Troubleshooting
|
||
|
|
|
||
|
|
### Error: bind EADDRINUSE 0.0.0.0:23333
|
||
|
|
This means the port 23333 is already occupied.
|
||
|
|
1. Stop the PM2 process: `pm2 stop ticket-machine`
|
||
|
|
2. Find the process holding the port: `lsof -i :23333` or `netstat -tunlp | grep 23333`
|
||
|
|
3. Kill the process: `kill -9 <PID>`
|
||
|
|
4. Restart PM2: `pm2 restart ticket-machine`
|
||
|
|
|
||
|
|
### Error: Cannot find module 'express'
|
||
|
|
Run `npm install` in the project directory to install dependencies.
|
||
|
|
|
||
|
|
## License
|
||
|
|
|
||
|
|
MIT
|