A software release management tool built in Rust that provides a visual Kanban-style board for tracking releases across different environments.
- Single binary deployment (backend + embedded frontend)
- SSO login flow through GitHub
- Frontend built in Rust/WASM
- Persistent storage using Sled
- Live updates via WebSockets
- Kanban-style release management board
- Integrated chat functionality
- Drag-and-drop release management
- Rust 1.56+ with cargo
- wasm-pack for building the frontend
- GitHub OAuth application for authentication
blend/
├── Cargo.toml # Main project dependencies
├── frontend/ # WASM frontend
│ ├── Cargo.toml # Frontend dependencies
│ └── src/ # Frontend source code
└── src/ # Backend source code
├── api/ # API endpoints
├── auth/ # Authentication (GitHub OAuth)
├── models/ # Data models
├── scheduler/ # Release scheduler
├── storage/ # Sled database integration
├── websocket/ # WebSocket server
└── main.rs # Application entry point
-
Create a GitHub OAuth application and obtain client ID and secret
-
Set environment variables:
export GITHUB_CLIENT_ID=your_client_id export GITHUB_CLIENT_SECRET=your_client_secret export REDIRECT_URL=http://localhost:8080/auth/github/callback export HOST=127.0.0.1 export PORT=8080 export DB_PATH=./data
-
Build the frontend:
cd frontend wasm-pack build --target web
-
Copy frontend build artifacts to static directory:
mkdir -p ../static cp -r pkg/* ../static/
-
Build and run the backend:
cd .. cargo run --release
-
Open your browser to
http://localhost:8080
For development, you can run the backend and frontend separately:
-
Run the backend:
cargo run
-
In another terminal, build the frontend in watch mode:
cd frontend wasm-pack build --target web --dev --watch
For production deployment, simply build the release binary:
cargo build --release
The resulting binary (target/release/blend
) is self-contained and can be deployed directly to your server.
The application reads configuration from environment variables:
GITHUB_CLIENT_ID
: Your GitHub OAuth application client IDGITHUB_CLIENT_SECRET
: Your GitHub OAuth application client secretREDIRECT_URL
: The OAuth callback URLHOST
: The host address to bind to (default: 127.0.0.1)PORT
: The port to listen on (default: 8080)DB_PATH
: Path where Sled database files will be stored (default: ./data)
MIT