Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/apursley2012/sys-core/llms.txt

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

The timeline.js module exports an array t of timeline event objects rendered in the About section’s career timeline. Each event marks a significant professional or personal milestone — a career pivot, a first contact with a new technology, a role change — expressed in the portfolio’s space-ops aesthetic using stardates instead of calendar dates. The timeline is ordered chronologically by id and rendered as a vertical sequence of mission log entries.

Data Shape

interface TimelineEvent {
  id: string;     // Unique identifier, e.g. "t1"
  date: string;   // Stardate string, format: "STARDATE YYYY.DDD"
  title: string;  // Short event heading
  content: string; // One to three sentences describing the event
}

Stardate Format

Stardates in this portfolio use the format STARDATE YYYY.DDD, where:
  • YYYY is the four-digit calendar year.
  • DDD is the three-digit day of the year (1–365, zero-padded to three digits).
To calculate a stardate from any calendar date, find the day-of-year number for that date and zero-pad it to three digits.Examples:
  • 1 January 2025 → day 001 → STARDATE 2025.001
  • 1 February 2025 → day 032 → STARDATE 2025.032
  • 10 October 2024 → day 284 → STARDATE 2024.284
Quick method: most date-picker tools and programming languages expose a dayOfYear or getDayOfYear() function. In JavaScript:
const d = new Date("2025-07-10");
const start = new Date(d.getFullYear(), 0, 0);
const dayOfYear = Math.floor((d - start) / 86_400_000);
// dayOfYear → 191
const stardate = `STARDATE ${d.getFullYear()}.${String(dayOfYear).padStart(3, "0")}`;
// → "STARDATE 2025.191"

Current Entries

IDStardateTitleSummary
t1STARDATE 2019.034Enrolled in Nursing ProgramNoticed the patient-portal UI was suspiciously bad. Started wondering how these systems were actually built.
t2STARDATE 2020.112The Retail Sector AnomalyWorked in high-volume retail. Learned more about human-computer interaction watching cashiers fight with POS systems than in any textbook.
t3STARDATE 2021.245First Contact with CodeWrote my first line of JavaScript. Built a terrible calculator. Felt like a wizard.
t4STARDATE 2022.088Bootcamp TrajectoryCommitted fully to the dev trajectory. 80-hour weeks learning React, Node, and the fundamentals of web architecture.
t5STARDATE 2023.156Junior Engineer CommissionLanded first role at a mid-sized agency. Shipped 4 client projects in the first year. Learned that naming things is the hardest problem.
t6STARDATE 2025.010Current OrbitSpecialising in high-performance front-ends and complex state management. Building tools that don’t make users want to pull their hair out.
The final entry (t6 — Current Orbit) acts as the “present moment” anchor of the timeline. Update its content whenever your focus or current role changes. Its date stardate should reflect when your current position or specialisation began.

Adding New Entries

  1. Open data/timeline.js.
  2. Append a new object to the array following the t{n} id convention.
  3. Calculate the stardate for the event date using the YYYY.DDD formula above.
  4. Write a title that names the milestone in a few words — treat it like a mission log heading.
  5. Write content as one to three sentences in the first person, describing what happened and why it mattered. The conversational, honest tone of the existing entries is intentional — let personality come through.
  6. If you’re adding a new “current” milestone, update or replace the existing t6 entry rather than leaving two competing “current” anchors.
// data/timeline.js  — append inside the array
{
  id: "t7",
  date: "STARDATE 2025.191",
  title: "Open-Source First Contribution",
  content:
    "Merged a fix for a long-standing accessibility bug in a popular React "
    + "component library. Discovered that reading other people's codebases is "
    + "the fastest way to level up.",
}
Timeline entries don’t have to be purely professional. The existing entries include a nursing enrolment and a retail job because those experiences directly shaped the perspective behind the engineering work. Authenticity is more compelling than a polished LinkedIn summary.

Field Reference

id
string
required
Unique identifier for the timeline event. Follow the t{n} pattern (e.g. "t1", "t7"). The array is rendered in the order it appears in the file, so ids are for identification and React keying, not for sorting.
date
string
required
Stardate string in the format "STARDATE YYYY.DDD" where YYYY is the four-digit year and DDD is the zero-padded day of the year (001–365). See the Stardate Format section above for calculation instructions.
title
string
required
Short heading for the milestone, rendered as the primary label on the timeline node. Aim for five words or fewer — the content field carries the detail.
content
string
required
One to three sentences describing the event and its significance. Write in the first person and let personality show. This is a portfolio, not a CV — the human behind the code is the point.

Build docs developers (and LLMs) love