From 15256ff91cc963a877c55f1c6c9417c922e9403d Mon Sep 17 00:00:00 2001 From: Xevion Date: Wed, 28 Jan 2026 21:07:10 -0600 Subject: [PATCH] docs: replace feature wishlist with organized roadmap and changelog --- docs/CHANGELOG.md | 27 ++++++++++++++++++++++ docs/FEATURES.md | 58 ----------------------------------------------- docs/ROADMAP.md | 31 +++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 58 deletions(-) create mode 100644 docs/CHANGELOG.md delete mode 100644 docs/FEATURES.md create mode 100644 docs/ROADMAP.md diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md new file mode 100644 index 0000000..8713be4 --- /dev/null +++ b/docs/CHANGELOG.md @@ -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. diff --git a/docs/FEATURES.md b/docs/FEATURES.md deleted file mode 100644 index 0dcb325..0000000 --- a/docs/FEATURES.md +++ /dev/null @@ -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 diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md new file mode 100644 index 0000000..be97ade --- /dev/null +++ b/docs/ROADMAP.md @@ -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.