mirror of
https://github.com/Xevion/banner.git
synced 2026-01-31 08:23:35 -06:00
docs: replace feature wishlist with organized roadmap and changelog
This commit is contained in:
@@ -0,0 +1,27 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
||||||
|
|
||||||
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [0.1.0] - 2026-01
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Live service status tracking on web dashboard with auto-refresh and health indicators.
|
||||||
|
- DB operation extraction for improved testability.
|
||||||
|
- Unit test suite foundation covering core functionality.
|
||||||
|
- Docker support for PostgreSQL development environment.
|
||||||
|
- ICS calendar export with comprehensive holiday exclusion coverage.
|
||||||
|
- Google Calendar link generation with recurrence rules and meeting details.
|
||||||
|
- Job queue with priority-based scheduling for background scraping.
|
||||||
|
- Rate limiting with burst allowance for Banner API requests.
|
||||||
|
- Session management and caching for Banner API interactions.
|
||||||
|
- Discord bot commands: search, terms, ics, gcal.
|
||||||
|
- Intelligent scraping system with priority queues and retry tracking.
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Type consolidation and dead code removal across the codebase.
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
# Features
|
|
||||||
|
|
||||||
## Current Features
|
|
||||||
|
|
||||||
### Discord Bot Commands
|
|
||||||
|
|
||||||
- **search** - Search for courses with various filters (title, course code, keywords)
|
|
||||||
- **terms** - List available terms or search for a specific term
|
|
||||||
- **time** - Get meeting times for a specific course (CRN)
|
|
||||||
- **ics** - Generate ICS calendar file for a course with holiday exclusions
|
|
||||||
- **gcal** - Generate Google Calendar link for a course
|
|
||||||
|
|
||||||
### Data Pipeline
|
|
||||||
|
|
||||||
- Intelligent scraping system with priority queues
|
|
||||||
- Rate limiting and burst handling
|
|
||||||
- Background data synchronization
|
|
||||||
|
|
||||||
## Feature Wishlist
|
|
||||||
|
|
||||||
### Commands
|
|
||||||
|
|
||||||
- ICS Download (get a ICS download of your classes with location & timing perfectly - set for every class you're in)
|
|
||||||
- Classes Now (find classes happening)
|
|
||||||
- Autocomplete
|
|
||||||
- Class Title
|
|
||||||
- Course Number
|
|
||||||
- Term/Part of Term
|
|
||||||
- Professor
|
|
||||||
- Attribute
|
|
||||||
- Component Pagination
|
|
||||||
- RateMyProfessor Integration (Linked/Embedded)
|
|
||||||
- Smart term selection (i.e. Summer 2024 will be selected automatically when opened)
|
|
||||||
- Rate Limiting (bursting with global/user limits)
|
|
||||||
- DMs Integration (allow usage of the bot in DMs)
|
|
||||||
- Class Change Notifications (get notified when details about a class change)
|
|
||||||
- Multi-term Querying (currently the backend for searching is kinda weird)
|
|
||||||
- Full Autocomplete for Every Search Option
|
|
||||||
- Metrics, Log Query, Privileged Error Feedback
|
|
||||||
- Search for Classes
|
|
||||||
- Major, Professor, Location, Name, Time of Day
|
|
||||||
- Subscribe to Classes
|
|
||||||
- Availability (seat, pre-seat)
|
|
||||||
- Waitlist Movement
|
|
||||||
- Detail Changes (meta, time, location, seats, professor)
|
|
||||||
- `time` Start, End, Days of Week
|
|
||||||
- `seats` Any change in seat/waitlist data
|
|
||||||
- `meta`
|
|
||||||
- Lookup via Course Reference Number (CRN)
|
|
||||||
- Smart Time of Day Handling
|
|
||||||
- "2 PM" -> Start within 2:00 PM to 2:59 PM
|
|
||||||
- "2-3 PM" -> Start within 2:00 PM to 3:59 PM
|
|
||||||
- "ends by 2 PM" -> Ends within 12:00 AM to 2:00 PM
|
|
||||||
- "after 2 PM" -> Start within 2:01 PM to 11:59 PM
|
|
||||||
- "before 2 PM" -> Ends within 12:00 AM to 1:59 PM
|
|
||||||
- Get By Section Command
|
|
||||||
- CS 4393 001 =>
|
|
||||||
- Will require SQL to be able to search for a class by its section number
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# Roadmap
|
||||||
|
|
||||||
|
## 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.
|
||||||
|
- **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.
|
||||||
|
- **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.
|
||||||
|
- **Test coverage expansion** - Broaden coverage with pure function tests (term parsing, search parsing, job types), 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
|
||||||
|
|
||||||
|
- **Smart time-of-day search parsing** - Support natural queries like "2 PM", "2-3 PM", "ends by 2 PM", "after 2 PM", "before 2 PM" mapped to time ranges.
|
||||||
|
- **Section-based lookup** - Search by full section identifier, e.g. "CS 4393 001".
|
||||||
|
- **Search result pagination** - Paginated embeds for large result sets in Discord.
|
||||||
|
- **Multi-term querying** - Query across multiple terms in a single search instead of one at a time.
|
||||||
|
- **Historical analytics** - Track seat availability over time and visualize fill-rate trends per course or professor.
|
||||||
|
- **Schedule builder** - Visual weekly schedule tool for assembling a conflict-free course lineup.
|
||||||
|
- **Professor stats** - Aggregate data views: average class size, typical waitlist length, schedule patterns across semesters.
|
||||||
|
|
||||||
|
## Eventually
|
||||||
|
|
||||||
|
- **Degree audit helper** - Map available courses to degree requirements and suggest what to take next.
|
||||||
|
- **Dynamic scraper scheduling** - Adjust scrape intervals based on change frequency and course count (e.g. 2 hours per 500 courses, shorter intervals when changes are detected).
|
||||||
|
- **DM support** - Allow the Discord bot to respond in direct messages, not just guild channels.
|
||||||
|
- **"Classes Now" command** - Find classes currently in session based on the current day and time.
|
||||||
|
- **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.
|
||||||
|
- **Privileged error feedback** - Detailed error information surfaced to bot admins when commands fail.
|
||||||
Reference in New Issue
Block a user