diff --git a/components/OfficerHistoryCard.js b/components/OfficerHistoryCard.js
new file mode 100644
index 00000000..5b0dcf1f
--- /dev/null
+++ b/components/OfficerHistoryCard.js
@@ -0,0 +1,19 @@
+import React from 'react';
+
+function OfficerHistoryCard({ name, major, year, roles }) {
+ return (
+ <>
+
{name}
+
+ - Major
+ - {major}
+ - Graduation Year
+ - {year}
+ - Officer Roles
+ - {roles.join(', ')}
+
+ >
+ );
+}
+
+export default OfficerHistoryCard;
diff --git a/data/officer-history.js b/data/officer-history.js
new file mode 100644
index 00000000..693f2399
--- /dev/null
+++ b/data/officer-history.js
@@ -0,0 +1,1320 @@
+const officers = [
+ {
+ roles: [
+ 'President',
+ ],
+ name: 'Matthew Wang',
+ year: '2022',
+ major: 'Computer Science, Math-Economics',
+ },
+ {
+ roles: [
+ 'Internal Vice President',
+ ],
+ name: 'Evan Zhong',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Internal Affairs Director',
+ 'Finance Director',
+ ],
+ name: 'Zack Pakin',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Internal Affairs Director',
+ ],
+ name: 'Ray Huang',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Operations Director',
+ ],
+ name: 'Rish Jain',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Operations Director',
+ 'Hack Officer',
+ ],
+ name: 'Christina Tong',
+ year: '2023',
+ major: 'Computer Science & Engineering',
+ },
+ {
+ roles: [
+ 'Internship Director',
+ 'AI Outreach Director',
+ 'Teach LA School Lead',
+ ],
+ name: 'Ava Asmani',
+ year: '2024',
+ major: 'Electrical Engineering',
+ },
+ {
+ roles: [
+ 'Dev Team Director',
+ 'Teach LA Special Events Director',
+ ],
+ name: 'Advaith Gowrishetty',
+ year: '2024',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Dev Team PM',
+ ],
+ name: 'Anna Guo',
+ year: '2024',
+ major: 'Computational and Systems Biology',
+ },
+ {
+ roles: [
+ 'Dev Team Officer',
+ ],
+ name: 'Saagar Mahadev',
+ year: '2024',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Dev Team Officer',
+ ],
+ name: 'Dylon Tjanaka',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Dev Team Officer',
+ ],
+ name: 'Jeremy Tsujihara',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Dev Team Officer',
+ ],
+ name: 'Isaac Chettiath',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Dev Team Officer',
+ ],
+ name: 'Julia Yin',
+ year: '2023',
+ major: 'Linguistics & Computer Science',
+ },
+ {
+ roles: [
+ 'Dev Team Officer',
+ ],
+ name: 'Charles Liu',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Dev Team Officer',
+ ],
+ name: 'Samarth Upadhyaya',
+ year: '2024',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Dev Team Advisor',
+ ],
+ name: 'Nhi Van',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'JEDI Advisor',
+ 'Teach LA School Lead',
+ ],
+ name: 'Helia Woo',
+ year: '2023',
+ major: 'CSE (cognitive science and english)',
+ },
+ {
+ roles: [
+ 'Advisor (Very Spicy New News)',
+ ],
+ name: 'Gloria Yang',
+ year: '2022',
+ major: 'Linguistics & Computer Science',
+ },
+ {
+ roles: [
+ 'Advisor',
+ ],
+ name: 'Daniel Jaffe',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Advisor/IVP Emeritus',
+ ],
+ name: 'William Chern',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Impact Director',
+ 'AI Advisor',
+ ],
+ name: 'Maya Raman',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Impact Officer',
+ ],
+ name: 'Rohan Bansal',
+ year: '2022',
+ major: 'Mathematics of Computation',
+ },
+ {
+ roles: [
+ 'External Vice President',
+ ],
+ name: 'Tina Huang',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Alumni Director',
+ ],
+ name: 'Pranjal Hendre',
+ year: '2024',
+ major: 'Business Economics',
+ },
+ {
+ roles: [
+ 'External Affairs Director',
+ ],
+ name: 'Megan Pham',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'External Affairs Director',
+ 'W Mentorship chair',
+ ],
+ name: 'Ruining Ding',
+ year: '2022',
+ major: 'Computer Science, Math',
+ },
+ {
+ roles: [
+ 'Marketing Director',
+ ],
+ name: 'Danah Tommalieh',
+ year: '2022',
+ major: 'Cognitive Science',
+ },
+ {
+ roles: [
+ 'Marketing Officer (Media)',
+ ],
+ name: 'Joey Li',
+ year: '2023',
+ major: 'Statistics + Cognitive Science',
+ },
+ {
+ roles: [
+ 'Marketing Officer (Photographer)',
+ ],
+ name: 'Hubert Chen',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Moonshots Advisor',
+ 'AI Advisor',
+ ],
+ name: 'John Dang',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Transfer Outreach Director',
+ ],
+ name: 'Ben Hankin',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Advisor (Old Asian Man)',
+ ],
+ name: 'Jack Gardner',
+ year: '2022',
+ major: 'Computer Science and Engineering',
+ },
+ {
+ roles: [
+ 'Advisor',
+ ],
+ name: 'Raphael Gatchalian',
+ year: '2023',
+ major: 'Linguistics & CS',
+ },
+ {
+ roles: [
+ 'Advisor (Expired Vegetable)',
+ ],
+ name: 'Katherine Chong',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'AI President',
+ ],
+ name: 'Justin Yi',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'AI Advisor',
+ ],
+ name: 'Harsh Chobisa',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'AI Advisor',
+ ],
+ name: 'Vaishnavi Tipireddy',
+ year: '2022',
+ major: 'Computer Science and Engineering',
+ },
+ {
+ roles: [
+ 'AI Events Director',
+ ],
+ name: 'Kaivalya Tota',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'AI Projects Officer',
+ ],
+ name: 'Jason Jewik',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'AI Outreach/Events Officer',
+ ],
+ name: 'Aman Oberoi',
+ year: '2023',
+ major: 'Computer Science and Mathematics',
+ },
+ {
+ roles: [
+ 'AI Outreach/Events Officer',
+ ],
+ name: 'Nisha McNealis',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'AI Outreach/Events Officer',
+ ],
+ name: 'Matthew Ruiz',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'AI Outreach/Events Officer',
+ 'Teach LA Learning Labs Director',
+ ],
+ name: 'Jiin Kim',
+ year: '2024',
+ major: 'Linguistics and Computer Science',
+ },
+ {
+ roles: [
+ 'AI Projects Director',
+ ],
+ name: 'Frank Zheng',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'AI Workshops Officer',
+ ],
+ name: 'Jenson Choi',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'AI Workshops Officer',
+ ],
+ name: 'Adithya Nair',
+ year: '2023',
+ major: 'Computer Science and Engineering',
+ },
+ {
+ roles: [
+ 'AI Workshops Officer',
+ ],
+ name: 'Sudhanshu Agrawal',
+ year: '2023',
+ major: 'Computer Science and Mathematics',
+ },
+ {
+ roles: [
+ 'AI Workshops Officer',
+ ],
+ name: 'Paymon Haddad',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'AI Workshops Officer',
+ ],
+ name: 'Varun Sivashankar',
+ year: '2022',
+ major: 'Mathematics',
+ },
+ {
+ roles: [
+ 'AI Workshops Director',
+ ],
+ name: 'Nikhil Suresh',
+ year: '2024',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'AI Projects Officer',
+ ],
+ name: 'Edmond Wen ',
+ year: '2024',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'AI Projects Officer',
+ ],
+ name: 'Kyle Whitecross',
+ year: '2023',
+ major: 'Computer Science and Engineering',
+ },
+ {
+ roles: [
+ 'Cyber Co-President',
+ ],
+ name: 'Joshua Lee',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Cyber Co-President',
+ ],
+ name: 'Henry Chang',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Cyber Advisor, Outgoing Co-President',
+ 'Teach LA Training Director',
+ ],
+ name: 'Ellie Cheng',
+ year: '2022',
+ major: 'Computer Science and Engineering',
+ },
+ {
+ roles: [
+ 'Cyber Advisor, Outgoing Co-President',
+ ],
+ name: 'Disha Zambani',
+ year: '2022',
+ major: 'Computer Science and Engineering ',
+ },
+ {
+ roles: [
+ 'Cyber Vice President',
+ ],
+ name: 'William Wang',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Cyber Retired',
+ 'Game Studio Co-President',
+ ],
+ name: 'Peter Sutarjo',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Cyber Retired',
+ ],
+ name: 'Alyssa Wang',
+ year: '2022',
+ major: 'Computer Science and Engineering',
+ },
+ {
+ roles: [
+ 'Cyber Retired',
+ ],
+ name: 'Kimberly Shi',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Cyber Retired',
+ ],
+ name: 'Aarin Martinez',
+ year: '2022',
+ major: 'Computer Science and Engineering',
+ },
+ {
+ roles: [
+ 'Cyber Retired',
+ ],
+ name: 'Ted Yarmoski',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Cyber Officer',
+ ],
+ name: 'Matthew Craig',
+ year: '2023',
+ major: 'Computer Science, Economics',
+ },
+ {
+ roles: [
+ 'Cyber Officer',
+ ],
+ name: 'Jeffrey Ma',
+ year: '2023',
+ major: 'Computer Science and Engineering',
+ },
+ {
+ roles: [
+ 'Cyber Officer',
+ ],
+ name: 'Yunfan Zhong',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Cyber Officer',
+ ],
+ name: 'Chujun (Jerry) Xu',
+ year: '2024',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Cyber Officer',
+ ],
+ name: 'Sophia Adrangi',
+ year: '2024',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Cyber Officer',
+ ],
+ name: 'Luke Bender',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Cyber Officer',
+ ],
+ name: 'Steph Mach',
+ year: '2024',
+ major: 'Undeclared/CS',
+ },
+ {
+ roles: [
+ 'Cyber Officer',
+ ],
+ name: 'Stephen Kelman',
+ year: '2024',
+ major: 'Computer Science + Engineering',
+ },
+ {
+ roles: [
+ 'Design President',
+ ],
+ name: 'Crystal Huynh',
+ year: '2022',
+ major: 'Economics',
+ },
+ {
+ roles: [
+ 'Design Vice President',
+ ],
+ name: 'Muthu Palaniappan',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Design Design Director',
+ ],
+ name: 'Amy Seo',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Design Workshops Director',
+ ],
+ name: 'Chinmaya Vempati',
+ year: '2022',
+ major: 'Cognitive Science',
+ },
+ {
+ roles: [
+ 'Design Dev Director',
+ ],
+ name: 'Kevin Tang',
+ year: '2023',
+ major: 'Computer Engineering',
+ },
+ {
+ roles: [
+ 'Design Officer',
+ ],
+ name: 'Francis Feng',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Design Officer',
+ ],
+ name: 'Daniel Dai',
+ year: '2024',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Design Officer',
+ ],
+ name: 'Michael Shi',
+ year: '2024',
+ major: 'Undeclared/CS',
+ },
+ {
+ roles: [
+ 'Design Officer',
+ ],
+ name: 'Isabelle Goralsky',
+ year: '2024',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Design Officer',
+ ],
+ name: 'William Hsieh',
+ year: '2024',
+ major: 'Computer Science and Engineering',
+ },
+ {
+ roles: [
+ 'Design Officer',
+ ],
+ name: 'Tiffany Lee',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Design Officer',
+ ],
+ name: 'Hannah Chu',
+ year: '2024',
+ major: 'Linguistics ',
+ },
+ {
+ roles: [
+ 'Design Officer',
+ ],
+ name: 'Kathleen Yang',
+ year: '2023',
+ major: 'Design Media Arts',
+ },
+ {
+ roles: [
+ 'Design Officer',
+ ],
+ name: 'Megan Schmid',
+ year: '2023',
+ major: 'Linguistics & Computer Science',
+ },
+ {
+ roles: [
+ 'Design Officer',
+ ],
+ name: 'Annie Bou',
+ year: '2024',
+ major: 'Human Biology and Society',
+ },
+ {
+ roles: [
+ 'Design Officer',
+ ],
+ name: 'Steve KX',
+ year: '2022',
+ major: 'Design Media Arts + Applied Math',
+ },
+ {
+ roles: [
+ 'Design Officer',
+ ],
+ name: 'Solomon Lo',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Design Officer',
+ ],
+ name: 'Jon Yun',
+ year: '2024',
+ major: 'Statistics',
+ },
+ {
+ roles: [
+ 'Design Officer',
+ ],
+ name: 'Angela Zhang',
+ year: '2023',
+ major: 'Computer Science & Engineering',
+ },
+ {
+ roles: [
+ 'Design Officer',
+ ],
+ name: 'Brian Ng',
+ year: '2023',
+ major: 'Cognitive Science',
+ },
+ {
+ roles: [
+ 'Design Officer',
+ ],
+ name: 'Colleen Li',
+ year: '2023',
+ major: 'Cognitive Science',
+ },
+ {
+ roles: [
+ 'Design Officer',
+ ],
+ name: 'Andy Goh',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Design Officer',
+ ],
+ name: 'Stephanie Chang',
+ year: '2022',
+ major: 'Sociology',
+ },
+ {
+ roles: [
+ 'Design Officer',
+ ],
+ name: 'Ivy Kang',
+ year: '2023',
+ major: 'Cognitive Science',
+ },
+ {
+ roles: [
+ 'Game Studio Co-President',
+ ],
+ name: 'Christian Loanzon',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Game Studio Officer',
+ ],
+ name: 'Kade Adams',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Game Studio Officer',
+ ],
+ name: 'Zoƫ Chavez',
+ year: '2023',
+ major: 'Theater',
+ },
+ {
+ roles: [
+ 'Game Studio Officer',
+ ],
+ name: 'Brandon Truong',
+ year: '2023',
+ major: 'Computer Science and Engineering',
+ },
+ {
+ roles: [
+ 'Game Studio Officer',
+ ],
+ name: 'Ray Hsiao',
+ year: '2024',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Game Studio Officer',
+ ],
+ name: 'Ryan Vuong',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Game Studio Officer',
+ ],
+ name: 'Caroline Wang',
+ year: '2024',
+ major: 'Design Media Arts',
+ },
+ {
+ roles: [
+ 'Game Studio Officier',
+ ],
+ name: 'Johnny Wan',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Game Studio Officer',
+ ],
+ name: 'Connor Daly',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Game Studio Officer',
+ ],
+ name: 'Athena Dai',
+ year: '2022',
+ major: 'Linguistics & Computer Science',
+ },
+ {
+ roles: [
+ 'Game Studio Officer',
+ ],
+ name: 'Aaron Isara',
+ year: '2024',
+ major: 'Computer Science and Engineering',
+ },
+ {
+ roles: [
+ 'Game Studio Officer',
+ ],
+ name: 'Richard Cheng',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Game Studio Officer',
+ ],
+ name: 'Kelly Doherty',
+ year: '2023',
+ major: 'Linguistics & Computer Science',
+ },
+ {
+ roles: [
+ 'Hack Co-President',
+ ],
+ name: 'Asha Kar',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Hack Co-President',
+ ],
+ name: 'Eugene Lo',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Hack Officer',
+ ],
+ name: 'Miles Wu',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Hack Officer',
+ ],
+ name: 'Alex Xia',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Hack Officer',
+ ],
+ name: 'Sahen Rai',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Hack Officer',
+ ],
+ name: 'Einar Balan',
+ year: '2024',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Hack Officer',
+ ],
+ name: 'Chandra Suresh',
+ year: '2023',
+ major: 'Computer Engineering',
+ },
+ {
+ roles: [
+ 'Hack Officer',
+ ],
+ name: 'Jakob Reinwald',
+ year: '2024',
+ major: 'Computer Science and Engineering',
+ },
+ {
+ roles: [
+ 'Hack Officer',
+ ],
+ name: 'Eric Yang',
+ year: '2024',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Hack Officer',
+ ],
+ name: 'Nareh Agazaryan',
+ year: '2024',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Hack Advisor',
+ ],
+ name: 'Rajeshwari Jadhav',
+ year: '2022',
+ major: 'Mathematics of Computation',
+ },
+ {
+ roles: [
+ 'Hack Advisor',
+ ],
+ name: 'Jody Lin',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Hack Advisor',
+ ],
+ name: 'Jamie Liu',
+ year: '2021',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'ICPC President',
+ ],
+ name: 'Jacob Zhang',
+ year: '2022',
+ major: 'Computer Science, Mathematics',
+ },
+ {
+ roles: [
+ 'ICPC Advisor',
+ ],
+ name: 'Nikil Roashan Selvam',
+ year: '2022',
+ major: 'Computer Science, Mathematics',
+ },
+ {
+ roles: [
+ 'ICPC Officer',
+ ],
+ name: 'Rohit Nema',
+ year: '2022',
+ major: 'Computer Science, Mathematics',
+ },
+ {
+ roles: [
+ 'ICPC Officer',
+ ],
+ name: 'Tony Xia',
+ year: '2023',
+ major: 'Computer Science, Mathematics',
+ },
+ {
+ roles: [
+ 'ICPC Officer',
+ ],
+ name: 'Ana Gu',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'ICPC Officer',
+ ],
+ name: 'Rishi Sankar',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'ICPC Officer',
+ ],
+ name: 'Arihant Jain',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'ICPC Officer',
+ ],
+ name: 'Bill Liu',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'ICPC Officer',
+ ],
+ name: 'Justin Li',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'ICPC Officer',
+ ],
+ name: 'Alvin Nguyen',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'ICPC Officer',
+ ],
+ name: 'Saarthak Sharma',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'ICPC Officer',
+ ],
+ name: 'Lenny Wu',
+ year: '2023',
+ major: 'Computer Science, Mathematics',
+ },
+ {
+ roles: [
+ 'ICPC Officer',
+ ],
+ name: 'Katie Chang',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'ICPC Officer',
+ ],
+ name: 'Reiya Downs',
+ year: '2022',
+ major: 'Math of Computation',
+ },
+ {
+ roles: [
+ 'ICPC Officer',
+ ],
+ name: 'Robert Lee',
+ year: '2024',
+ major: 'Math of Computation, Aerospace Engineering',
+ },
+ {
+ roles: [
+ 'ICPC Officer',
+ ],
+ name: 'Ho Lyun Jeong',
+ year: '2024',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Teach LA President',
+ ],
+ name: 'Sophie Schoenmeyer',
+ year: '2023',
+ major: 'Applied Mathematics',
+ },
+ {
+ roles: [
+ 'Teach LA Vice President',
+ ],
+ name: 'Chloe Uy',
+ year: '2022',
+ major: 'Math of Computation',
+ },
+ {
+ roles: [
+ 'Teach LA Curriculum Director',
+ ],
+ name: 'Nikhil Kumar',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Teach LA Curriculum Director',
+ ],
+ name: 'Milo Kearney',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Teach LA Outreach Director',
+ ],
+ name: 'Ishani Sarkar',
+ year: '2024',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Teach LA JEDI Director',
+ ],
+ name: 'Christine Kim',
+ year: '2024',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Teach LA Special Events Director',
+ ],
+ name: 'Nina Lu',
+ year: '2022',
+ major: 'Computer Science and Engineering',
+ },
+ {
+ roles: [
+ 'Teach LA Special Events Director',
+ ],
+ name: 'Kaitlyn Wang',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Teach LA Special Events Director',
+ ],
+ name: 'Eden Yu',
+ year: '2024',
+ major: 'Linguistics and Computer Science',
+ },
+ {
+ roles: [
+ 'Teach LA School Lead',
+ ],
+ name: 'Chase Kapler',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Teach LA School Lead',
+ ],
+ name: 'Robert Tran',
+ year: '2023',
+ major: 'Psychobiology',
+ },
+ {
+ roles: [
+ 'Teach LA Advisor',
+ ],
+ name: 'Keertana Namuduri',
+ year: '2022',
+ major: 'Cognitive Science',
+ },
+ {
+ roles: [
+ 'Teach LA Dev Team Director',
+ ],
+ name: 'Divya Ponniah',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Teach LA Design Director',
+ ],
+ name: 'Archie Datta',
+ year: '2024',
+ major: 'Math of Computation',
+ },
+ {
+ roles: [
+ 'Teach LA Editor Director',
+ ],
+ name: 'Timothy Poon',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Teach LA Static Site Director',
+ ],
+ name: 'Vivian Ha',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Teach LA Training Director',
+ ],
+ name: 'Regina Wang',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'Teach LA Training Director',
+ ],
+ name: 'Matthew Nieva',
+ year: '2024',
+ major: 'Computer Science and Engineering',
+ },
+ {
+ roles: [
+ 'Teach LA Advisor',
+ ],
+ name: 'Leo Krashanoff',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'W President',
+ ],
+ name: 'Cindy Zhang',
+ year: '2022',
+ major: 'Computer Science and Engineering',
+ },
+ {
+ roles: [
+ 'W Vice President',
+ ],
+ name: "Lena O'Grady",
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'W Publicity',
+ ],
+ name: 'Ethan Wong',
+ year: '2023',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'W Day of Code Chair',
+ ],
+ name: 'Michelle Kim',
+ year: '2022',
+ major: 'English',
+ },
+ {
+ roles: [
+ 'W Finance Chair',
+ ],
+ name: 'Maggie Huang',
+ year: '2022',
+ major: 'Computer Science',
+ },
+ {
+ roles: [
+ 'W External Chair',
+ ],
+ name: 'Marie Chu',
+ year: '2022',
+ major: 'Computer Science and Engineering',
+ },
+ {
+ roles: [
+ 'W Outreach Chair',
+ ],
+ name: 'Paige Brown',
+ year: '2023',
+ major: 'Computer Science',
+ },
+];
+
+export default officers;
diff --git a/package.json b/package.json
index 1c3a53e6..12f19bc1 100644
--- a/package.json
+++ b/package.json
@@ -27,6 +27,7 @@
"lint-css-fix": "stylelint --fix \"**/*.css\" \"**/*.scss\"",
"lint": "eslint \"**/*.js\" && stylelint \"**/*.css\" \"**/*.scss\"",
"lint-fix": "eslint --fix \"**/*.js\" && stylelint --fix \"**/*.css\" \"**/*.scss\"",
+ "og": "node scripts/officer-generator.mjs",
"reg": "node scripts/recurring-event-generator.mjs",
"seg": "node scripts/single-event-generator.mjs",
"test": "jest --env=jsdom"
diff --git a/pages/history/people.js b/pages/history/people.js
new file mode 100644
index 00000000..49f2deab
--- /dev/null
+++ b/pages/history/people.js
@@ -0,0 +1,36 @@
+import { NextSeo } from 'next-seo';
+import React from 'react';
+
+import Banner from '../../components/Banner';
+import Layout from '../../components/Layout';
+import OfficerHistoryCard from '../../components/OfficerHistoryCard';
+
+import officers from '../../data/officer-history';
+
+function OfficerHistory() {
+ return (
+
+
+
+
+ {officers.map(officer => )}
+
+
+ );
+}
+
+export default OfficerHistory;
diff --git a/scripts/officer-generator.mjs b/scripts/officer-generator.mjs
new file mode 100644
index 00000000..5d05c374
--- /dev/null
+++ b/scripts/officer-generator.mjs
@@ -0,0 +1,63 @@
+/* eslint-disable no-console */
+import fs from 'fs';
+import csv from 'csv-parser';
+
+const args = process.argv.slice(2);
+
+if (args.length === 0) {
+ throw new Error('No argument provided as the input file. Exiting...');
+}
+
+const fname = args[0];
+const results = [];
+
+let prefix = '';
+
+const hashOfficer = ({name, year}) => `${name}|${year}`;
+
+const combineOfficers = (officersArray) => {
+ const officers = {};
+ officersArray.forEach((officer) => {
+ const hash = hashOfficer(officer);
+ if (hash in officers) {
+ officers[hash].roles = officers[hash].roles.concat(officer.roles);
+ }
+ else {
+ officers[hash] = {...officer};
+ }
+ });
+ return Object.values(officers);
+};
+
+const countDuplicateNames = (officers) => {
+ const nameSet = new Set(officers.map(officer => officer.name));
+ return officers.length - nameSet.size;
+};
+
+fs.createReadStream(fname)
+ .pipe(csv())
+ .on('data', (data) => {
+ // uses empty names as a heuristic for committee dividers
+ if (!data.Name || !data.Name.trim()) {
+ // omit "board" from prefix, since officer title is all we need
+ prefix = !data['Officer Role'].includes('Board') ? `${data['Officer Role']} ` : '';
+ return;
+ }
+ results.push({
+ roles: [`${prefix}${data['Officer Role']}`], // "elegantly" deals with the edge case of president and board :)
+ name: data.Name,
+ year: data['Graduation Year'],
+ major: data.Major,
+ });
+ })
+ .on('end', () => {
+ const combinedResults = combineOfficers(results);
+ console.log(`Number of officers: ${combinedResults.length}`);
+ const numDups = countDuplicateNames(combinedResults);
+ console.log(`Number of duplicated names: ${numDups}`);
+ const out = JSON.stringify(combinedResults, null, 2);
+ fs.writeFile('output.json', out, (err) => {
+ if (err) throw err;
+ console.log('Output successfully saved to output.json');
+ });
+ });