Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
276 commits
Select commit Hold shift + click to select a range
390d71a
Merge pull request #60 from SOURAV-ROY/ROY
SOURAV-ROY Nov 28, 2025
0f5eda1
feat: Refactor Swagger documentation, add example environment variabl…
SOURAV-ROY Dec 16, 2025
363bd8b
Merge pull request #62 from SOURAV-ROY/v2
SOURAV-ROY Dec 16, 2025
9ef2934
Merge pull request #63 from SOURAV-ROY/ROY
SOURAV-ROY Dec 16, 2025
affe002
docs: Add comprehensive API reference documentation
SOURAV-ROY Dec 16, 2025
115c473
Update express dependency.
SOURAV-ROY Dec 16, 2025
e719085
Merge pull request #64 from SOURAV-ROY/v2
SOURAV-ROY Dec 16, 2025
8c92e98
Merge pull request #65 from SOURAV-ROY/ROY
SOURAV-ROY Dec 16, 2025
6c523e9
chore(deps): bump the npm_and_yarn group across 1 directory with 2 up…
dependabot[bot] Dec 19, 2025
30f2b44
docs: Add System Design documentation and update README with new sect…
SOURAV-ROY Jan 5, 2026
8ad88ba
Merge pull request #67 from SOURAV-ROY/v2
SOURAV-ROY Jan 5, 2026
cd09a0c
Merge pull request #68 from SOURAV-ROY/ROY
SOURAV-ROY Jan 5, 2026
49ed241
Merge pull request #66 from SOURAV-ROY/dependabot/npm_and_yarn/npm_an…
SOURAV-ROY Jan 22, 2026
389cf1d
chore(deps): bump the npm_and_yarn group across 1 directory with 2 up…
dependabot[bot] Jan 22, 2026
9343f6c
Merge pull request #69 from SOURAV-ROY/dependabot/npm_and_yarn/npm_an…
SOURAV-ROY Jan 24, 2026
6655580
chore(deps): bump qs in the npm_and_yarn group across 1 directory
dependabot[bot] Feb 14, 2026
abda0d7
Merge pull request #70 from SOURAV-ROY/dependabot/npm_and_yarn/npm_an…
SOURAV-ROY Feb 14, 2026
d22c1ab
chore(deps): bump the npm_and_yarn group across 1 directory with 1 up…
dependabot[bot] Feb 28, 2026
f25c787
Merge pull request #71 from SOURAV-ROY/dependabot/npm_and_yarn/npm_an…
SOURAV-ROY Mar 3, 2026
85cf3bc
Merge pull request #72 from SOURAV-ROY/v2
SOURAV-ROY Mar 4, 2026
66c8f1a
Merge pull request #73 from SOURAV-ROY/ROY
SOURAV-ROY Mar 4, 2026
e9b9724
docs: Add comprehensive system design documentation and an environmen…
SOURAV-ROY Mar 9, 2026
4e3df60
Merge pull request #74 from SOURAV-ROY/v2
SOURAV-ROY Mar 9, 2026
7ce0f30
Merge pull request #75 from SOURAV-ROY/ROY
SOURAV-ROY Mar 9, 2026
41c4279
chore(deps-dev): bump picomatch
dependabot[bot] Mar 26, 2026
4fcdcb5
Merge pull request #76 from SOURAV-ROY/dependabot/npm_and_yarn/npm_an…
SOURAV-ROY Mar 31, 2026
0e44dc7
chore(deps): bump the npm_and_yarn group across 1 directory with 2 up…
dependabot[bot] Mar 31, 2026
38c3404
Merge pull request #77 from SOURAV-ROY/dependabot/npm_and_yarn/npm_an…
SOURAV-ROY Mar 31, 2026
3396c2e
chore(deps): bump lodash in the npm_and_yarn group across 1 directory
dependabot[bot] Apr 10, 2026
e80bd97
Merge pull request #78 from SOURAV-ROY/dependabot/npm_and_yarn/npm_an…
SOURAV-ROY Apr 13, 2026
9640c7e
chore(deps): bump nodemailer
dependabot[bot] Apr 13, 2026
b690795
Merge pull request #79 from SOURAV-ROY/dependabot/npm_and_yarn/npm_an…
SOURAV-ROY Apr 17, 2026
d540b1f
chore(deps): bump mongoose in the npm_and_yarn group across 1 directory
dependabot[bot] May 7, 2026
8af8837
Merge pull request #80 from SOURAV-ROY/dependabot/npm_and_yarn/npm_an…
SOURAV-ROY May 10, 2026
0831f94
chore(deps): bump @babel/plugin-transform-modules-systemjs
dependabot[bot] May 10, 2026
3cf954b
Merge pull request #81 from SOURAV-ROY/dependabot/npm_and_yarn/npm_an…
SOURAV-ROY May 10, 2026
a6b7fdd
chore(deps): bump qs in the npm_and_yarn group across 1 directory
dependabot[bot] May 23, 2026
4919198
Merge pull request #82 from SOURAV-ROY/dependabot/npm_and_yarn/npm_an…
SOURAV-ROY Jun 7, 2026
5207455
Potential fix for code scanning alert no. 17: Clear-text logging of s…
SOURAV-ROY Jun 7, 2026
ddfc813
Merge pull request #83 from SOURAV-ROY/alert-autofix-17
SOURAV-ROY Jun 7, 2026
a395ad5
chore(deps): bump joi in the npm_and_yarn group across 1 directory
dependabot[bot] Jun 12, 2026
cb5bfb0
Merge pull request #84 from SOURAV-ROY/dependabot/npm_and_yarn/npm_an…
SOURAV-ROY Jun 12, 2026
9ebe30c
Merge pull request #86 from SOURAV-ROY/v2
SOURAV-ROY Jun 15, 2026
d2f4c3f
Merge pull request #87 from SOURAV-ROY/IO
SOURAV-ROY Jun 15, 2026
e84797f
chore(deps): bump nodemailer
dependabot[bot] Jun 19, 2026
78bf4e9
Merge pull request #88 from SOURAV-ROY/dependabot/npm_and_yarn/npm_an…
SOURAV-ROY Jun 19, 2026
cd9ebc7
chore(deps): bump the npm_and_yarn group across 1 directory with 2 up…
dependabot[bot] Jun 19, 2026
022b1fd
Merge pull request #89 from SOURAV-ROY/dependabot/npm_and_yarn/npm_an…
SOURAV-ROY Jun 19, 2026
1c87e8e
chore(deps): bump morgan in the npm_and_yarn group across 1 directory
dependabot[bot] Jul 10, 2026
0203177
Merge pull request #90 from SOURAV-ROY/dependabot/npm_and_yarn/npm_an…
SOURAV-ROY Jul 11, 2026
7ef44d7
chore(deps): bump body-parser
dependabot[bot] Jul 23, 2026
cebd920
Merge pull request #91 from SOURAV-ROY/dependabot/npm_and_yarn/npm_an…
SOURAV-ROY Jul 23, 2026
fb755cb
chore(deps): bump mongoose in the npm_and_yarn group across 1 directory
dependabot[bot] Jul 28, 2026
917d37e
Merge pull request #92 from SOURAV-ROY/dependabot/npm_and_yarn/npm_an…
SOURAV-ROY Aug 9, 2026
6c4174f
chore(deps): bump the npm_and_yarn group across 1 directory with 1 up…
dependabot[bot] Aug 9, 2026
92e4751
Merge pull request #93 from SOURAV-ROY/dependabot/npm_and_yarn/npm_an…
SOURAV-ROY Aug 9, 2026
71d4f16
docs: provide comprehensive and fully synthesized project documentation
google-labs-jules[bot] Aug 13, 2026
1447913
Merge pull request #94 from SOURAV-ROY/documentation-extraction-13289…
SOURAV-ROY Aug 13, 2026
3251cc6
🛡️ Sentinel: Fix potential DoS on deleted users and enforce productio…
google-labs-jules[bot] Aug 14, 2026
abfe838
Fix missing await on password update & enforce production secrets
google-labs-jules[bot] Aug 15, 2026
1d3bda3
Merge pull request #95 from SOURAV-ROY/sentinel/fix-user-auth-crash-a…
SOURAV-ROY Aug 16, 2026
4acc72a
Merge pull request #96 from SOURAV-ROY/jules-fix-session-secret-and-p…
SOURAV-ROY Aug 16, 2026
1f58362
fix(security): prevent privilege escalation during public user regist…
google-labs-jules[bot] Aug 17, 2026
57b3032
🛡️ Sentinel: Add rate limiting to forgot password endpoint
google-labs-jules[bot] Aug 18, 2026
3827325
Merge pull request #99 from SOURAV-ROY/sentinel/forgot-password-rate-…
SOURAV-ROY Aug 18, 2026
90e734e
fix(security): sanitize MongoDB operator injection in requests
google-labs-jules[bot] Aug 20, 2026
c1775b7
🛡️ Sentinel: Add rate limiting to reset password endpoint
google-labs-jules[bot] Aug 21, 2026
dd6046f
fix(auth): prevent email enumeration and user data leakage in forgotP…
google-labs-jules[bot] Aug 22, 2026
f4a7844
🛡️ Sentinel: Fix NoSQL query injection protection
google-labs-jules[bot] Aug 23, 2026
020c09d
🛡️ Sentinel: Add input validation for reset password endpoint
google-labs-jules[bot] Aug 24, 2026
42f25a1
Merge pull request #105 from SOURAV-ROY/sentinel/reset-password-input…
SOURAV-ROY Aug 24, 2026
eeda7e2
Merge pull request #103 from SOURAV-ROY/sentinel/prevent-forgot-passw…
SOURAV-ROY Aug 24, 2026
72466ac
🛡️ Sentinel: Add input validation for forgot password endpoint
google-labs-jules[bot] Aug 26, 2026
ea5019e
Merge pull request #107 from SOURAV-ROY/sentinel/forgot-password-vali…
SOURAV-ROY Aug 26, 2026
f7f362d
security: add Joi validation middleware for auth update routes
google-labs-jules[bot] Aug 27, 2026
26fdf54
Merge pull request #108 from SOURAV-ROY/sentinel/add-user-details-and…
SOURAV-ROY Aug 27, 2026
54edc53
🛡️ Sentinel: [HIGH] Enable NoSQL query injection sanitization
google-labs-jules[bot] Aug 30, 2026
f8450c3
Merge pull request #110 from SOURAV-ROY/sentinel/nosql-injection-sani…
SOURAV-ROY Aug 30, 2026
486752e
Merge pull request #98 from SOURAV-ROY/fix/prevent-public-registratio…
SOURAV-ROY Aug 30, 2026
9dad58d
Fix file upload extension validation in bootcamp photo upload
google-labs-jules[bot] Aug 31, 2026
dc2228a
Merge pull request #111 from SOURAV-ROY/sentinel/file-upload-extensio…
SOURAV-ROY Aug 31, 2026
46b9636
🛡️ Sentinel: Fix path traversal risk in file upload
google-labs-jules[bot] Sep 1, 2026
340b478
fix(security): sanitize upload filename and path in bootcamp photo up…
google-labs-jules[bot] Sep 2, 2026
ee55a44
chore(deps-dev): bump @faker-js/faker
dependabot[bot] Sep 3, 2026
7fcbd2c
fix(auth): prevent admin self-deletion via user route
google-labs-jules[bot] Sep 3, 2026
2d06ada
Merge pull request #114 from SOURAV-ROY/dependabot/npm_and_yarn/npm_a…
SOURAV-ROY Sep 3, 2026
f029472
chore(deps): bump the npm_and_yarn group across 1 directory with 2 up…
dependabot[bot] Sep 3, 2026
b8f7061
fix(security): sanitize req.query against NoSQL injection
google-labs-jules[bot] Sep 4, 2026
77e59e6
Merge pull request #116 from SOURAV-ROY/dependabot/npm_and_yarn/npm_a…
SOURAV-ROY Sep 4, 2026
0ed0889
🛡️ Sentinel: Fix sensitive data leakage of reset tokens in User model
google-labs-jules[bot] Sep 5, 2026
0199571
Merge pull request #113 from SOURAV-ROY/fix/photo-upload-path-travers…
SOURAV-ROY Sep 5, 2026
eae7f11
security: add rate limiting to /login endpoint
google-labs-jules[bot] Sep 6, 2026
de05065
fix(security): sanitize NoSQL query operators in advancedResults midd…
google-labs-jules[bot] Sep 7, 2026
825ccc4
fix(security): add dedicated rate limiter for login endpoint
google-labs-jules[bot] Sep 8, 2026
e5e92a6
chore(deps): bump the npm_and_yarn group across 1 directory with 2 up…
dependabot[bot] Sep 9, 2026
5dd7731
Merge pull request #123 from SOURAV-ROY/dependabot/npm_and_yarn/npm_a…
SOURAV-ROY Sep 9, 2026
b57496e
Merge pull request #124 from SOURAV-ROY/v2
SOURAV-ROY Sep 9, 2026
d2c3093
Merge pull request #125 from SOURAV-ROY/IO
SOURAV-ROY Sep 9, 2026
b779fc6
fix: sanitize file upload path and improve photo upload handling
SOURAV-ROY Sep 9, 2026
4a029d6
Merge pull request #126 from SOURAV-ROY/v2
SOURAV-ROY Sep 9, 2026
002e40c
Merge pull request #127 from SOURAV-ROY/IO
SOURAV-ROY Sep 9, 2026
5c3c895
Merge pull request #120 from SOURAV-ROY/fix/advanced-results-nosql-in…
SOURAV-ROY Sep 9, 2026
c31bdc9
Fix: Include 'admin' in UserModel role enum schema validation
google-labs-jules[bot] Sep 10, 2026
1425d0d
chore(deps): bump the npm_and_yarn group across 1 directory with 2 up…
dependabot[bot] Sep 10, 2026
c8773a9
Merge pull request #129 from SOURAV-ROY/dependabot/npm_and_yarn/npm_a…
SOURAV-ROY Sep 10, 2026
6c93ae6
fix(security): add rate limiting to login endpoint
google-labs-jules[bot] Sep 11, 2026
7d4f657
Merge pull request #117 from SOURAV-ROY/sentinel/fix-query-nosql-inje…
SOURAV-ROY Sep 11, 2026
00f2030
fix(security): prevent mass assignment in bootcamp update
google-labs-jules[bot] Sep 12, 2026
a51fad3
Merge pull request #119 from SOURAV-ROY/sentinel/add-login-rate-limit…
SOURAV-ROY Sep 12, 2026
32c2480
Merge pull request #115 from SOURAV-ROY/fix/admin-self-deletion-guard…
SOURAV-ROY Sep 12, 2026
e34e32b
Merge pull request #112 from SOURAV-ROY/sentinel/sanitize-uploaded-fi…
SOURAV-ROY Sep 12, 2026
e03debb
fix(auth): add admin to User model role enum for RBAC
google-labs-jules[bot] Sep 13, 2026
532546c
Merge pull request #118 from SOURAV-ROY/sentinel/hide-reset-password-…
SOURAV-ROY Sep 13, 2026
4ff6e37
🛡️ Fix privilege escalation: Prevent admin self-demotion
google-labs-jules[bot] Sep 14, 2026
6db4bf9
fix: restore user field in Bootcamp schema and add safe optional chai…
google-labs-jules[bot] Sep 15, 2026
a82705d
Merge pull request #128 from SOURAV-ROY/jules-16271307957794249179-42…
SOURAV-ROY Sep 15, 2026
f062e25
Merge pull request #131 from SOURAV-ROY/jules-5414571216991583551-b4a…
SOURAV-ROY Sep 15, 2026
fc97302
Fix mass assignment in updateCourse controller
google-labs-jules[bot] Sep 16, 2026
7d40da0
Merge pull request #132 from SOURAV-ROY/sentinel/user-model-admin-rol…
SOURAV-ROY Sep 16, 2026
121b3c0
fix(security): prevent mass assignment on course and review updates
google-labs-jules[bot] Sep 17, 2026
cf6b0ce
Merge branch 'SOURAV' into sentinel/fix-bootcamp-user-schema-authoriz…
SOURAV-ROY Sep 17, 2026
7a98d29
Merge pull request #135 from SOURAV-ROY/fix/course-mass-assignment-pr…
SOURAV-ROY Sep 17, 2026
bceab60
security: prevent mass assignment vulnerability in review update
google-labs-jules[bot] Sep 18, 2026
bf284e2
fix(security): prevent mass assignment in updateReview controller
google-labs-jules[bot] Sep 19, 2026
2698536
perf: add indexes on Course and Review foreign keys
google-labs-jules[bot] Sep 19, 2026
aa6011b
Merge branch 'SOURAV' into sentinel/prevent-admin-self-demotion-91787…
SOURAV-ROY Sep 19, 2026
5abffdc
Merge pull request #133 from SOURAV-ROY/sentinel/prevent-admin-self-d…
SOURAV-ROY Sep 19, 2026
f37d270
fix(security): prevent mass assignment in updateReview controller
google-labs-jules[bot] Sep 20, 2026
5cc0b13
perf: execute count and find queries concurrently in advancedResults
google-labs-jules[bot] Sep 20, 2026
a9ca544
Fix mass assignment vulnerability in updateReview controller
google-labs-jules[bot] Sep 21, 2026
0a72b2b
⚡ Bolt: execute countDocuments and find concurrently in advancedResults
google-labs-jules[bot] Sep 21, 2026
160a3da
Merge pull request #137 from SOURAV-ROY/sentinel/fix-review-mass-assi…
SOURAV-ROY Sep 21, 2026
bab22c1
security: add rate limiting to public user registration endpoint
google-labs-jules[bot] Sep 22, 2026
89e3ef8
perf(middleware): execute count and data query concurrently in advanc…
google-labs-jules[bot] Sep 22, 2026
f54bdef
Merge branch 'SOURAV' into sentinel/fix-bootcamp-user-schema-authoriz…
SOURAV-ROY Sep 22, 2026
e9927e3
Merge pull request #147 from SOURAV-ROY/bolt/optimize-advanced-result…
SOURAV-ROY Sep 22, 2026
9570171
sec(reviews): enforce mass-assignment protection on review creation
google-labs-jules[bot] Sep 23, 2026
b4129f8
perf: apply .lean() to read-only queries across controllers and advan…
google-labs-jules[bot] Sep 23, 2026
2fbf11e
Merge branch 'SOURAV' into bolt-optimize-advanced-results-17181035364…
SOURAV-ROY Sep 23, 2026
b396597
Merge pull request #142 from SOURAV-ROY/bolt-optimize-advanced-result…
SOURAV-ROY Sep 23, 2026
2f1f9cd
Merge branch 'SOURAV' into bolt/optimize-advanced-results-concurrent-…
SOURAV-ROY Sep 23, 2026
e142800
Merge pull request #144 from SOURAV-ROY/bolt/optimize-advanced-result…
SOURAV-ROY Sep 23, 2026
85099f5
Fix mass assignment vulnerability in user controller endpoints
google-labs-jules[bot] Sep 24, 2026
d390c9b
⚡ Bolt: optimize read-only queries with .lean() to bypass document hy…
google-labs-jules[bot] Sep 24, 2026
4a02da5
Fix user update mass assignment vulnerability in user controller
google-labs-jules[bot] Sep 25, 2026
9b12db8
perf(middleware): chain .lean() in advancedResults query builder
google-labs-jules[bot] Sep 25, 2026
be0bc95
Merge pull request #153 from SOURAV-ROY/bolt-lean-advanced-results-97…
SOURAV-ROY Sep 25, 2026
7defdab
Merge pull request #152 from SOURAV-ROY/sentinel/fix-user-update-mass…
SOURAV-ROY Sep 25, 2026
5314426
Merge pull request #146 from SOURAV-ROY/auth-register-rate-limiter-14…
SOURAV-ROY Sep 25, 2026
17a0ee3
Merge branch 'SOURAV' into fix-user-controller-mass-assignment-878032…
SOURAV-ROY Sep 25, 2026
cf7cbeb
Merge pull request #150 from SOURAV-ROY/fix-user-controller-mass-assi…
SOURAV-ROY Sep 25, 2026
f25a6a4
🛡️ Sentinel: Add secure cookie options to logout endpoint
google-labs-jules[bot] Sep 26, 2026
75dbf13
⚡ Bolt: Bypass document hydration for auth lookup and read queries
google-labs-jules[bot] Sep 26, 2026
2911623
fix(security): handle missing file property in bootcamp photo upload
google-labs-jules[bot] Sep 27, 2026
d01fbe7
⚡ Bolt: Use .lean() on read-only single resource and nested list queries
google-labs-jules[bot] Sep 27, 2026
29a020d
Merge branch 'SOURAV' into fix/review-mass-assignment-vulnerability-1…
SOURAV-ROY Sep 27, 2026
5802142
Merge pull request #143 from SOURAV-ROY/fix/review-mass-assignment-vu…
SOURAV-ROY Sep 27, 2026
bb26321
fix(auth): enforce sameSite strict and path matching on JWT cookies
google-labs-jules[bot] Sep 28, 2026
ad9dc7b
⚡ Bolt: Add indexes on Course foreign keys and chain .lean() on queries
google-labs-jules[bot] Sep 28, 2026
4c8b149
Merge branch 'SOURAV' into sentinel/add-login-rate-limiting-864229351…
SOURAV-ROY Sep 28, 2026
22fe55c
Merge pull request #158 from SOURAV-ROY/sentinel/enhance-auth-cookie-…
SOURAV-ROY Sep 28, 2026
1cd457c
Merge branch 'SOURAV' into sentinel/fix-review-mass-assignment-159602…
SOURAV-ROY Sep 28, 2026
f2a8f1f
Merge pull request #141 from SOURAV-ROY/sentinel/fix-review-mass-assi…
SOURAV-ROY Sep 28, 2026
ee91a9b
Merge branch 'SOURAV' into bolt-add-foreign-key-indexes-7574328150735…
SOURAV-ROY Sep 28, 2026
c0f3676
Merge pull request #140 from SOURAV-ROY/bolt-add-foreign-key-indexes-…
SOURAV-ROY Sep 28, 2026
61ad2d5
Merge branch 'SOURAV' into fix/review-mass-assignment-272198833772766…
SOURAV-ROY Sep 28, 2026
476c4c1
Merge pull request #139 from SOURAV-ROY/fix/review-mass-assignment-27…
SOURAV-ROY Sep 28, 2026
e1015df
security: add unit test coverage and documentation for authentication…
google-labs-jules[bot] Sep 29, 2026
2a0de94
⚡ Bolt: Bypassing Mongoose document hydration with .lean() on read-on…
google-labs-jules[bot] Sep 29, 2026
67088cd
Merge branch 'SOURAV' into sentinel/nosql-injection-sanitization-1734…
SOURAV-ROY Sep 29, 2026
d753833
Merge pull request #101 from SOURAV-ROY/sentinel/nosql-injection-sani…
SOURAV-ROY Sep 29, 2026
ea6b0fb
Merge branch 'SOURAV' into sentinel/reset-password-rate-limiting-9562…
SOURAV-ROY Sep 29, 2026
79bb7a6
Merge pull request #102 from SOURAV-ROY/sentinel/reset-password-rate-…
SOURAV-ROY Sep 29, 2026
de80be9
Merge branch 'SOURAV' into fix/mass-assignment-courses-reviews-130996…
SOURAV-ROY Sep 29, 2026
58e3c95
Merge pull request #136 from SOURAV-ROY/fix/mass-assignment-courses-r…
SOURAV-ROY Sep 29, 2026
1f99daf
Merge branch 'SOURAV' into sentinel/login-rate-limiting-1202666185313…
SOURAV-ROY Sep 29, 2026
28d1e43
Merge pull request #121 from SOURAV-ROY/sentinel/login-rate-limiting-…
SOURAV-ROY Sep 29, 2026
1b3eb8d
Merge branch 'SOURAV' into sentinel-nosql-injection-fix-1555751739878…
SOURAV-ROY Sep 29, 2026
5a0dce3
Merge pull request #104 from SOURAV-ROY/sentinel-nosql-injection-fix-…
SOURAV-ROY Sep 29, 2026
0225c02
chore(deps): bump the npm_and_yarn group across 1 directory with 4 up…
dependabot[bot] Sep 30, 2026
0d409bb
Fix: add rate limiting to password reset endpoint
google-labs-jules[bot] Sep 30, 2026
bd86764
Merge pull request #163 from SOURAV-ROY/fix/rate-limit-reset-password…
SOURAV-ROY Sep 30, 2026
de127c3
⚡ Bolt: Bypass Mongoose document hydration in protect middleware
google-labs-jules[bot] Sep 30, 2026
a42419a
Merge branch 'SOURAV' into sentinel/fix-bootcamp-user-schema-authoriz…
SOURAV-ROY Sep 30, 2026
60b522a
Merge pull request #134 from SOURAV-ROY/sentinel/fix-bootcamp-user-sc…
SOURAV-ROY Sep 30, 2026
5714397
🛡️ Sentinel: Fix unhandled TypeError DoS in authorization checks
google-labs-jules[bot] Oct 1, 2026
71beb6a
Merge pull request #148 from SOURAV-ROY/jules-6280217503985493061-6b1…
SOURAV-ROY Oct 1, 2026
b1de04d
perf: add .lean() to read-only course and review queries
google-labs-jules[bot] Oct 1, 2026
e336b46
Merge branch 'SOURAV' into bolt/lean-queries-optimization-40744363834…
SOURAV-ROY Oct 1, 2026
dcf484a
fix(security): prevent unhandled TypeError DoS in course and review a…
google-labs-jules[bot] Oct 2, 2026
d10523d
Merge pull request #149 from SOURAV-ROY/bolt/lean-queries-optimizatio…
SOURAV-ROY Oct 2, 2026
cf98cae
⚡ Bolt: optimize getMe query with lean()
google-labs-jules[bot] Oct 2, 2026
e85d904
Merge branch 'SOURAV' into bolt/optimize-read-only-queries-lean-16373…
SOURAV-ROY Oct 2, 2026
15e9775
Merge pull request #151 from SOURAV-ROY/bolt/optimize-read-only-queri…
SOURAV-ROY Oct 2, 2026
d09b631
Merge branch 'SOURAV' into jules/logout-cookie-security-fix-986933168…
SOURAV-ROY Oct 2, 2026
6743289
Merge pull request #154 from SOURAV-ROY/jules/logout-cookie-security-…
SOURAV-ROY Oct 2, 2026
b800125
Merge branch 'SOURAV' into bolt-optimize-read-queries-lean-7712983139…
SOURAV-ROY Oct 2, 2026
2b1cfcd
Merge pull request #155 from SOURAV-ROY/bolt-optimize-read-queries-le…
SOURAV-ROY Oct 2, 2026
252f3e0
Merge pull request #156 from SOURAV-ROY/sentinel/fix-bootcamp-photo-u…
SOURAV-ROY Oct 2, 2026
78aec05
Merge branch 'SOURAV' into bolt/optimize-readonly-controller-queries-…
SOURAV-ROY Oct 2, 2026
5187dfd
Merge pull request #157 from SOURAV-ROY/bolt/optimize-readonly-contro…
SOURAV-ROY Oct 2, 2026
9e6e662
Fix mass assignment and payload property unsetting in updateDetails
google-labs-jules[bot] Oct 3, 2026
1674596
⚡ Bolt: index Bootcamp.user foreign key & optimize existence query
google-labs-jules[bot] Oct 3, 2026
f607994
Merge branch 'SOURAV' into bolt-optimize-course-indexes-lean-18199896…
SOURAV-ROY Oct 3, 2026
9bd1783
Merge pull request #159 from SOURAV-ROY/bolt-optimize-course-indexes-…
SOURAV-ROY Oct 3, 2026
15d585e
Merge branch 'SOURAV' into sentinel/add-login-rate-limiting-864229351…
SOURAV-ROY Oct 3, 2026
09a8050
Merge pull request #130 from SOURAV-ROY/sentinel/add-login-rate-limit…
SOURAV-ROY Oct 3, 2026
9882e46
Enhance seeder functionality and optimize database interactions
SOURAV-ROY Oct 3, 2026
54937c9
Refactor configuration and documentation for clarity and consistency
SOURAV-ROY Oct 3, 2026
7054f88
Enhance Bootcamp geocoding and improve CSRF protection in tests
SOURAV-ROY Oct 3, 2026
da52554
Merge pull request #172 from SOURAV-ROY/v2
SOURAV-ROY Oct 3, 2026
07875d9
fix(security): enforce rate limiting on user registration route
google-labs-jules[bot] Oct 4, 2026
acce203
Refactor seeder logic and enhance error handling
SOURAV-ROY Oct 4, 2026
3bd2ece
Merge pull request #175 from SOURAV-ROY/v2
SOURAV-ROY Oct 4, 2026
a0e337a
Merge pull request #173 from SOURAV-ROY/IO
SOURAV-ROY Oct 4, 2026
55b4d03
⚡ Bolt: index Bootcamp user foreign key and optimize existence queries
google-labs-jules[bot] Oct 4, 2026
b648ebd
Update README.md to enhance project documentation and setup instructions
SOURAV-ROY Oct 4, 2026
eef9900
Merge pull request #177 from SOURAV-ROY/v2
SOURAV-ROY Oct 4, 2026
8eee580
Merge pull request #178 from SOURAV-ROY/IO
SOURAV-ROY Oct 4, 2026
c1b552f
Merge pull request #160 from SOURAV-ROY/sentinel/protect-middleware-s…
SOURAV-ROY Oct 4, 2026
8f92d1c
Merge pull request #162 from SOURAV-ROY/dependabot/npm_and_yarn/npm_a…
SOURAV-ROY Oct 4, 2026
ceaf6f4
Fix unhandled TypeError DoS in course and review ownership checks
google-labs-jules[bot] Oct 5, 2026
d2f6052
perf: select _id and use .lean for published bootcamp check
google-labs-jules[bot] Oct 5, 2026
35ad08a
Merge branch 'SOURAV' into bolt/optimize-read-only-queries-lean-72744…
SOURAV-ROY Oct 5, 2026
6288bd2
Merge pull request #161 from SOURAV-ROY/bolt/optimize-read-only-queri…
SOURAV-ROY Oct 5, 2026
33b2479
Merge branch 'SOURAV' into bolt-optimize-protect-middleware-lean-7212…
SOURAV-ROY Oct 5, 2026
eae8d9b
Merge pull request #164 from SOURAV-ROY/bolt-optimize-protect-middlew…
SOURAV-ROY Oct 5, 2026
86ba944
Merge pull request #165 from SOURAV-ROY/sentinel/fix-authorization-op…
SOURAV-ROY Oct 5, 2026
7c215aa
Merge branch 'SOURAV' into jules-8561381637158028542-972572f0
SOURAV-ROY Oct 6, 2026
d4917da
Merge pull request #166 from SOURAV-ROY/jules-8561381637158028542-972…
SOURAV-ROY Oct 6, 2026
8f17df6
Merge branch 'SOURAV' into bolt/lean-getme-query-16423295905110020186
SOURAV-ROY Oct 6, 2026
7439902
Merge pull request #168 from SOURAV-ROY/bolt/lean-getme-query-1642329…
SOURAV-ROY Oct 6, 2026
082ec97
Merge branch 'SOURAV' into fix/ownership-optional-chaining-8149822246…
SOURAV-ROY Oct 6, 2026
a620b9c
Merge pull request #167 from SOURAV-ROY/fix/ownership-optional-chaini…
SOURAV-ROY Oct 6, 2026
155d9f2
Merge pull request #170 from SOURAV-ROY/sentinel/fix-update-details-m…
SOURAV-ROY Oct 7, 2026
006c8eb
Merge branch 'SOURAV' into bolt-optimize-bootcamp-owner-query-1107737…
SOURAV-ROY Oct 7, 2026
5640d42
Merge pull request #171 from SOURAV-ROY/bolt-optimize-bootcamp-owner-…
SOURAV-ROY Oct 7, 2026
b773b3f
merge with SOURAV
SOURAV-ROY Oct 8, 2026
adebc45
Merge pull request #174 from SOURAV-ROY/sentinel-fix-registration-rat…
SOURAV-ROY Oct 8, 2026
6168697
Merge branch 'SOURAV' into bolt-bootcamp-user-index-query-projection-…
SOURAV-ROY Oct 8, 2026
0d0036f
Merge pull request #176 from SOURAV-ROY/bolt-bootcamp-user-index-quer…
SOURAV-ROY Oct 8, 2026
7db6dcc
Enhance session management by integrating MongoStore for production e…
SOURAV-ROY Oct 9, 2026
666961a
Merge pull request #188 from SOURAV-ROY/v2
SOURAV-ROY Oct 9, 2026
3b03762
Merge pull request #189 from SOURAV-ROY/IO
SOURAV-ROY Oct 9, 2026
90e072d
chore(deps): bump the npm_and_yarn group across 1 directory with 2 up…
dependabot[bot] Oct 9, 2026
06fa745
Merge branch 'SOURAV' into sentinel/fix-ownership-optional-chaining-d…
SOURAV-ROY Oct 9, 2026
4f2b7b5
Merge pull request #179 from SOURAV-ROY/sentinel/fix-ownership-option…
SOURAV-ROY Oct 9, 2026
32a29c9
Merge pull request #190 from SOURAV-ROY/dependabot/npm_and_yarn/npm_a…
SOURAV-ROY Oct 9, 2026
647b080
Merge branch 'SOURAV' into bolt/optimize-published-bootcamp-check-667…
SOURAV-ROY Oct 10, 2026
ea5e684
Merge pull request #180 from SOURAV-ROY/bolt/optimize-published-bootc…
SOURAV-ROY Oct 10, 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
39 changes: 39 additions & 0 deletions .jules/bolt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
## 2026-10-04 - Indexing Foreign Keys and Projecting Fields on Existence Checks

