初始提交
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user