| packages | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| build-and-push.sh | ||
| Cargo.lock | ||
| Cargo.toml | ||
| compose.yaml | ||
| discord.Dockerfile | ||
| LICENSE | ||
| README.md | ||
| server.Dockerfile | ||
| webui.Dockerfile | ||
Project Echelon
A replay-to-video converter for Project Ignis: EDOPro.
A reference deployment is available for testing. Currently in beta - expect ongoing improvements!
Quick Start
Using the Discord Bot (@Echelon)
- Send a replay - DM or mention the bot with a
.yrpXfile attached - Get queued - Bot confirms your replay is queued with a unique ID
- Wait for processing - Bot sends status updates as the replay is processed
- Download video - Bot sends the finished MP4 when ready
Using the Web UI
- Visit the web interface
- Upload a
.yrpXreplay file - Wait for processing and download your video
Packages
The project consists of three independent services:
-
echelon-server - Core replay processing (Rust + Axum)
- Handles replay validation and video encoding
- Manages job queue and processing state
- Requires: Xvfb, ffmpeg, EDOPro
-
echelon-discord - Discord bot frontend (Rust + Serenity)
- Accepts replay uploads via Discord DMs/mentions
- Provides real-time status updates
- Streams completed videos back to users
-
echelon-webui - Web interface (Rust + Dioxus + Nginx)
- Simple file upload interface
- Real-time job status tracking
- Video download link
Local Development
Prerequisites
- Rust 1.70+
- Docker & Docker Compose (for containerized setup)
- Xvfb, ffmpeg (if running server locally without Docker)
Running the entire system with Docker Compose
# Copy example env file and configure
cp .env.example .env
# Edit .env with your DISCORD_TOKEN and other settings
# Start all services
docker compose up --build
# Services available at:
# - Server: http://localhost:3000
# - Web UI: http://localhost:8080
# - Discord: Invite the bot to your server
For running the packages individually, check their respective README.md files.
Configuration
Environment Variables
Server:
- No required environment variables (uses defaults)
Discord Bot:
DISCORD_TOKEN- Discord bot authentication token (required)ECHELON_SERVER_URL- Server URL (defaults tohttp://server:3000)
Web UI:
API_BASE_URL- Backend server URL (required for deployment)
Docker Compose
All services use an .env file. Key variables:
DISCORD_TOKEN=your_bot_token_here
ECHELON_SERVER_URL=http://server:3000 # Internal Docker network
Testing
Run all tests:
cargo test --all
Tests include:
- API tests (11 tests) - Discord bot server communication
- Server tests (27 tests) - Replay validation, job management, API routes
Deployment
Project Echelon is intended to be deployed in a Docker environment; as such, Dockerfiles and a compose.yaml representative of our reference deployment are provided in the repository root.
They should serve well as a starting point for your own deployment and should be ready to use - just docker compose up --build and you're good to go.
Additionally, prebuilt images for each service are available in the Packages tab, under their respective tags.
For example, to use the latest version of Echelon, run the following images:
project-echelon:server-latestproject-echelon:webui-latestproject-echelon:discord-latest
Contributing
We accept contributions! Submit your patches in the Fire King Discord server.
License
Project Echelon is licensed under the MIT license.
Unless explicitly stated otherwise, any contribution to this project shall be licensed under MIT, without any additional terms or conditions.