Skip to content

b3scale/b3scale-admin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

48 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ”₯ b3scale-admin πŸ”₯

The most elite WebAssembly admin panel for b3scale - built with pure Rust fire πŸ¦€βš‘

Rust WebAssembly Yew Nix

1337 Development Setup Available | Zero-JS Frontend | Maximum Performance


πŸ’œ A Note From Annie

Sooo. I started this project like 3 years ago and it collected dust. Never had the time or energy to actually work on this.

BUT I decided to turn this into an experiment and just vibe the rest of the fucking owl. πŸ¦‰

Let's make something absolutely legendary! ✨


🎯 What Is This?

b3scale-admin is a web-based administration interface for b3scale - a load balancing system for BigBlueButton servers.

The entire frontend runs in your browser as WebAssembly - giving you native-like performance with the security and portability of the web. No JavaScript. Just pure Rust compiled to WASM. πŸš€

b3scale-admin Screenshot

The vibec0re dark theme admin interface in all its glory ✨

✨ Features That Hit Different

  • πŸ¦€ Pure Rust/WASM - Zero JavaScript, maximum performance
  • πŸ” JWT Authentication - Secure token-based auth system with modern jsonwebtoken crate
  • 🎨 Vibec0re Dark Theme - Beautiful Bootstrap 5 dark theme for late-night coding
  • ⚑ Real-time Updates - Instant feedback on all operations
  • πŸ“± Responsive AF - Works flawlessly on desktop and mobile
  • πŸ”₯ 1337 Dev Setup - Nix flakes for the most elite development experience
  • πŸ”„ Fresh Dependencies - Recently updated to latest compatible versions

