Skip to content

feat(company-prep): add company interview prep board - #2275

Merged
KaranUnique merged 72 commits into
Canopus-Labs:feature-3from
karan-chaos:feature/company-prep-board
Aug 31, 2026
Merged

feat(company-prep): add company interview prep board#2275
KaranUnique merged 72 commits into
Canopus-Labs:feature-3from
karan-chaos:feature/company-prep-board

Conversation

@karan-chaos

Copy link
Copy Markdown

closes #2274
Description:
Adds a Company Interview Prep Board for managing company applications, interview preparation, questions, rounds, and readiness.

Changes
Added CompanyPrep Mongoose schema
Added company preparation CRUD operations
Added question and interview round sub-resources
Added readiness score tracking
Added application status tracking across 7 stages
Added stats aggregation
Added 11 authenticated REST endpoints
Added Zod validation for create, update, question, and round operations
Added CompanyPrepBoard React component
Added company cards with status toggles and readiness slider
Added question and round tracking
Added search and filtering
Added preparation statistics dashboard
Mounted company-prep routes in the backend
Added Company Prep API path constants

Branch: feature/company-prep-board
Commit: bf7f648

ionfwsrijan and others added 30 commits August 8, 2026 20:40
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
Torqued-codes and others added 21 commits August 15, 2026 14:04
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
# 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
…-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 tracking
interview preparation per company — status management, encountered
questions, interview rounds, readiness score, and aggregate stats.

Frontend: React board component with create form, status toggles,
readiness slider, expandable question/round tracking, search, and
status filtering.

🤖 Generated with Codebuff
Co-Authored-By: Codebuff <noreply@codebuff.com>
@coderabbitai

coderabbitai Bot commented Aug 29, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 52 minutes.

View limit details

Limit 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.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 2859330d-8407-4cf8-8e2c-c08be42ab4bc

📥 Commits

Reviewing files that changed from the base of the PR and between 420348a and bf7f648.

📒 Files selected for processing (7)
  • backend/Input_validators/ValidateCompanyPrep.js
  • backend/controllers/companyPrepController.js
  • backend/models/CompanyPrep.js
  • backend/routes/companyPrepRoutes.js
  • backend/server.js
  • frontend/src/components/CompanyPrepBoard.jsx
  • frontend/src/utils/apiPaths.js

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown

Thank you for submitting your pull request, @karan-chaos! 🙌
We'll review it as soon as possible.
If there are any specific instructions or feedback regarding your PR, we'll provide them here.
Thanks again for your contribution to our project! 😊

@github-actions github-actions Bot added the merge ready PR is mergeable and has no conflicts label Aug 29, 2026
@KaranUnique
KaranUnique changed the base branch from main to feature-3 August 31, 2026 05:41
@KaranUnique
KaranUnique merged commit 80a6bde into Canopus-Labs:feature-3 Aug 31, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: add Company Interview Prep Board