Skip to content

Commit aee60bd

Browse files
[Documentation:Developer] Jeffrey Summer Report (#702)
1 parent 7394077 commit aee60bd

File tree

5 files changed

+67
-1
lines changed

5 files changed

+67
-1
lines changed

Gemfile.lock

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,7 @@ GEM
286286
PLATFORMS
287287
arm64-darwin-22
288288
arm64-darwin-23
289+
arm64-darwin-24
289290
x64-mingw-ucrt
290291
x86_64-linux
291292

_docs/developer/rensselaer_center_for_open_source/2025_Jeffrey_Cordero.md

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,69 @@ title: Jeffrey Cordero
33
category: Developer > Rensselaer Center for Open Source (RCOS) > Summer 2025
44
---
55

6-
coming soon
6+
During my time with Submitty, I was a key contributor to the open-source academic platform, working on full-stack development, infrastructure modernization, and system security. My core contributions included enhancements to Notifications, Rainbow Grades, WebSockets, CI/CD improvements, and various bug fixes. I also participated extensively in pull request reviews across the entire tech stack, which deepened my experience with collaborative development, engaging in design discussions, reviewing code at scale, and promoting practices that emphasize maintainability and reliability. The following sections highlight some of the most interesting features I had the opportunity to build this summer.
7+
8+
### Notification System Enhancements
9+
10+
To improve student communication, I implemented significant enhancements to Submitty’s notification system. These included automatic in-platform and email alerts when grades are released ([#10358](https://github.com/Submitty/Submitty/pull/10358)) and when new assignments become available ([#11897](https://github.com/Submitty/Submitty/pull/11897)). A reliable hourly cron job now ensures the timely delivery of these messages across all active courses.
11+
12+
```
13+
[Submitty sample] Grade Released: Grading Homework PDF
14+
Your grade is now available for Grades Released Homework in course
15+
SAMPLE.
16+
17+
Click here for more info: http://localhost:1511/courses/s25/sample/gradeable/grading_homework_pdf
18+
19+
--
20+
NOTE: This is an automated email notification, which is unable to receive replies.
21+
Please refer to the course syllabus for contact information for your teaching staff.
22+
Update your email notification settings for this course here: http://localhost:1511/courses/s25/sample/notifications/settings
23+
```
24+
25+
To support these improvements, I also built dedicated Cypress test suites for email delivery ([#11878](https://github.com/Submitty/Submitty/pull/11878)) and notification preferences ([#11913](https://github.com/Submitty/Submitty/pull/11913)). These tests lay the foundation for more robust future testing of the notification system.
26+
27+
<div style="text-align: center; max-width: 100%; margin: auto;">
28+
<img src="../../../images/RCOS_report/2025_Jeffrey_Cordero/cypress-notifications-testing-example.png" alt="Cypress Notification Testing" />
29+
</div>
30+
31+
### Rainbow Grades Nightly Build
32+
33+
Previously, the Rainbow Grades summary page could become outdated unless instructors manually triggered a rebuild. To streamline this process, I enhanced the nightly summary generation script to automatically trigger the build process before generating new summaries ([#11496](https://github.com/Submitty/Submitty/pull/11496)). As a result, students now have continuous access to up-to-date grade reports each day.
34+
35+
```bash
36+
$ python3 sbin/generate_grade_summaries.py f25 sample submitty_daemon
37+
Successfully selected the manual customization for f25.sample
38+
Successfully submitted the Rainbow Grades build process for f25.sample
39+
Successfully completed the Rainbow Grades build process for f25.sample
40+
Successfully generated grade summaries for f25.sample
41+
```
42+
43+
<div style="text-align: center; max-width: 100%; margin: auto;">
44+
<img src="../../../images/RCOS_report/2025_Jeffrey_Cordero/rainbow-grades-nightly-build.png" alt="Rainbow Grades Nightly Build" />
45+
</div>
46+
47+
### WebSocket Security & Testing
48+
49+
I addressed a critical security flaw in the platform's WebSocket server by implementing a token-based authorization system ([#11634](https://github.com/Submitty/Submitty/pull/11634)). Previously, any user with a direct URL and valid login credentials could access any WebSocket page, posing a considerable risk for real-time student-instructor communications.
50+
51+
To mitigate this, I designed a JSON Web Token (JWT)–based authorization layer. The web server now generates short-lived, multi-use tokens scoped to specific pages. These tokens ensure WebSocket connections are established only by authorized users with access managed through a sliding window mechanism that gracefully handles expired pages, reducing the average WebSocket authentication time by approximately 90%.
52+
53+
```json
54+
{
55+
"iat": 1753797357.504631,
56+
"iss": "https://submitty.org/",
57+
"sub": "instructor",
58+
"authorized_pages": {
59+
"f25-sample-defaults": 1753800957,
60+
"f25-sample-chatrooms-1": 1753800957,
61+
"f25-sample-polls-3-instructor": 1753800912
62+
},
63+
"expire_time": 1753800957
64+
}
65+
```
66+
67+
Alongside these changes, I introduced the platform’s first end-to-end WebSocket test suite in the Discussion Forum ([#11873](https://github.com/Submitty/Submitty/pull/11873)), which was part of a broader testing strategy including new PHP unit tests for backend logic and Cypress end-to-end tests to verify secure, token-based WebSocket connections.
68+
69+
<div style="text-align: center; max-width: 100%; margin: auto;">
70+
<img src="../../../images/RCOS_report/2025_Jeffrey_Cordero/cypress-websocket-testing-example.png" alt="Cypress WebSocket Testing" />
71+
</div>
495 KB
Loading
579 KB
Loading
322 KB
Loading

0 commit comments

Comments
 (0)