# 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 ` 4. Restart PM2: `pm2 restart ticket-machine` ### Error: Cannot find module 'express' Run `npm install` in the project directory to install dependencies. ## License MIT