mirror of
https://github.com/Xevion/banner.git
synced 2025-12-05 23:14:20 -06:00
Switch to Bun for 2-5x faster frontend builds, implement cargo-chef for reliable Rust dependency caching, and add Biome for fast code formatting. Build system improvements: - Replace pnpm with Bun for frontend package management - Add cargo-chef to Dockerfile for better Rust build layer caching - Update all commands to use bun instead of pnpm Developer experience: - Add comprehensive Justfile commands (format, format-check, db) - Implement automated PostgreSQL Docker setup with random port allocation - Add stricter checks (--deny warnings on clippy, --all-features flag) Code quality: - Add Biome formatter for 10-100x faster TypeScript/JavaScript formatting - Add GitHub Actions CI/CD workflow for automated checks - Update .dockerignore with comprehensive exclusions - Format all code with cargo fmt (Rust) and Biome (TypeScript) All changes maintain backward compatibility and can be tested incrementally.
52 lines
1.8 KiB
Markdown
52 lines
1.8 KiB
Markdown
# 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`][src-bot])
|
|
|
|
- Primary interface for course monitoring and data queries
|
|
- Built with [Serenity][serenity] and [Poise][poise] frameworks for robust command handling
|
|
- Uses slash commands with comprehensive error handling and logging
|
|
|
|
- Web Server ([`web`][src-web])
|
|
|
|
- [Axum][axum]-based server with Vite/React-based frontend
|
|
- [Embeds static assets][rust-embed] at compile time with E-Tags & Cache-Control headers
|
|
|
|
- Scraper ([`scraper`][src-scraper])
|
|
|
|
- Intelligent data collection system with priority-based queuing inside PostgreSQL via [`sqlx`][sqlx]
|
|
- Rate-limited scraping with burst handling to respect UTSA's systems
|
|
- Handles course data updates, availability changes, and metadata synchronization
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
bun install --cwd 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/`][documentation] folder.
|
|
|
|
[documentation]: docs/README.md
|
|
[src-bot]: src/bot
|
|
[src-web]: src/web
|
|
[src-scraper]: src/scraper
|
|
[serenity]: https://github.com/serenity-rs/serenity
|
|
[poise]: https://github.com/serenity-rs/poise
|
|
[axum]: https://github.com/tokio-rs/axum
|
|
[rust-embed]: https://lib.rs/crates/rust-embed
|
|
[sqlx]: https://github.com/launchbadge/sqlx
|