Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
105 commits
Select commit Hold shift + click to select a range
34367e8
added an Unresolved button underneath each question
brendayyu Feb 7, 2026
e629d9f
feat: add resolved/unresolved toggle button to posts
brendayyu Feb 7, 2026
843b42c
fixed a syntax error
brendayyu Feb 7, 2026
23c6b82
limited the resolve/unresolve function for questions/comments only, a…
brendayyu Feb 7, 2026
83662b9
removed unusual api
brendayyu Feb 8, 2026
93ae114
Feat: Backend logic for TA resolve and archive
PDFour4 Feb 8, 2026
cde0116
Merge remote-tracking branch 'origin/frontend' into backend
PDFour4 Feb 8, 2026
a58777b
Feat: Complete TA Resolve Question (Backend + UI + Permissions)
PDFour4 Feb 8, 2026
6976995
Added post-queue back from the file
bendnema Feb 8, 2026
ae6c5b7
Adjust post.tpl to fix frontend not remebering
bendnema Feb 8, 2026
d594637
Add TA resolve feature for topics in category 4
bendnema Feb 9, 2026
e46e1e7
Updated the view for students to see if their question is resolved or…
PDFour4 Feb 10, 2026
97ec8f3
Merge branch 'backend' into coverage-testing
PDFour4 Feb 10, 2026
919330b
Added automatic unresolved filter for admins/ta and unresolved/resolv…
PDFour4 Feb 10, 2026
fa4cba1
Attempted to fix plugins.yaml url issue
PDFour4 Feb 10, 2026
b9b06f2
created post-supporting button in UI, post-support badge, added persi…
pskodr Feb 10, 2026
d1d3f31
Removed dead code that returned null
bendnema Feb 10, 2026
ec5bc77
ta-resolve test covers all the testing for plugin ta-resolve using U…
bendnema Feb 10, 2026
0e85a10
fixed global view of supported answer badges, so all users see badge …
pskodr Feb 10, 2026
e9c4ec1
Merge branch 'coverage-testing' of https://github.com/CMU-313/nodebb-…
pskodr Feb 10, 2026
4f14b5a
Fixed approved by instructor badge on post to be after the time of post
PDFour4 Feb 11, 2026
76bf730
Merge pull request #39 from CMU-313/check-branch
PDFour4 Feb 11, 2026
78ef802
Fixed bug dealing with duplicated approval badge due to the front end…
PDFour4 Feb 11, 2026
928a77b
Merge remote-tracking branch 'refs/remotes/origin/main'
PDFour4 Feb 20, 2026
189ed36
Feat: Implement backend data obfuscation and tests for Anonymous Post…
PDFour4 Feb 20, 2026
07dbfe9
feat(u5): add viewers dropdown UI to announcement posts
brendayyu Feb 21, 2026
afb3e76
feat(u5): implement viewers tracking frontend logic
brendayyu Feb 21, 2026
515efd9
feat(u5): integrate viewers module into topic page
brendayyu Feb 21, 2026
2c1c724
style(u5): add styling for viewers dropdown
brendayyu Feb 21, 2026
ae0376c
rremoved unused api
brendayyu Feb 21, 2026
7827828
rremoved unused api
brendayyu Feb 21, 2026
b629b6c
added url to properties to pass test
brendayyu Feb 21, 2026
0eeea24
Add coverage tests for ta-resolve plugin
bendnema Feb 22, 2026
7055e97
Creating backend for Userstory 5
bendnema Feb 22, 2026
e79b6c2
Add viewers module initialization to topic.js
bendnema Feb 23, 2026
75d0c5d
Implement viewers functionality for announcements with tracking and d…
bendnema Feb 23, 2026
e496ea8
Add test for handling deleted users in viewers list
bendnema Feb 23, 2026
5536a53
Add viewers dropdown for announcements, visible to admins and TAs
bendnema Feb 23, 2026
2709c33
backend variable fix for anonymous posting
pskodr Feb 24, 2026
478fecc
front-end UI changes to Anonymous posting for quick replies posts
pskodr Feb 24, 2026
4f69a6e
fixed quick replies anonymous drop down's location, by using local st…
pskodr Feb 24, 2026
341eefe
fixed anonymous for specific posts using per-post cloning, eliminatin…
pskodr Feb 24, 2026
ba920b2
fix allowing admins to see all posts as non-anonymous regardless of i…
pskodr Feb 24, 2026
d55d458
removed api from dependencies, not needed, fixing lint errors
pskodr Feb 24, 2026
46d31b4
fixed npm run test and mocha test issues
pskodr Feb 24, 2026
2660ace
Merge branch 'US5-Backend' of https://github.com/CMU-313/nodebb-sprin…
brendayyu Feb 24, 2026
8c4309c
fixed lint & run test errors for backend testing coverage for US4
pskodr Feb 24, 2026
0eca759
backend test fixes in test/ta-resolve.js + front-end testing in test/…
pskodr Feb 24, 2026
1237225
Refactor viewers tracking logic to ensure student views are logged in…
bendnema Feb 24, 2026
043cb1d
Change exit behavior in setup command to use process.exit(0) instead …
bendnema Feb 24, 2026
ddc31c6
test: add frontend unit tests for viewers.js
brendayyu Feb 25, 2026
44471bf
fix: resolve unreachable trackPostView() bug and add frontend tests
brendayyu Feb 25, 2026
63017f8
Merge remote-tracking branch 'origin/u5-frontend-testing' into US5-fr…
bendnema Feb 27, 2026
0f0efb0
Corrected indentation of viewers.js
bendnema Feb 27, 2026
8b49975
Removed duplicated url code
bendnema Feb 27, 2026
11d02a2
Apply suggestion from @Copilot
brendayyu Feb 27, 2026
33d1835
Initial plan
Copilot Feb 27, 2026
9d27b3b
Apply suggestions from code review
brendayyu Feb 27, 2026
662938a
Apply PR review feedback: security, redundant calls, and code quality…
Copilot Feb 27, 2026
20b5361
Merge pull request #71 from CMU-313/u5-frontend-testing
PDFour4 Feb 27, 2026
eb16136
Apply suggestion from @Copilot
pskodr Feb 28, 2026
0439fd2
Merge branch 'u4-frontend' into copilot/sub-pr-69
PDFour4 Feb 28, 2026
648491c
Merge pull request #72 into #69
pskodr Feb 28, 2026
a29f65a
Revert "fixed lint & run test errors for backend testing coverage for…
pskodr Feb 28, 2026
fc144c9
Revert "backend test fixes in test/ta-resolve.js + front-end testing …
pskodr Feb 28, 2026
bd65802
Merge remote-tracking branch 'refs/remotes/origin/main'
PDFour4 Feb 28, 2026
ea9ed76
Merge branch 'main' into u4-frontend
pskodr Feb 28, 2026
882eec1
Reapply "backend test fixes in test/ta-resolve.js + front-end testing…
pskodr Feb 28, 2026
89b8d71
Reapply "fixed lint & run test errors for backend testing coverage fo…
pskodr Feb 28, 2026
56e1d33
Fixed extra parameter issue in supportAnswer.js
PDFour4 Feb 28, 2026
1b63831
Merge branch 'main' into u4-frontend
PDFour4 Feb 28, 2026
bd6bab5
Fixed make-anon.js syntax issue
PDFour4 Feb 28, 2026
b6d38ee
Removed unsafe dev script make-anon.js. Not needed since tests are al…
PDFour4 Feb 28, 2026
624478f
Revert "backend test fixes in test/ta-resolve.js + front-end testing …
pskodr Feb 28, 2026
830e1ef
Revert "fixed lint & run test errors for backend testing coverage for…
pskodr Feb 28, 2026
d72531e
fixed lint errors and merge conflict
pskodr Feb 28, 2026
557197c
Merge branch 'debug-lint-u4' of https://github.com/CMU-313/nodebb-spr…
pskodr Feb 28, 2026
723e37d
finalize US2-US5 with 99% coverage, security fixes, and docs
PDFour4 Feb 28, 2026
28e98fe
Added the user guide markdown file
PDFour4 Feb 28, 2026
d883cb2
Merge remote-tracking branch 'refs/remotes/origin/u4-frontend' into u…
PDFour4 Feb 28, 2026
aa3e6d6
Merge pull request #69 from CMU-313/u4-frontend
PDFour4 Feb 28, 2026
a0b7aa2
Updated user root
bendnema Mar 9, 2026
300fd36
Added vm deploy.yml to workflows inside .github and made the required…
PDFour4 Mar 9, 2026
61bb98b
Merge pull request #73 from CMU-313/reci7
bendnema Mar 9, 2026
ed9538e
Merge remote-tracking branch 'refs/remotes/origin/main'
PDFour4 Mar 9, 2026
7989aa7
Add Docker config for application settings
bendnema Mar 9, 2026
7159a6a
Merge pull request #74 from CMU-313/reci7
bendnema Mar 9, 2026
f40d1c6
Begin build for environment since nodebb isn't starting the build
bendnema Mar 9, 2026
e49f624
Merge remote-tracking branch 'origin/reci7' into reci7
bendnema Mar 9, 2026
97dc1ce
Merge pull request #75 from CMU-313/reci7
bendnema Mar 9, 2026
a7913cb
Correct spelling of env
bendnema Mar 9, 2026
49f169c
Merge pull request #76 from CMU-313/reci7
bendnema Mar 9, 2026
d3b2a47
Corrected URL for access
bendnema Mar 9, 2026
6fbb24a
Merge pull request #77 from CMU-313/reci7
bendnema Mar 9, 2026
0604072
Removed env section so docker doesn't manually run build
bendnema Mar 9, 2026
09fefc1
Merge pull request #78 from CMU-313/reci7
bendnema Mar 9, 2026
7569471
Merge remote-tracking branch 'refs/remotes/origin/main'
PDFour4 Mar 9, 2026
a60519c
Merge pull request #79 from CMU-313/setup-ci-pipeline
PDFour4 Mar 9, 2026
042837c
chore: install Snyk and generate static security analysis artifact
PDFour4 Mar 11, 2026
43fbea0
ci: implement Snyk security analysis workflow on pull requests
PDFour4 Mar 16, 2026
0c22775
ci: set snyk to continue on error to bypass legacy core vulnerabilities
PDFour4 Mar 16, 2026
b273425
Fixed typo in package.json of the implemented tool
PDFour4 Mar 18, 2026
e2c17b6
Fixed version mismatch
PDFour4 Mar 18, 2026
f608028
Added fix for out of sync issues from package and package-lock files
PDFour4 Mar 18, 2026
29934ff
Fixed secret token missuse in workflow file
PDFour4 Mar 18, 2026
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
18 changes: 18 additions & 0 deletions .docker/config/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"url": "http://17313-team09.s3d.cmu.edu:4567",
"secret": "d1d17b11-96bb-4f8f-96f7-04ecd1175001",
"database": "redis",
"port": "4567",
"redis": {
"host": "redis",
"port": 6379,
"password": "",
"database": 0
},
"test_database": {
"host": "redis",
"port": "6379",
"password": "",
"database": "1"
}
}
36 changes: 36 additions & 0 deletions .github/workflows/VM Deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: VM Deploy NodeBB

