mirror of
https://github.com/Xevion/banner.git
synced 2025-12-05 23:14:20 -06:00
51f8256e61960a8df04272c2939b740eee335b03
Add retry tracking to scrape jobs with configurable max retries (default 5), implement automatic database migrations on startup, and significantly reduce logging noise from infrastructure layers. Enhanced tracing with structured spans for better debugging while keeping output readable by suppressing verbose trace logs from rate limiters and session management. Improved error handling with detailed retry context and proper session cookie validation.
fix: pass RAILWAY_GIT_COMMIT_SHA through Docker, provide Cargo.toml for frontend (version retrieval)
banner
A complex multi-service system providing a Discord bot and browser-based interface to UTSA's course data.
Services
The application consists of three modular services that can be run independently or together:
-
Discord Bot (
bot) -
Web Server (
web)- Axum-based server with Vite/React-based frontend
- Embeds static assets at compile time with E-Tags & Cache-Control headers
-
Scraper (
scraper)- Intelligent data collection system with priority-based queuing inside PostgreSQL via
sqlx - Rate-limited scraping with burst handling to respect UTSA's systems
- Handles course data updates, availability changes, and metadata synchronization
- Intelligent data collection system with priority-based queuing inside PostgreSQL via
Quick Start
pnpm install -C web # Install frontend dependencies
cargo build # Build the backend
just dev # Runs auto-reloading dev build
just dev --services bot,web # Runs auto-reloading dev build, running only the bot and web services
just dev-build # Development build with release characteristics (frontend is embedded, non-auto-reloading)
just build # Production build that embeds assets
Documentation
Comprehensive documentation is available in the docs/ folder.
Description
Languages
Rust
88.5%
TypeScript
8.4%
Dockerfile
1.1%
Just
0.8%
JavaScript
0.6%
Other
0.6%