The MissionLogTimeline component (Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/dev.void/llms.txt
Use this file to discover all available pages before exploring further.
MissionLogTimeline.js) renders your professional work history as a vertically scrolling timeline. A central spine animates its fill as you scroll down the page, and each role card animates into view when it enters the viewport. On md-and-above screen widths, cards alternate left and right of the spine automatically. All of the content lives in a single array called We at the top of the file.
The Work History Data Array
Each role is a plain object in theWe array:
Existing Entries
The three default work history entries are:| # | Year | Title | Company |
|---|---|---|---|
| 1 | 2023 - Present | Senior Frontend Architect | Stellar Dynamics |
| 2 | 2020 - 2023 | UI Engineer | Nebula Corp |
| 3 | 2018 - 2020 | Web Developer | Void Technologies |
Senior Frontend Architect — Stellar Dynamics (2023 - Present)
Leading a crew of 5 developers building the next-generation orbital tracking interface. Reduced load times by 40% through strategic code-splitting and WebGL optimizations.
UI Engineer — Nebula Corp (2020 - 2023)
Developed the core component library used across 12 different internal tools. Implemented complex data visualization dashboards for telemetry data.
Web Developer — Void Technologies (2018 - 2020)
Maintained and upgraded legacy systems. Migrated monolithic architecture to micro-frontends, improving deployment velocity.
Editing an Existing Entry
Find the object inWe whose year and company match the role you want to change and update the relevant fields:
Adding a New Entry
Push a new object onto the array. The timeline renders entries in array order — index 0 appears at the top. To add your most recent role at the top, unshift onto the array or place the new object first:Removing an Entry
Delete the entire object literal from the array. Remaining entries reflow and re-alternate automatically:How the Timeline Spine Animates
The vertical spine is a two-layer element: a static dark background track and a Framer Motiondiv that grows from 0% to 100% height as scrollYProgress advances through the section:
0.2 to 0.8 (i.e. 20%–80% of the section’s scroll travel) to a height of 0%–100%. You do not need to adjust this when adding entries — the section’s scroll length grows automatically.
How the Card Entrance Animations Work
Each card useswhileInView with a viewport margin of -100px at the bottom edge:
-100px bottom margin means the animation fires when the card is 100px above the bottom of the viewport — giving a slight early reveal. Cards animate once (once: true) so they stay visible after entering; scrolling back up will not reset them to invisible.
There is no stagger delay between cards. Because they are vertically spaced far apart (
space-y-24), each card naturally enters the viewport at a different moment as the user scrolls, creating an organic cascading effect without needing explicit delays.Mobile vs Desktop Layout
On screens smaller than themd breakpoint (768px), the spine moves to the left edge of the section (left-[27px]) and all cards stack in a single column to the right of it. On md+, the spine sits in the centre (md:left-1/2) and the flex-direction of even-indexed rows is reversed (md:flex-row-reverse) to push their card to the right side.
You do not need to change anything to support this — the responsive behaviour is built into the component’s className logic.