on:
push:
branches:
- main
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}
cancel-in-progress: true

jobs:
build-and-deploy:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Set up Node.js version
uses: actions/setup-node@v3
with:
node-version: '20.17.0'

- name: Deploy via SSH
uses: appleboy/ssh-action@v1.2.1
with:
host: ${{ secrets.SERVER_IP }}
username: ${{ secrets.SERVER_ADMIN }}
password: ${{ secrets.ADMIN_PASSWORD }}
script: |
cd ${{ secrets.REPO_NAME }}
git pull origin main
docker compose down
docker compose -f docker-compose-redis.yml up --build -d
47 changes: 47 additions & 0 deletions .github/workflows/snyk-security.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Snyk Security Scan

on:
pull_request:
branches: [ "main" ]

jobs:
security-analysis:
runs-on: ubuntu-latest
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20' # Standard NodeBB LTS version

- name: Install dependencies
run: npm ci

# We only fail the build for HIGH severity issues to avoid blocking development for low-risk testing files
- name: Run Snyk Code (SAST)
if: ${{ env.SNYK_TOKEN != '' }}
run: |
set +e
npx snyk code test --severity-threshold=high
snyk_exit_code=$?

# Exit code 1 means vulnerabilities were found. Keep the workflow green,
# but surface the findings in job logs for visibility.
if [ "$snyk_exit_code" -eq 1 ]; then
echo "Snyk found vulnerabilities (non-blocking for this course project)."
exit 0
fi

