| api | ||
| packages | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| .gitmodules | ||
| build-and-push.sh | ||
| Cargo.lock | ||
| Cargo.toml | ||
| compose.yaml | ||
| deploy.sh | ||
| discord.Dockerfile | ||
| LICENSE | ||
| README.md | ||
| server.Dockerfile | ||
| webui.Dockerfile | ||
Project Echelon
A replay-to-video converter for Project Ignis: EDOPro.
Quick Start
Using the Discord Bot (@Echelon)
Add the bot to your own server using this install link.
- Send a replay - call the
/echelon convertcommand and attach your replay file - Get queued - Echelon confirms your replay is queued
- Wait for processing - You'll receive status updates as the replay is processed
- Download video - Echelon 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 and a custom fork of EDOPro:
-
echelon-server - Core replay processing (Rust + Axum)
- Handles replay validation and video encoding
- Manages job queue and processing state
- Requires: Xvfb, ffmpeg, oEDOPro
-
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
-
echelon-edopro - custom fork of EDOPro (C++)
- Added offline rendering to audio and video FIFO pipes, for perfectly smooth 60fps video output
- Adjusted UI elements to better fit a video recording
- Added command line arguments and environment variables to configure EDOPro
Local Development
Prerequisites
- Rust 1.70+
- Docker & Docker Compose (for containerized setup)
- Xvfb, ffmpeg (if running server locally without Docker)
- Optionally, for
echelon-edopro, a C++ development environment - For the Discord bot, you will need to create an application in the Discord Developer Portal, and obtain your token (DISCORD_TOKEN in our environment)
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
Project Echelon is configured exclusively via environment variables. A .env.example file is provided in the repository root, listing all the environment variables and example values where applicable.
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! Reach out to us in the Fire King Discord server to get access!
License
Project Echelon is licensed under the MIT license.
Project Ignis: EDOPro, and the custom fork in this repository, are licensed under the AGPL-3.0 license.
Unless explicitly stated otherwise, any contribution to this project shall be licensed under the aforementioned licenses, without any additional terms or conditions.