Skip to main content

Overview

The work experience section displays your professional history, including companies, positions held, duration, employment type, and technologies used.

WorkExperience Interface

Work experience entries are defined using the WorkExperience TypeScript interface:
src/types/index.ts
export interface Position {
  title: string;
  duration: string;
}

export interface WorkExperience {
  company: string;
  website: string;
  type: "full-time" | "part-time" | "contract" | "internship" | "volunteer";
  positions: Position[];
  technologies?: string[];
}

Field Reference

WorkExperience Fields

company
string
required
The name of the company or organization.
website
string
required
The company’s official website URL.
type
enum
required
The employment type. Must be one of:
  • "full-time" - Full-time employment
  • "part-time" - Part-time employment
  • "contract" - Contract work
  • "internship" - Internship position
  • "volunteer" - Volunteer work
positions
Position[]
required
An array of positions held at this company. See Position interface below.
technologies
string[]
An optional array of technologies, tools, or skills used in this role.

Position Fields

title
string
required
The job title or position name.
duration
string
required
The time period for this position (e.g., “2023 - Present”, “2025”).

Adding New Experience

To add a new work experience entry, edit the src/data/experience.ts file:
import type { WorkExperience } from "../types";

export const workExperience: WorkExperience[] = [
  {
    company: "CoW DAO",
    positions: [
      {
        title: "Security Auditor",
        duration: "2025",
      },
    ],
    type: "contract",
    technologies: ["CI/CD", "Smart Contracts", "AWS"],
    website: "https://cow.fi",
  },
  // ... other experience
];

Employment Types

{
  company: "OpenJS Foundation",
  type: "volunteer",
  positions: [
    {
      title: "Node.js Collaborator",
      duration: "2023 - Present",
    },
  ],
  technologies: ["JavaScript", "C++", "Node.js", "V8", "Security"],
  website: "https://openjsf.org",
}

Multiple Positions at Same Company

When you’ve held multiple positions at the same company, add them all to the positions array. List them in reverse chronological order (most recent first).
{
  company: "OpenJS Foundation",
  positions: [
    {
      title: "Webpack Collaborator",
      duration: "2025 - Present",
    },
    {
      title: "Node.js Collaborator",
      duration: "2023 - Present",
    },
  ],
  type: "volunteer",
  technologies: ["JavaScript", "C++", "Node.js", "V8", "Security"],
  website: "https://openjsf.org",
}

Duration Format Examples

  • Current position: "2023 - Present"
  • Completed position: "2022 - 2024"
  • Single year: "2025"
  • Specific months: "Jan 2023 - Jun 2024"
  • Season: "Summer 2023"
  • Multiple ongoing: "2023 - Present" (for each position)

Real-World Examples

Here are the actual experience entries from the portfolio:
{
  company: "OpenJS Foundation",
  positions: [
    {
      title: "Webpack Collaborator",
      duration: "2025 - Present",
    },
    {
      title: "Node.js Collaborator",
      duration: "2023 - Present",
    },
  ],
  type: "volunteer",
  technologies: ["JavaScript", "C++", "Node.js", "V8", "Security"],
  website: "https://openjsf.org",
}

Best Practices

  • Order entries by start date (most recent first)
  • Use consistent date formatting throughout
  • List positions within a company in reverse chronological order
  • Include 3-7 key technologies per role
  • Ensure company websites are valid and accessible
  • Use “Present” for current positions
  • Be specific with job titles
  • Include relevant technical skills and tools

Build docs developers (and LLMs) love