Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/iDevRanjan/lws-ra-b4-assignment-five/llms.txt

Use this file to discover all available pages before exploring further.

The Manage Jobs page at /manage-jobs is where every job listing your company has ever posted lives. From a single paginated table you can create new positions, edit existing ones, monitor application counts, update statuses, and delete outdated listings — all without switching between multiple screens. Access requires an authenticated COMPANY role session.

The Jobs Table

The table is populated by GET /api/companies/jobs and paginates at 5 records per page. Each row exposes the following columns:
ColumnDescription
Job TitleThe listing title linked to the job detail page
StatusColour-coded badge: Active, Closed, or Archived
ApplicantsTotal number of applications received
Posted DateWhen the listing was created
ExpiresThe application deadline date
ActionsEdit and Delete buttons for the individual row
A checkbox at the start of every row (and a “select all” checkbox in the header) enables bulk selection for bulk status operations.

Filtering and Sorting

The search and filter bar above the table lets you narrow results before they hit the API:
  • Search by title — performs a case-insensitive LIKE match on the job title.
  • Filter by status — choose from All Status, Active, Archived, or Closed.
  • SortNewest First (default, createdAt DESC) or Oldest First (createdAt ASC).
Changing any filter resets the pagination back to page 1 automatically.

Job Status Values

Active

The listing is live and visible to job seekers. New applications can be submitted.

Closed

The listing is no longer accepting applications but remains visible to recruiters in the dashboard.

Archived

The listing is hidden from the recruiter table by default and is no longer visible to job seekers.

Creating a New Job

Click the Create New Job button at the top-right of the Manage Jobs page to navigate to /manage-jobs/create. On submission the form sends POST /api/jobs and, on success, redirects you back to the jobs table. The job slug is auto-generated from the title (lowercased, spaces replaced with hyphens) and deduplicated with a numeric suffix if the same title already exists.
1

Navigate to Manage Jobs

Go to /manage-jobs from the dashboard or the Quick Actions sidebar. Click the Create New Job button in the top-right corner.
2

Fill in Basic Information

Complete the Basic Information section:
  • Job Title (required) — e.g. Senior Full Stack Developer
  • Job Type (required) — one of Full-time, Part-time, Contract, Freelance, Internship
  • Work Mode (required)Remote, On-site, or Hybrid
  • Category (required)Engineering, Design, Product, Marketing, Sales, HR, Finance, or Other
  • Experience Level (required)Entry, Mid, Senior, Expert, or Lead
3

Set Location and Compensation

Fill in the Location & Compensation section:
  • Location (required) — city or region, e.g. San Francisco
  • Minimum Salary (required) — numeric value in USD
  • Maximum Salary (required) — must be greater than the minimum
  • Salary Period (required)Hourly, Daily, Weekly, Monthly, or Yearly
4

Write the Job Description

Complete the Job Description section:
  • Job Description (required) — overview of the role and responsibilities
  • Requirements & Qualifications (required) — skills, experience, and education needed
  • Benefits & Perks (optional) — what makes working at your company great
5

Add Required Skills

In the Skills section type each skill into the input field and press Enter or click Add. Skills are stored as a JSON array. Duplicate skills are rejected automatically. At least one skill is required before the form can be submitted.
6

Configure Application Settings

Set the final details in Application Settings:
  • Number of Vacancies — defaults to 1; must be at least 1
  • Application Deadline (required) — date after which the listing stops accepting applications
7

Publish the Listing

Click Publish Job. The form sends POST /api/jobs with all collected data. A success toast confirms the listing is live, and the jobs table is automatically refreshed.

Full Job Form Field Reference

// POST /api/jobs — request body
{
  "title": "Senior Full Stack Developer",       // required
  "type": "Full-time",                          // required | Full-time | Part-time | Contract | Freelance | Internship
  "workMode": "Remote",                         // required | Remote | On-site | Hybrid
  "location": "San Francisco",                  // required
  "category": "Engineering",                    // required | Engineering | Design | Product | Marketing | Sales | HR | Finance | Other
  "experienceLevel": "Senior",                  // required | Entry | Mid | Senior | Expert | Lead
  "salaryMin": 100000,                          // required
  "salaryMax": 150000,                          // required; must be > salaryMin
  "salaryPeriod": "Yearly",                     // required | Hourly | Daily | Weekly | Monthly | Yearly
  "description": "...",                         // required
  "requirements": "...",                        // required
  "benefits": "...",                            // optional
  "skills": ["React", "Node.js", "PostgreSQL"], // required; at least one entry
  "vacancies": 2,                               // default: 1
  "deadline": "2025-12-31"                      // required
}

Editing an Existing Job

Click the Edit (pencil) icon in the Actions column of any row. This opens /manage-jobs/edit/:jobSlug with the same form pre-populated from the existing job data. Only fields you actually change are sent to the API — the form tracks dirty fields and builds a partial payload automatically.
PUT /api/jobs/:id
Content-Type: application/json

{
  "salaryMax": 160000,
  "deadline": "2026-03-01"
}
The slug, status, companyId, and timestamps are excluded from edit payloads automatically — they cannot be changed through this form.

Deleting a Job

Click the Delete (trash) icon in the Actions column, then confirm the browser prompt. Deletion calls DELETE /api/jobs/:id and permanently removes the job along with all associated applications. This action cannot be undone.
Deleting a job removes every application linked to it. Before deleting, consider closing or archiving the listing to preserve applicant records.

Bulk Actions

When one or more rows are selected via their checkboxes, the Bulk Actions bar appears at the bottom of the table. It shows how many jobs are currently selected and provides four operations that run in parallel via PUT /api/jobs/:id calls:
Sets all selected jobs to Active status. Jobs already Active are skipped. Use this to re-open listings you previously closed.
PUT /api/jobs/:id
{ "status": "Active" }
Selecting all rows on the current page and then changing their status is the fastest way to bulk-close a wave of old listings at the end of a hiring cycle.

Build docs developers (and LLMs) love