mirror of
https://github.com/Xevion/banner.git
synced 2026-01-30 22:23:32 -06:00
docs: add changelog entries and roadmap completion tracking
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "banner"
|
name = "banner"
|
||||||
version = "0.3.4"
|
version = "0.5.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
default-run = "banner"
|
default-run = "banner"
|
||||||
|
|
||||||
|
|||||||
+27
-4
@@ -4,10 +4,33 @@
|
|||||||
|
|
||||||
The Banner project is built as a multi-service application with the following components:
|
The Banner project is built as a multi-service application with the following components:
|
||||||
|
|
||||||
- **Discord Bot Service**: Handles Discord interactions and commands
|
- **Discord Bot Service**: Handles Discord interactions and commands (Serenity/Poise)
|
||||||
- **Web Service**: Serves the React frontend and provides API endpoints
|
- **Web Service**: Axum HTTP server serving the SvelteKit frontend and REST API endpoints
|
||||||
- **Scraper Service**: Background data collection and synchronization
|
- **Scraper Service**: Background data collection and synchronization with job queue
|
||||||
- **Database Layer**: PostgreSQL for persistent storage
|
- **Database Layer**: PostgreSQL 17 for persistent storage (SQLx with compile-time verification)
|
||||||
|
- **RateMyProfessors Client**: GraphQL-based bulk sync of professor ratings
|
||||||
|
|
||||||
|
### Frontend Stack
|
||||||
|
|
||||||
|
- **SvelteKit** with Svelte 5 runes (`$state`, `$derived`, `$effect`)
|
||||||
|
- **Tailwind CSS v4** via `@tailwindcss/vite`
|
||||||
|
- **bits-ui** for headless UI primitives (comboboxes, tooltips, dropdowns)
|
||||||
|
- **TanStack Table** for interactive data tables with sorting and column control
|
||||||
|
- **OverlayScrollbars** for styled, theme-aware scrollable areas
|
||||||
|
- **ts-rs** generates TypeScript type bindings from Rust structs
|
||||||
|
|
||||||
|
### API Endpoints
|
||||||
|
|
||||||
|
| Endpoint | Description |
|
||||||
|
|---|---|
|
||||||
|
| `GET /api/health` | Health check |
|
||||||
|
| `GET /api/status` | Service status, version, and commit hash |
|
||||||
|
| `GET /api/metrics` | Basic metrics |
|
||||||
|
| `GET /api/courses/search` | Paginated course search with filters (term, subject, query, open-only, sort) |
|
||||||
|
| `GET /api/courses/:term/:crn` | Single course detail with instructors and RMP ratings |
|
||||||
|
| `GET /api/terms` | Available terms from reference cache |
|
||||||
|
| `GET /api/subjects?term=` | Subjects for a term, ordered by enrollment |
|
||||||
|
| `GET /api/reference/:category` | Reference data lookups (campuses, instructional methods, etc.) |
|
||||||
|
|
||||||
## Technical Analysis
|
## Technical Analysis
|
||||||
|
|
||||||
|
|||||||
+35
-1
@@ -6,7 +6,41 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
## [0.1.0] - 2026-01
|
## [0.5.0] - 2026-01-29
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Multi-select subject filtering with searchable comboboxes.
|
||||||
|
- Smart instructor name abbreviation for compact table display.
|
||||||
|
- Delivery mode indicators and tooltips in location column.
|
||||||
|
- Page selector dropdown with animated pagination controls.
|
||||||
|
- FLIP animations for smooth table row transitions during pagination.
|
||||||
|
- Time tooltip with detailed meeting schedule and day abbreviations.
|
||||||
|
- Reusable SimpleTooltip component for consistent UI hints.
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Consolidated query logic and eliminated N+1 instructor loads via batch fetching.
|
||||||
|
- Consolidated menu snippets and strengthened component type safety.
|
||||||
|
- Enhanced table scrolling with OverlayScrollbars and theme-aware styling.
|
||||||
|
- Eliminated initial theme flash on page load.
|
||||||
|
|
||||||
|
## [0.4.0] - 2026-01-28
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Web-based course search UI with interactive data table, multi-column sorting, and column visibility controls.
|
||||||
|
- TypeScript type bindings generated from Rust types via ts-rs.
|
||||||
|
- RateMyProfessors integration: bulk professor sync via GraphQL and inline rating display in search results.
|
||||||
|
- Course detail expansion panel with enrollment, meeting times, and instructor info.
|
||||||
|
- OverlayScrollbars integration for styled, theme-aware scrollable areas.
|
||||||
|
- Pagination component for navigating large search result sets.
|
||||||
|
- Footer component with version display.
|
||||||
|
- API endpoints: `/api/courses/search`, `/api/courses/:term/:crn`, `/api/terms`, `/api/subjects`, `/api/reference/:category`.
|
||||||
|
- Frontend API client with typed request/response handling and test coverage.
|
||||||
|
- Course formatting utilities with comprehensive unit tests.
|
||||||
|
|
||||||
|
## [0.3.4] - 2026-01
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -4,7 +4,8 @@ This folder contains detailed documentation for the Banner project. This file ac
|
|||||||
|
|
||||||
## Files
|
## Files
|
||||||
|
|
||||||
- [`FEATURES.md`](FEATURES.md) - Current features, implemented functionality, and future roadmap
|
- [`CHANGELOG.md`](CHANGELOG.md) - Notable changes by version
|
||||||
|
- [`ROADMAP.md`](ROADMAP.md) - Planned features and priorities
|
||||||
- [`BANNER.md`](BANNER.md) - General API documentation on the Banner system
|
- [`BANNER.md`](BANNER.md) - General API documentation on the Banner system
|
||||||
- [`ARCHITECTURE.md`](ARCHITECTURE.md) - Technical implementation details, system design, and analysis
|
- [`ARCHITECTURE.md`](ARCHITECTURE.md) - Technical implementation details, system design, and analysis
|
||||||
|
|
||||||
|
|||||||
+8
-4
@@ -3,12 +3,9 @@
|
|||||||
## Now
|
## Now
|
||||||
|
|
||||||
- **Notification and subscription system** - Subscribe to courses and get alerts on seat availability, waitlist movement, and detail changes (time, location, professor, seats). DB schema exists.
|
- **Notification and subscription system** - Subscribe to courses and get alerts on seat availability, waitlist movement, and detail changes (time, location, professor, seats). DB schema exists.
|
||||||
- **RateMyProfessor integration** - Show professor ratings inline with search results and course details.
|
|
||||||
- **Professor name search filter** - Filter search results by instructor. Backend code exists but is commented out.
|
- **Professor name search filter** - Filter search results by instructor. Backend code exists but is commented out.
|
||||||
- **Subject/major search filter** - Search by department code (e.g. CS, MAT). Also partially implemented.
|
|
||||||
- **Autocomplete for search fields** - Typeahead for course titles, course numbers, professors, and terms.
|
- **Autocomplete for search fields** - Typeahead for course titles, course numbers, professors, and terms.
|
||||||
- **Test coverage expansion** - Broaden coverage with pure function tests (term parsing, search parsing, job types), session/rate-limiter tests, and more DB integration tests.
|
- **Test coverage expansion** - Broaden coverage with session/rate-limiter tests and more DB integration tests.
|
||||||
- **Web course search UI** - Add a browser-based course search interface to the dashboard, supplementing the Discord bot.
|
|
||||||
|
|
||||||
## Soon
|
## Soon
|
||||||
|
|
||||||
@@ -29,3 +26,10 @@
|
|||||||
- **CRN direct lookup** - Look up a course by its CRN without going through search.
|
- **CRN direct lookup** - Look up a course by its CRN without going through search.
|
||||||
- **Metrics dashboard** - Surface scraper and service metrics visually on the web dashboard.
|
- **Metrics dashboard** - Surface scraper and service metrics visually on the web dashboard.
|
||||||
- **Privileged error feedback** - Detailed error information surfaced to bot admins when commands fail.
|
- **Privileged error feedback** - Detailed error information surfaced to bot admins when commands fail.
|
||||||
|
|
||||||
|
## Done
|
||||||
|
|
||||||
|
- **Web course search UI** - Browser-based course search with interactive data table, sorting, pagination, and column controls. *(0.4.0)*
|
||||||
|
- **RateMyProfessor integration** - Bulk professor sync via GraphQL with inline ratings in search results. *(0.4.0)*
|
||||||
|
- **Subject/major search filter** - Multi-select subject filtering with searchable comboboxes. *(0.5.0)*
|
||||||
|
- **Test coverage expansion** - Unit tests for course formatting, API client, query builder, CLI args, and config parsing. *(0.3.4–0.4.0)*
|
||||||
|
|||||||
Reference in New Issue
Block a user