> ## Documentation Index
> Fetch the complete documentation index at: https://dos.dzaleka.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Job Model

> Complete schema documentation for the Job model in Dzaleka Online Services

## Overview

The Job model represents employment opportunities, volunteer positions, and internships available in and around Dzaleka Refugee Camp. Jobs can be posted by organizations, businesses, and community groups.

## Schema Definition

The Job model is defined using Zod schema validation in `src/content.config.ts:242-269`.

### TypeScript Type

```typescript theme={null}
type Job = {
  title: string;
  organization: string;
  location: string;
  type: 'full-time' | 'part-time' | 'contract' | 'volunteer' | 'internship';
  category: 'education' | 'healthcare' | 'technology' | 'community' | 'business' | 'arts' | 'services' | 'other';
  salary?: string;
  deadline: Date;
  posted: Date;
  status: 'open' | 'closed' | 'draft';
  featured: boolean;
  skills: string[];
  contact: {
    email: string;
    phone?: string;
    website?: string;
  };
  description: string;
};
```

## Fields

### Core Fields

<ResponseField name="title" type="string" required>
  The job title or position name (e.g., "Content Curator & Editor").
</ResponseField>

<ResponseField name="organization" type="string" required>
  The name of the hiring organization (e.g., "Dzaleka Digital Heritage").
</ResponseField>

<ResponseField name="location" type="string" required>
  The work location (e.g., "Remote / Dzaleka", "Dzaleka Refugee Camp", "Dowa District").
</ResponseField>

<ResponseField name="type" type="enum" required>
  The employment type. Options:

  * `'full-time'` - Full-time position
  * `'part-time'` - Part-time position
  * `'contract'` - Contract-based work
  * `'volunteer'` - Volunteer opportunity
  * `'internship'` - Internship or training position
</ResponseField>

<ResponseField name="category" type="enum" required>
  The job category. Options:

  * `'education'` - Education and teaching roles
  * `'healthcare'` - Medical and health services
  * `'technology'` - IT and digital roles
  * `'community'` - Community development
  * `'business'` - Business and entrepreneurship
  * `'arts'` - Creative and cultural positions
  * `'services'` - Service industry roles
  * `'other'` - Other categories
</ResponseField>

<ResponseField name="description" type="string" required>
  Detailed job description, responsibilities, and requirements. This field contains the full job posting content.
</ResponseField>

<ResponseField name="salary" type="string">
  Compensation or salary range (e.g., "Competitive", "Volunteer", "\$500-800/month").
</ResponseField>

<ResponseField name="deadline" type="Date" required>
  Application deadline. Automatically coerced to Date type from various input formats.
</ResponseField>

<ResponseField name="posted" type="Date" required>
  Date when the job was posted. Automatically coerced to Date type.
</ResponseField>

<ResponseField name="status" type="enum" required>
  Current status of the job posting. Options:

  * `'open'` - Accepting applications (default)
  * `'closed'` - No longer accepting applications
  * `'draft'` - Not yet published

  Defaults to `'open'`.
</ResponseField>

<ResponseField name="featured" type="boolean" required>
  Whether the job should be featured prominently on the platform. Defaults to `false`.
</ResponseField>

<ResponseField name="skills" type="string[]" required>
  Array of required or desired skills for the position.
</ResponseField>

### Contact Information

<ResponseField name="contact" type="object" required>
  <Expandable title="properties">
    <ResponseField name="email" type="string" required>
      Contact email for applications. Must be a valid email format (e.g., "[dzalekaconnect@gmail.com](mailto:dzalekaconnect@gmail.com)").
    </ResponseField>

    <ResponseField name="phone" type="string">
      Contact phone number with country code.
    </ResponseField>

    <ResponseField name="website" type="string">
      Organization website URL. Must be a valid URL format (e.g., "[https://services.dzaleka.com](https://services.dzaleka.com)").
    </ResponseField>
  </Expandable>
</ResponseField>

## Example

Here's a complete example of a Job object:

```json theme={null}
{
  "title": "Content Curator & Editor",
  "organization": "Dzaleka Digital Heritage",
  "location": "Remote / Dzaleka",
  "type": "part-time",
  "category": "business",
  "posted": "2025-03-12T00:00:00.000Z",
  "deadline": "2025-05-12T00:00:00.000Z",
  "status": "open",
  "featured": true,
  "skills": [
    "Content creation",
    "Editing & proofreading",
    "Digital storytelling",
    "Multimedia curation",
    "Content management systems (CMS)",
    "Photography & video editing",
    "Collaborative Teamwork"
  ],
  "contact": {
    "email": "dzalekaconnect@gmail.com",
    "website": "https://services.dzaleka.com",
    "phone": ""
  },
  "description": "Join Dzaleka Digital Heritage as a Content Curator & Editor to help shape and refine the digital narratives that showcase the stories of Dzaleka's community. Bring your creativity to the forefront by managing and curating multimedia content for our platform."
}
```

## Usage in Content

Jobs are stored as Markdown files in `src/content/jobs/` with YAML frontmatter:

```markdown theme={null}
---
title: "Content Curator & Editor"
organization: Dzaleka Digital Heritage
location: "Remote / Dzaleka"
type: "part-time"
category: business
posted: 2025-03-12
deadline: 2025-05-12
status: open
featured: true
skills:
  - Content creation
  - Editing & proofreading
  - Digital storytelling
  - Multimedia curation
  - Content management systems (CMS)
  - Photography & video editing
  - Collaborative Teamwork
contact:
  email: "dzalekaconnect@gmail.com"
  website: "https://services.dzaleka.com"
  phone: ""
description: "Join Dzaleka Digital Heritage as a Content Curator & Editor..."
---

## About the Role
Dzaleka Digital Heritage is seeking a creative and detail-oriented Content Curator & Editor...

## Key Responsibilities
- Review and edit written content for clarity, accuracy, and consistency.
- Curate and organize multimedia content (photos, videos, audio) for digital platforms.
...

## Requirements
- Strong writing, editing, and proofreading skills.
- Experience in content creation, journalism, or digital storytelling.
...

## How to Apply
Submit your application via email...
```

## Validation Rules

* All required fields must be provided: `title`, `organization`, `location`, `type`, `category`, `deadline`, `posted`, `status`, `featured`, `skills`, `contact`, and `description`
* `contact.email` must be a valid email address format
* `contact.website` (if provided) must be a valid URL format
* `type` must be one of: `'full-time'`, `'part-time'`, `'contract'`, `'volunteer'`, or `'internship'`
* `category` must be one of the predefined categories
* `status` must be `'open'`, `'closed'`, or `'draft'`
* `skills` must be an array with at least one skill
* `deadline` and `posted` dates are automatically coerced from various date formats

## Status Management

The `status` field helps manage job postings:

* **open**: Currently accepting applications
* **closed**: No longer accepting applications (past deadline or position filled)
* **draft**: Not yet published to the public platform

## Featured Jobs

Setting `featured: true` will display the job prominently on the jobs page and homepage, helping important positions get more visibility.