# Exit code 0 means no issues; any other code means scan/tool failure.
if [ "$snyk_exit_code" -ne 0 ]; then
echo "Snyk scan failed to run correctly (exit code: $snyk_exit_code)."
exit "$snyk_exit_code"
fi
- name: Skip scan when SNYK_TOKEN is missing
if: ${{ env.SNYK_TOKEN == '' }}
run: echo "SNYK_TOKEN is not set, skipping Snyk Code scan."
38 changes: 38 additions & 0 deletions UserGuide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# NodeBB Custom Features User Guide

This guide outlines the custom features implemented to enhance the learning and communication experience for both students and instructional staff (Admins/TAs).

## 1. Anonymous Posting
Students can choose to mask their identity when asking questions or replying to topics to reduce the anxiety of participating in discussions.

* **How to use it:** When creating a post or replying, use the new dropdown menu and select **"Post as: Post anonymously"** instead of "Show my name".
* **Visibility Rules:**
* **Students:** See the post with a `?` profile picture and the username `Anonymous`.
* **Post Authors:** Always see their own real identity and avatar on their own anonymous posts.
* **Admins & TAs:** Always see the real identity and avatar of the student who posted, ensuring accountability.

## 2. TA Question Resolution
Instructional staff can mark questions as resolved to help triage student needs and keep the "Comments & Feedback" section organized.

