// Experience.jsx — thomasgoodman.me const experienceData = [ { org: 'PolicyCheck', title: 'Software Developer (Mentored Internship)', period: 'October 2025 to December 2025', location: 'Auckland / Remote', note: '10-week internship', bullets: [ 'Integrated Listmonk (open-source email campaign platform) as a dedicated Docker service into the PolicyCheck Next.js platform, enabling internal tools to create, preview, schedule, and manage campaigns.', 'Developed a Node.js seeding middleware that provisions initial campaign and subscriber data, streamlining development-environment setup.', 'Resolved build and networking issues across 5+ services within Docker Compose stacks, improving system connectivity and deployment reliability.', 'Implemented backend APIs and interactive Next.js components for subscription management and content scheduling.', 'Troubleshot browser/API boundary issues (auth, CORS, network failures) in an Agile team environment.', ], tags: ['Next.js', 'Docker Compose', 'Node.js', 'REST APIs', 'Agile'], }, { org: 'Mission Ready HQ', title: 'Full-Stack Developer (Student)', period: 'March 2025 to December 2025', location: 'Remote, NZ', note: null, bullets: [ 'Designed and built complete end-to-end applications featuring Node.js/Express APIs, React frontends, and MySQL-backed data layers across multiple Level 6 diploma projects.', 'Built RESTful APIs and reusable React (Tailwind/MUI) components.', 'Restructured repositories to support GitHub Actions CI/CD pipelines and reproducible environments.', 'Designed comprehensive database schemas and seeded 1,000+ records using migration-ready SQL files.', 'Created Docker container configurations and Azure deployment guides.', 'Designed instructional starter kits used by fellow cohort members.', ], tags: ['Node.js', 'Express', 'React', 'MySQL', 'Docker', 'GitHub Actions'], }, { org: 'Royal New Zealand Air Force', title: 'Avionics Technician', period: 'May 2008 to April 2024', location: 'Whenuapai, Auckland', note: '15+ years of continuous service', bullets: [ 'Diagnosed aircraft electrical and electronic systems in safety-critical environments, executing systematic fault-finding under tight deadlines to ensure mission readiness.', 'Maintained and repaired GPS navigation systems, UHF/VHF communications equipment, and integrated avionics suites across multiple aircraft types.', 'Performed precision fault-finding using oscilloscopes, multimeters, and signal generators.', 'Read and interpreted aircraft wiring diagrams, schematics, and technical publications.', 'Followed and enforced strict aviation compliance and documentation standards (traceable, peer-reviewed, audit-ready).', 'Led operational flight-line maintenance, conducting pre/post-flight inspections and repairs.', 'Co-founded the unit esports club and coordinated alpine sports activities, building team cohesion.', ], tags: ['Avionics', 'Fault-Finding', 'Systems', 'Compliance', 'Documentation'], }, ]; const ExperienceItem = ({ item, index, total }) => { const [open, setOpen] = React.useState(index === 0); return (
{/* Timeline connector */}
{/* Timeline dot */}
{/* Card */}
{/* Header - always visible, clickable */} {/* Expandable bullets */} {open && (
    {item.bullets.map((b, bi) => (
  • {b}
  • ))}
{item.tags.map(tag => ( {tag} ))}
)}
); }; const Experience = () => (

Experience

{/* Timeline container */}
{experienceData.map((item, i) => ( ))}
); Object.assign(window, { Experience, ExperienceItem });