**Learning:** Unindexed foreign key fields (`user` in `BootcampModel`) cause collection scans when checking if a user has published a bootcamp or filtering bootcamps by owner. Furthermore, fetching full Mongoose documents during existence/authorization checks (`addCourse`, `addReview`, `creteBootcamp`) loads unnecessary fields (`location`, `careers`, etc.) and hydrates Mongoose models.
**Action:** Always set `index: true` on foreign key fields in Mongoose models. Chain `.select("_id")` or `.select("field")` with `.lean()` when performing existence and authorization checks to minimize payload size, memory allocation, and CPU hydration cost.

## 2026-10-03 - Optimizing Existence Queries and Foreign Keys in Mongoose Schemas

**Learning:** When performing existence checks (such as checking if a user has already published a bootcamp in `creteBootcamp`), executing `findOne` without field projection or document hydration bypass transfers unnecessary fields over the wire and wastes CPU cycles on Mongoose document hydration. Chaining `.select("_id").lean()` retrieves only the primary key and skips hydration. Additionally, ensuring foreign key fields (like `user` in `BootcampSchema`) have `index: true` avoids full collection scans during owner lookups.

**Action:** Chain `.select("_id").lean()` on Mongoose existence checks and ensure foreign key fields on models have `index: true` configured.

## 2026-09-22 - Indexing Foreign Keys and Chaining `.lean()` in Controller Queries

**Learning:** Unindexed foreign key fields (`bootcamp` and `user` in `CourseModel`) force full collection scans (COLLSCAN) during relational lookups (e.g., `GET /api/v1/bootcamps/:bootcampId/courses`) and aggregation pipelines (`getAverageCost`). Additionally, omitting `.lean()` in controller-level `find` and `findById` queries creates unnecessary Mongoose document hydration overhead when returning read-only JSON responses.
**Action:** Always define `index: true` on foreign key fields in Mongoose schemas and chain `.lean()` on read-only query results in Express controllers to reduce CPU and memory consumption.

## 2026-09-26 - Bypassing Document Hydration in Authentication Middleware & Read Queries

**Learning:** In Express APIs using Mongoose authentication middleware (`protect`), calling `User.findById(id)` without `.lean()` hydrates a full Mongoose document instance on every authenticated request, incurring CPU and memory overhead for change-tracking and schema getters/setters. Chaining `.lean()` bypasses document hydration. Since plain JS objects returned by `.lean()` lack Mongoose virtual getters (such as `.id`), explicitly assigning `req.user.id = req.user._id.toString()` preserves compatibility with downstream authorization checks without document overhead.

**Action:** Chain `.lean()` on authentication user lookups in `protect` middleware and manually attach `req.user.id = req.user._id.toString()`. Apply `.lean()` across all read-only controller queries to minimize GC pressure and execution time.

## 2026-09-21 - Concurrent Execution & Filter Accuracy in Pagination Middleware

**Learning:** In Mongoose pagination middleware (`advancedResults`), executing database queries (`countDocuments` and `find`) sequentially introduces unnecessary round-trip latency. Furthermore, calling `countDocuments()` without passing `parsedQuery` produces inaccurate total counts when query filters are applied.
**Action:** Use `Promise.all([model.countDocuments(parsedQuery), query])` to execute count and data fetch concurrently while ensuring accurate total count calculation for filtered datasets.

<!-- bolt-optimize-advanced-results-17181035364112865129 -->

## 2026-09-20 - Concurrent Query Execution and Clean Filter Passing in Pagination Middleware

**Learning:** In Mongoose/Express pagination middleware (`advancedResults`), executing `model.countDocuments()` sequentially before or after the main dataset query doubles the database latency for list endpoints. Furthermore, hardcoding field population (e.g. `.populate("courses")`) on all queries creates unnecessary overhead for models that don't possess those relationships. Running `model.countDocuments(parsedQuery)` and `query` concurrently using `Promise.all` cuts network round-trip waiting time in half while ensuring accurate filtered counts.

**Action:** When building pagination or filter middleware in Node/Express with Mongoose, parse query filters once and execute count and data fetch operations concurrently via `Promise.all([model.countDocuments(filter), query])`. Avoid hardcoded populate calls on generic model query builders.

## 2026-08-14 - Concurrent Database Queries in Paginated Middleware

**Learning:** In `advancedResults` pagination middleware, awaiting `model.countDocuments()` sequentially before awaiting `query` forced two consecutive round-trips to MongoDB. Executing both queries concurrently via `Promise.all([model.countDocuments(parsedQuery), query])` cuts database latency in half for paginated list endpoints. Passing `parsedQuery` to `countDocuments` also ensures accurate pagination metadata for filtered queries.
**Action:** When building pagination or aggregated responses, always combine independent database queries (such as document counts and record fetches) using `Promise.all()` to minimize serial database latency.
17 changes: 17 additions & 0 deletions .jules/sentinel.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
## 2026-09-15 - Missing Model Schema User Reference & Unhandled TypeError DoS

**Vulnerability:** The `user` reference field on the `Bootcamp` Mongoose model was commented out in `models/BootcampModel.js`. Consequently, newly created bootcamps stripped the `user` field, making `bootcamp.user` `undefined`. Subsequent ownership checks in controller methods (`deleteBootcamp` and `bootcampPhotoUpload`) invoked `bootcamp.user.toString()`, throwing unhandled `TypeError` exceptions that crashed request handling (DoS) and bypassed object-level authorization context.
**Learning:** Model schema definitions must strictly retain ownership foreign keys. Furthermore, property accesses on relational fields in controllers must always use optional chaining (`bootcamp.user?.toString()`) to fail securely when ownership context is missing.
**Prevention:** Ensure all resource models define their required `user` relation, and use safe optional chaining (`obj.user?.toString() !== req.user.id`) in ownership authorization checks.

## 2026-08-14 - JWT Session Orphaning & Denial of Service (DoS) Vulnerability

**Vulnerability:** Deleting a user from the database while they still possess a valid, unexpired JWT token caused the `protect` middleware to assign `req.user = null`. Downstream middlewares and routes that relied on role validation (e.g., checking `req.user.role`) would attempt to access properties of a null object, throwing a `TypeError` and causing a Denial of Service (DoS) or unexpected system crashes.
**Learning:** Checking JWT validity (signature and expiration) is insufficient to guarantee that a user is still active and valid. Authenticated routes must always verify that the user fetched from the database is non-null before allowing request execution to proceed.
**Prevention:** Add a database user presence check `if (!req.user)` directly in the core authentication / token-verification middleware (`protect`) before calling `next()`.

## 2026-09-17 - Mass Assignment in Resource Updates

**Vulnerability:** Relational database references (`user` ownership and `bootcamp` association) in models like `Course` and `Review` were vulnerable to mass assignment during update operations (`updateCourse` and `updateReview`). Because request validation schemas permitted unknown properties, attackers sending custom payload properties (e.g., `{ user: "attackerId", bootcamp: "targetBootcampId" }`) could transfer resource ownership or reassign resources across bootcamps.
**Learning:** Request body schemas with `.unknown(true)` pass extra properties directly to controller functions. When calling `findByIdAndUpdate(id, req.body)`, any unstripped relation or identity properties in `req.body` overwrite existing schema attributes.
**Prevention:** In update controller functions, explicitly delete immutable relational fields (`delete req.body.user; delete req.body.bootcamp;`) prior to invoking database update methods like `findByIdAndUpdate`.
4 changes: 1 addition & 3 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
{
"parser": "babel"
}
{}
Loading
Loading