* **How it works:** * Unresolved questions automatically float to the top of the topic list for Admins/TAs.
* When a staff member reviews a question, they can click the gray **"Unresolved"** button to toggle it to a green **"Resolved"** state.
* Resolved questions move to the bottom of the view for staff, keeping the queue clean.
* **Visibility:** Students can see the Resolved/Unresolved status of a post but cannot click or toggle the button themselves.

## 3. Instructor Endorsements ("Supported by Instructor")
Staff can officially endorse a student's answer or a particularly good post, signaling to the rest of the class that the information is accurate.

* **How to use it (Staff Only):** * Click the 3-dot dropdown menu on any post.
* Select **"Support Answer"**.
* A green **"Supported by Instructor"** badge will immediately appear on the post.
* To remove the endorsement, open the dropdown again and select **"Remove Support"**.
* **Visibility:** All users (students and staff) can see the green endorsement badge.

## 4. Announcement View Tracking
Instructors can verify which students have read important class announcements.

* **How it works:** * When a student opens a post in the "Announcements" category, their view is automatically logged with a timestamp.
* Staff views (Admins/TAs) are explicitly excluded from the tracking data.
* **How to view the data (Staff Only):** * Navigate to any main post in the Announcements category.
* Click the eye icon (👁️) next to the reply button.
* A dropdown will display a list of all students who have viewed the post, including their avatars, display names, and the exact time they viewed it.
1 change: 1 addition & 0 deletions docker-compose-redis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ version: '3.8'

services:
nodebb:
user: "0"
build: .
# image: ghcr.io/nodebb/nodebb:latest
restart: unless-stopped
Expand Down
Loading
Loading