πŸ› οΈ Tech Stack (The Good Stuff)

  • Language: Rust πŸ¦€ (because we're not animals)
  • Framework: Yew v0.19 (React but better)
  • Build Tool: Trunk (blazing fast)
  • Styling: Bootstrap 5 + SCSS (dark mode everything)
  • Target: WebAssembly (the future is now)
  • Dev Environment: Nix flakes (reproducible elite setup)

πŸš€ Quick Start Options

Option 1: 1337 Nix Setup (RECOMMENDED)

For developers who want the most elite experience

# Modern flakes way (recommended)
nix develop

# Legacy shell.nix way (compatibility)  
nix-shell

# Direnv way (automatic, most 1337)
direnv allow

What you get instantly:

  • Rust with wasm32-unknown-unknown target
  • trunk for blazing WebAssembly builds
  • wasm-pack, cargo-watch, rust-analyzer
  • Node.js 20 + all system dependencies
  • Zero configuration, maximum vibes ✨

Option 2: Manual Setup (Still Good)

# Install prerequisites
cargo install trunk
rustup target add wasm32-unknown-unknown

# Clone and run
git clone https://github.com/b3scale/b3scale-admin.git
cd b3scale-admin
trunk serve

πŸ”₯ NIX DEVELOPMENT SETUP (ELITE MODE)

Complete development environment with zero hassle

⚑ Instant Setup

# Clone the repo
git clone https://github.com/b3scale/b3scale-admin.git
cd b3scale-admin

# Enter the matrix (choose your fighter)
nix develop     # Modern flakes
nix-shell       # Legacy compatibility  
direnv allow    # Automatic (requires direnv)

πŸ—οΈ Architecture

Modern Flakes (flake.nix)

  • Uses rust-overlay for bleeding-edge toolchain
  • Declarative, reproducible, cacheable
  • Supports dev shell + package building
  • Auto-includes WebAssembly targets

Legacy Shell (shell.nix)

  • Compatible with older Nix installations
  • Same rust-overlay for consistency
  • Fallback for systems without flakes

Direnv Integration (.envrc)

  • Automatic environment activation
  • No manual commands needed
  • Perfect VS Code/editor integration

πŸ› οΈ Development Commands

# Start development server
trunk serve

# Build for production  
trunk build --release

# Run tests
./scripts/run_tests.sh

# Lint & format
cargo clippy
cargo fmt

# Watch for changes
cargo watch -x check

πŸ”§ Nix Setup Instructions

1. Enable Flakes

Add to /etc/nix/nix.conf or ~/.config/nix/nix.conf:

experimental-features = nix-command flakes

2. Install Direnv (Recommended)

# NixOS
nix-env -iA nixos.direnv

# macOS/Linux  
nix-env -iA nixpkgs.direnv

Add to shell config (.bashrc, .zshrc, etc.):

eval "$(direnv hook bash)"  # or zsh, fish, etc.

3. Activate Environment

# Method 1: Direnv (automatic)
direnv allow

# Method 2: Flakes (manual)
nix develop  

# Method 3: Legacy (fallback)
nix-shell

🎯 IDE Integration

VS Code

  1. Install rust-analyzer extension
  2. Use direnv or configure rust-analyzer.server.path
  3. Enjoy blazing fast development

Vim/Neovim

Works out of the box with CoC, nvim-lsp, or any LSP client using direnv.

πŸ”₯ Pro Tips

Elite Development Workflow

# Terminal 1: Dev server
trunk serve

# Terminal 2: Tests in watch mode
cargo watch -x test  

# Terminal 3: Code quality
cargo watch -x clippy

Binary Cache (Faster Builds)

Add to ~/.config/nix/nix.conf:

substituters = https://cache.nixos.org/ https://nix-community.cachix.org
trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=

πŸ“ Project Structure

b3scale-admin/
β”œβ”€β”€ πŸ”₯ Nix Setup
β”‚   β”œβ”€β”€ flake.nix          # Modern Nix flakes
β”‚   β”œβ”€β”€ shell.nix          # Legacy Nix shell  
β”‚   └── .envrc             # Direnv integration
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ api/               # API client and models
β”‚   β”‚   β”œβ”€β”€ client.rs      # HTTP client implementation
β”‚   β”‚   β”œβ”€β”€ auth/          # Authentication context
β”‚   β”‚   └── models/        # Auto-generated API models
β”‚   β”œβ”€β”€ app/               # Application components
β”‚   β”‚   β”œβ”€β”€ router.rs      # Client-side routing
β”‚   β”‚   β”œβ”€β”€ frontends/     # Frontend management UI
β”‚   β”‚   └── backends/      # Backend server management  
β”‚   └── main.rs            # Application entry point
β”œβ”€β”€ styles/                # SCSS stylesheets
β”œβ”€β”€ Trunk.toml             # Build configuration
└── Cargo.toml             # Rust dependencies

πŸ”§ Configuration

The development server proxies API requests to http://localhost:42353/api/v1. Modify this in Trunk.toml if your b3scale API runs elsewhere.


🧩 Core Concepts

Frontends

API clients that create and manage BigBlueButton meetings:

  • πŸ”‘ Unique API keys for authentication
  • βš™οΈ Configurable settings
  • πŸ“Š Usage statistics and monitoring

Backends

BigBlueButton servers that host the actual meetings:

  • πŸ’š Health monitoring and status
  • βš–οΈ Load balancing configuration
  • πŸ“ˆ Performance metrics and analytics

πŸ› Troubleshooting

Nix Environment Issues

command not found: trunk

# Check if in nix environment
echo $IN_NIX_SHELL

# If not, enter environment  
nix develop
# or
direnv allow

No such file or directory: /nix/store/...

# Rebuild environment
nix develop --rebuild

# Or for shell.nix
nix-shell --pure

WebAssembly target missing

# This is automatic in Nix, but if needed:
rustup target add wasm32-unknown-unknown

General Issues

Build fails with SCSS errors

# Install grass (handled by Nix automatically)
cargo install grass

API connection refused

  • Ensure b3scale API runs on port 42353
  • Check CORS settings in b3scale config
  • Verify firewall/network settings

Authentication failures

  • Clear browser localStorage
  • Verify b3scale API configuration
  • Check JWT token expiration

πŸ“ Development Notes

  • 🚫 Don't edit src/api/models/ - auto-generated from OpenAPI
  • πŸ” Run cargo clippy before commits for code quality
  • 🎨 Use cargo fmt for consistent formatting
  • πŸ“¦ SCSS compiles automatically via pre-build hooks
  • πŸ”₯ Use the Nix environment for best experience
  • πŸ”„ Fresh Dependencies - Updated to jsonwebtoken 9.0 and latest compatible versions

🀝 Contributing (Join The Vibe)

Ready to make this project even more legendary? Let's go! πŸš€

# 1. Fork the repository (hit that fork button)
# 2. Create your feature branch
git checkout -b feature/EpicFeature

# 3. Make your changes (using the Nix environment!)  
nix develop
# ... code like a legend ...

# 4. Commit your changes
git commit -m 'Add some EpicFeature'

# 5. Push to your branch
git push origin feature/EpicFeature

# 6. Open a Pull Request and describe your epic contribution

Contribution Guidelines:

  • πŸ¦€ Keep it Rust-y and idiomatic
  • πŸ§ͺ Add tests for new features
  • πŸ“š Update docs for significant changes
  • 🎨 Follow the existing code style
  • πŸ”₯ Use the Nix environment for development

πŸ“„ License

MIT License - because sharing is caring! See LICENSE file for details.


πŸ™ Acknowledgments & Shoutouts

  • πŸ¦€ Rust Team - For creating the most amazing language
  • βš›οΈ Yew Framework - React but better, in Rust
  • 🌐 WebAssembly - The future of web development
  • ❄️ Nix Community - For reproducible development environments
  • πŸ’œ b3scale Team - For the epic BigBlueButton load balancing
  • πŸ¦‰ Everyone who vibes with the owl - You know who you are

Made with πŸ’œ, πŸ¦€, and pure elite vibes

Now go build something absolutely legendary! βœ¨πŸš€

Built with Nix

About

A webui for b3scalectl using the b3scale API

Resources

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published