Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update #1

Merged
merged 27 commits into from
Oct 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
b3632c0
chore: add js-doc (#275)
doprz Oct 8, 2024
dcc1d81
fix: disabled [object Object] hover message on dialog popups (#284)
caseycharleston Oct 8, 2024
d73615e
fix: remove white space after duplicate schedule regex matching (#286)
caseycharleston Oct 10, 2024
7a5c3a2
feat: settings page (#260)
doprz Oct 10, 2024
90861d7
docs: add improved dev get started info (#259)
doprz Oct 11, 2024
db1eac3
fix(ui): unhid settings button (#288)
yahya-kousa Oct 11, 2024
aede681
feat: migration update showing (#293)
DereC4 Oct 12, 2024
bd17e33
feat: release notes (#283)
doprz Oct 12, 2024
65ff6bf
feat: report issue popup (#261)
sghsri Oct 13, 2024
187a4c8
docs: update to React v20.9.0 (LTS)
doprz Oct 13, 2024
e774f31
feat: splash text additions before v2 release (#296)
DereC4 Oct 14, 2024
d22237d
feat: UTRP v2 migration (#292)
doprz Oct 15, 2024
2983a0c
chore: get ready for release (#308)
Razboy20 Oct 15, 2024
58eed49
chore: remove extra console.log()
doprz Oct 15, 2024
4cf8c3f
feat: update admin titles
doprz Oct 15, 2024
4629626
feat: swe title updates (#310)
doprz Oct 15, 2024
aeff5e0
fix: migration loop
Razboy20 Oct 16, 2024
59f173c
style: remove ugly period after async (#313)
Samathingamajig Oct 16, 2024
05f00b2
fix: gulp zip (#314)
Razboy20 Oct 16, 2024
ceba38b
fix: show calendar in active window (#312)
Samathingamajig Oct 16, 2024
5634fbe
chore: bump version
Razboy20 Oct 16, 2024
e261641
fix: add a little error checking to settings (#315)
Razboy20 Oct 17, 2024
e082158
build: sentry instrumentation (#316)
Razboy20 Oct 17, 2024
79dd29c
feat: spring 2024 instructors db (#317)
Samathingamajig Oct 17, 2024
f29e3ef
chore: update CHANGELOG.md
doprz Oct 17, 2024
839f9c6
feat: disable/some actions when no instructor (#319)
Samathingamajig Oct 17, 2024
b967240
feat: update senior swe admins (#326)
doprz Oct 19, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -210,3 +210,4 @@ sketch
# Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option)
package-lock.json
storybook-static/
package/
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v18.12.1
v20.9.0
258 changes: 258 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

199 changes: 117 additions & 82 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,121 +1,154 @@
![readmegif2](https://github.com/user-attachments/assets/1aca0f75-f143-4bc9-97f5-1a99d0d9c1ac)

# UT Registration Plus

![UTRP Social Preview](images/UTRP_Social-Preview_Prod.svg)

![Chrome Web Store](https://img.shields.io/chrome-web-store/v/hboadpjkoaieogjimneceaahlppnipaa)
![Downloads](https://img.shields.io/chrome-web-store/d/hboadpjkoaieogjimneceaahlppnipaa)
![License](https://img.shields.io/github/license/Longhorn-Developers/UT-Registration-Plus)

We've all been there. 20 tabs of Rate My Professor, Google Spreadsheet, and the UT Course Schedule open and you still don't know what classes to take.
This extension, UT Registration Plus (UTRP), tries to streamline most of the unnecessary steps and headaches of registering for classes at UT Austin.
**UT Registration Plus (UTRP)** streamlines the process of registering for classes at UT Austin by reducing the chaos of juggling multiple tabs like Rate My Professor, Google Sheets, and the UT Course Schedule. With UTRP, you can simplify class selection and schedule management. We've all been there. 20 tabs of Rate My Professor, Google Spreadsheet, and the UT Course Schedule open and you still don't know what classes to take. UT Registration Plus (UTRP), tries to streamline most of the unnecessary steps and headaches of registering for classes at UT Austin.

- For each class in the UT Course Schedule site, UTRP provides a "breakdown" popup, with quick and easy links to the instructor's RateMyProfessor, Course Evaluation Survey (CES) and past syllabi.
## Demo

- Shows the course description with highlighted information on prerequisites, restrictions, etc.
![UTRP v2 Demo](images/UTRP-Demo.gif)

- Shows an aggregate and semesterly graph of the grade distributions for each course.
## Features

- Gives you the ability to add "Add Course" and view them in the extension popup, a quick list of all the courses you have saved and an easy way to copy unique numbers.
- **Quick Access to Class Info**: For each class in the UT Course Schedule, UTRP provides a "breakdown" popup with direct links to RateMyProfessor, Course Evaluation Surveys (CES), and past syllabi.
- **Prerequisite & Restriction Highlights**: Displays course descriptions with highlighted details on prerequisites, restrictions, and other important info.
- **Grade Distribution Graphs**: View an aggregate and semester-specific graph of grade distributions for each course.
- **Saved Courses List**: Easily add courses to a list and view them in the extension popup. Copy unique numbers with a single click.
- **Conflict Detection**: Automatically highlights and strikes out courses that conflict with your saved courses in the UT Course Catalog.
- **Weekly Schedule View**: Displays your saved courses in a weekly schedule format for easier planning.
- **Multiple Schedule Support**: Create multiple schedules to plan for different registration scenarios.
- **And much more!**

- Highlights and crosses-out what courses on the UT Course Catalog would conflict with your currently saved courses, making selecting courses that fit with your schedule so much easier.

- Display's a weekly schedule based on your saved courses.
## Toolchain

- Give you the ability to create multiple schedules to plan for different scenarios.
- React v20.9.0 (LTS)
- TypeScript
- Vite 5
- UnoCSS
- ESLint
- Prettier
- Storybook
- Figma
- Semantic-Release
- Custom Messaging & Storage Wrappers

- ... and much more!
## VSCode Extensions

## Toolchain
We recommend using the following VSCode extensions to improve your development experience:

- React 18
- TypeScript
- Vite 5
- ESLint
- Prettier
- Storybook
- Semantic-Release
- Custom Messaging & Storage Wrappers
- **[ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)**: For identifying and fixing linting issues.
- **[Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)**: For automatic code formatting.
- **[Tailwind CSS IntelliSense](https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss)**: For Tailwind CSS class autocomplete and IntelliSense.
- **[UnoCSS](https://marketplace.visualstudio.com/items?itemName=antfu.unocss)**: For better support with UnoCSS utilities.

## Contributing

Contributions are welcome and encouraged! To contribute, please follow these steps:
Contributions are welcome and encouraged! To get started:

1. Fork the repository
2. Create a new branch (`git checkout -b feature/your-feature`)
3. Make your changes and ensure the code follows the linting and formatting rules (`pnpm run lint` and `pnpm run prettier`)
4. Commit your changes following the **Conventional Commits** specification
5. Push to the branch (`git push origin feature/your-feature`)
6. Open a Pull Request
1. **Fork** the repository.
2. **Create a new branch**: `git checkout -b feature/your-feature`.
3. **Make changes** and ensure your code passes linting and formatting checks: `pnpm run lint` and `pnpm run prettier`.
4. **Commit your changes** following the [Conventional Commits](#conventional-commits--branch-naming-convention) specification.
5. **Push** your branch: `git push origin feature/your-feature`.
6. **Open a Pull Request**.

For large changes, it's recommended to open an issue first to discuss your proposed changes.
For significant changes, its recommended to open an issue first to discuss the proposed updates.

## Development: Getting Started

1. Clone this repo
2. This project uses `pnpm` to manage and patch dependencies. Run `pnpm install` to configure the repository for building/development
3. Using either of the methods listed below, the extension will build to the `dist/` directory.
1. Clone this repository: `git clone https://github.com/Longhorn-Developers/UT-Registration-Plus.git`
2. **Node Version**: This project requires the Node.js version specified in `.nvmrc`. Use [nvm](https://github.com/nvm-sh/nvm) to install and manage the correct version:
```bash
nvm install
nvm use
```
_Note: Installing the wrong Node version can lead to errors during setup._
3. Install dependencies using `pnpm` (which manages and patches dependencies):
```bash
pnpm install
```

Once set up, the extension can be built to the `dist/` directory using the following methods:

### Development Builds

- Run `pnpm dev`
- Run the development server:
```bash
pnpm dev
```

> [!NOTE]
> Injected content such as extension content on UT pages is not properly styled, and are missing class stylings. When developing for these pages, use `NODE_ENV='development' pnpm run dev build --mode development -w` to build and watch for changes. This will ensure you are seeing an accurate representation of the extension.
> **Note**: Injected content on UT pages may not display correctly in development mode. To develop with accurate styles, use the following command:
>
> ```bash
> NODE_ENV='development' pnpm run dev build --mode development -w
> ```

### Production Builds

- Run `pnpm build`
- To generate production builds:
```bash
pnpm build
```

<details>
<summary>Beta builds</summary>
Use `BETA=true pnpm build` to build a beta build.
<summary>Beta Builds</summary>

Use `BETA=true pnpm build` to generate a beta build.

</details>

## Development: Loading the Extension Manually
## Loading the Extension Manually

Open [chrome://extensions](chrome://extensions), ensure you have 'Developer Mode' enabled, and click 'Load unpacked'.
To load the extension manually in Chrome:

Navigate to the `dist/` folder, and click 'select' to import the extension.
1. Open `chrome://extensions`.
2. Enable 'Developer Mode'.
3. Click 'Load unpacked'.
4. Navigate to the `dist/` directory and select it.

## Bug Reporting

If you encounter any bugs or issues, please submit a detailed report in the [Issues](https://github.com/Longhorn-Developers/UT-Registration-Plus/issues) section. Be sure to include:
If you encounter bugs or issues, please report them in the [Issues](https://github.com/Longhorn-Developers/UT-Registration-Plus/issues) section, including:

- A descriptive title
- Steps to reproduce the issue
- Expected behavior
- Screenshots or logs (if applicable)
- A clear, descriptive title
- Steps to reproduce the issue
- Expected behavior
- Screenshots or logs (if applicable)

We will address issues as promptly as possible.
We aim to address issues promptly.

## Conventional Commits & Branch Naming Convention

We follow the **Conventional Commits** specification for commit messages. This helps us maintain a consistent history, enabling automated versioning and changelog generation.
We follow the **Conventional Commits** specification for commit messages. This ensures a consistent commit history and enables automated versioning and changelog generation.

### Commit Messages

Please format your commit messages as follows:
Follow this structure for commit messages:

```
<type>(<scope>): <subject>
```

Where:

- **type**: One of the following:
- `feat`: A new feature
- `fix`: A bug fix
- `docs`: Documentation changes
- `style`: Code formatting (white-space, formatting, missing semi-colons, etc.)
- `refactor`: Code restructuring (neither fixes a bug nor adds a feature)
- `test`: Adding or modifying tests
- `chore`: Changes to the build process or auxiliary tools
- **type**: One of the following:
- `feat`: A new feature
- `fix`: A bug fix
- `docs`: Documentation updates
- `style`: Code formatting changes (whitespace, semicolons, etc.)
- `refactor`: Code restructuring (without adding features or fixing bugs)
- `test`: Adding or modifying tests
- `chore`: Maintenance tasks or build process changes

Example:

```
feat(auth): add login functionality
fix(ui): correct button alignment
fix(ui): align buttons in navbar
```

### Branch Naming
Expand All @@ -128,34 +161,36 @@ Branch names should follow the format:

Examples:

- `feat/user-login`
- `fix/navbar-layout`
- `docs/update-readme`
- `feat/user-login`
- `fix/navbar-layout`
- `docs/update-readme`

## License

This project is licensed under the MIT License. See the [LICENSE](./LICENSE.md) file for more details.
This project is licensed under the MIT License. See the [LICENSE](./LICENSE.md) for more details.

## Code of Conduct [TODO]
## Code of Conduct

We adhere to a strict code of conduct. By participating, you are expected to uphold this code. Please read [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md) for details.
We maintain a strict code of conduct. By contributing, you agree to adhere to the rules outlined in [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md).

## Acknowledgements

This project leverages several powerful open-source tools and libraries. Special thanks to the developers behind:
- React 18
- TypeScript
- Vite 5
- ESLint
- Prettier
- Storybook
- Semantic-Release
- [chrome-extension-toolkit](https://github.com/sghsri/chrome-extension-toolkit)
- [UT_Grade_Parser](https://github.com/doprz/UT_Grade_Parser)
- [eslint-plugin-import-essentials](https://github.com/doprz/eslint-plugin-import-essentials)
- Figma designs by @IsaDavRod
- Custom pnpm patches by @Razboy20
- UT Registration Plus v1 with @sghsri as the original author for creating the foundation of UTRP and impacting thousands of UT students positively via his Chrome Extension
- [UT Registration Planner](https://github.com/doprz/UT-Registration-Planner) was archived and it's developer @doprz joined UT Registration Plus in 2023
- [Longhorn Developers](https://github.com/Longhorn-Developers) organization was created in 2024 for further development of UTRP and other student-led projects.
- All UTRP devs, beta testers, and anyone who helped support this project
Special thanks to the developers and contributors behind these amazing tools and libraries:

- React v20.9.0 (LTS)
- TypeScript
- Vite 5
- UnoCSS
- ESLint
- Prettier
- Storybook
- Figma
- Semantic-Release
- [chrome-extension-toolkit](https://github.com/sghsri/chrome-extension-toolkit)
- [UT_Grade_Parser](https://github.com/doprz/UT_Grade_Parser)
- [eslint-plugin-import-essentials](https://github.com/doprz/eslint-plugin-import-essentials)
- [UT Registration Plus v1.2.2.7](https://github.com/Longhorn-Developers/UT-Registration-Plus/tree/legacy) by @sghsri
- [UT Registration Planner](https://github.com/doprz/UT-Registration-Planner) by @doprz
- [Figma Designs](https://www.figma.com/design/8tsCay2FRqctrdcZ3r9Ahw/UTRP) by @IsaDavRod
- [Longhorn Developers](https://github.com/Longhorn-Developers) - established in 2024
- The UTRP devs, beta testers, and all supporters of the project!
48 changes: 48 additions & 0 deletions gulpfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
// (Thanks go to https://github.com/pnd280/complexity/blob/alpha/gulpfile.js)

import cp from 'child_process';
import fs from 'fs';
import gulp from 'gulp';
import gulpZip from 'gulp-zip';
import { createRequire } from 'module';

// Make sure sentry is configured https://docs.sentry.io/platforms/javascript/sourcemaps/uploading/typescript/#2-configure-sentry-cli
function instrumentWithSentry() {
return cp.exec('sentry-cli sourcemaps inject dist/ && sentry-cli sourcemaps upload dist/');
}

function zipDist() {
const require = createRequire(import.meta.url);
const manifest = require('./package.json');
const zipFileName = `${manifest.name.replaceAll(' ', '-')}-${manifest.version}.zip`;

return gulp
.src('dist/**', {
encoding: false,
})
.pipe(gulpZip(zipFileName))
.pipe(gulp.dest('package'));
}

const zip = gulp.series(instrumentWithSentry, zipDist);

// Temp fix for CSP on Chrome 130
// Manually remove them because there is no option to disable use_dynamic_url on @crxjs/vite-plugin
function forceDisableUseDynamicUrl(done) {
const require = createRequire(import.meta.url);
const manifest = require('./dist/manifest.json');

manifest.web_accessible_resources.forEach(resource => {
delete resource.use_dynamic_url;
});

if (!fs.existsSync('./dist/manifest.json')) {
return done();
}

fs.writeFileSync('./dist/manifest.json', JSON.stringify(manifest, null, 2));

done();
}

export { forceDisableUseDynamicUrl, zip };
Binary file added images/UTRP-Demo.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/UTRP_Social-Preview_Prod.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 7 additions & 0 deletions images/UTRP_Social-Preview_Prod.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading