feat(bookmarks): add question bookmarks & personal notes - #2273
Conversation
The controller required completedTopics to be an Array, but the frontend,
the Zod validator (z.record), the Mongoose schema ({ type: Object }), the
import util, and resetProgress all use an object/map — so every save hit
!Array.isArray({...}) and returned 400, and progress was silently lost
(kept only in localStorage). Validate it as a plain object instead.
Fixes Canopus-Labs#1727
…ntract)
Per review: the object check accepted any non-null object, so { "0-0-0": "true" }
(string value) passed. Also require every value to be a boolean, matching the
Zod z.record(z.string(), z.boolean()) contract and the map/{key:bool} shape.
Automated dependency upgrade by OrbisAI Security
…eld-validation fix: Validate country field accepting numeric input
…ew-kw-extractor-v4 feat : added AI interview question keyword extractor
…#1930 test : added unit tests for SM-2 spaced repetition algorithm
The override was incorrectly set to 8.3.0 (a cross-major mismatch with react-router-dom@7.x and incompatible with react@18). Change it to 7.18.0 and regenerate the lockfile so the fix lands at the top-level package. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…mastery-decay-monitor feat: add AI topic mastery decay monitor
…ce-gap-detector Feature/ai practice gap detector
…-flow-analyzer Feature/ai answer flow analyzer
Add streak milestone achievements/badges (1/3/7/14/30-day streaks)
…gistration-validation fix: resolve account registration login issue
fix(ui): add client-side file size validation for PDF upload (max 5MB)Feature/my change
…the Landing Page specifically
# Pull Request: Add Google Calendar Backend Routes
## Summary
This PR adds the missing backend routes required by the Interview Prep frontend for Google Calendar integration.
The frontend already defines the following Google Calendar API paths in `frontend/src/utils/apiPaths.js`, but the backend did not have a corresponding mounted router. As a result, all Google Calendar actions were returning `404 Not Found`.
## Changes Made
* Added `backend/routes/googleCalendarRoutes.js`.
* Added the following Google Calendar endpoints:
* `GET /api/google-calendar/connect`
* `GET /api/google-calendar/callback`
* `GET /api/google-calendar/status`
* `POST /api/google-calendar/events`
* Mounted the Google Calendar router in `backend/server.js`.
* Added Google Calendar OAuth environment variable placeholders to `backend/.env.example`.
* Kept the implementation lightweight and prepared for future Google OAuth2/token persistence.
* Avoided changes to the existing MongoDB configuration because MongoDB is outside the scope of this issue.
## API Behavior
### GET `/api/google-calendar/connect`
Provides the entry point for initiating the Google Calendar OAuth flow.
### GET `/api/google-calendar/callback`
Provides the callback endpoint required for Google OAuth integration.
### GET `/api/google-calendar/status`
Returns the current calendar connection status.
Example response:
```json
{
"success": true,
"connected": false
}
```
### POST `/api/google-calendar/events`
Accepts calendar event data for synchronization/saving.
Example request:
```json
{
"events": [
{
"title": "Mock Interview",
"start": "2026-08-25T10:00:00",
"end": "2026-08-25T11:00:00"
}
]
}
```
## Environment Variables
Added placeholders for:
```env
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
GOOGLE_REDIRECT_URI=http://localhost:5000/api/google-calendar/callback
```
Actual credentials are not included in the repository.
## Testing
Verified the backend Google Calendar endpoints locally:
* `GET /api/google-calendar/connect`
* `GET /api/google-calendar/callback`
* `GET /api/google-calendar/status`
* `POST /api/google-calendar/events`
The routes are now available instead of returning `404 Not Found`.
## Scope
This PR focuses specifically on the missing Google Calendar API routes and backend integration.
Full Google OAuth token persistence and production calendar synchronization can be implemented as a follow-up enhancement.
## Issue
Closes #[ISSUE_NUMBER]
fix: add missing Google Calendar backend routes
…outes available without login to user
…-menu-addition Feature : Added Hamburger menu for NavItems in Mobile/Tablet view in the Landing Page specifically
POST /api/resume/ats-match scores keyword overlap between a resume and a job description with no AI/file upload. Matching lives in a pure, unit-tested atsKeywordMatch helper that keeps tech tokens (c++, node.js) intact. Closes Canopus-Labs#2268
feat(resume): add deterministic ATS keyword-match endpoint
Backend: Model, controller, routes, and Zod validation for bookmarking questions with tags, notes, difficulty rating, star/favorite, search, filtering by category/difficulty, and usage statistics. Frontend: React component with create form, searchable collection view, inline note editing, star toggle, pagination, stats bar, and category filtering. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
|
Thank you for submitting your pull request, @karan-chaos! 🙌 |
|
Warning Review limit reachedNext included review available in 58 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (7)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
closes #2272
Description:
Adds a complete Question Bookmarks & Personal Notes system for saving, organizing, searching, and managing important questions.
Changes
Added Bookmark Mongoose schema with tags, difficulty, star, and source tracking
Added full bookmark CRUD functionality
Added bookmark search and filtering
Added star/favorite toggle
Added bookmark statistics aggregation
Added 8 authenticated REST endpoints
Added Zod validation for create and update operations
Added BookmarkPanel React component
Added search, filters, pagination, and inline note editing
Added expandable bookmark details
Added bookmark statistics bar
Mounted bookmark routes in the backend
Added bookmark API path constants
Branch: feature/question-bookmarks
Commit: c9febf0