diff --git a/src/pages/Recruitment/Recruitment.tsx b/src/pages/Recruitment/Recruitment.tsx
index 4a92112bbb..139671fc61 100644
--- a/src/pages/Recruitment/Recruitment.tsx
+++ b/src/pages/Recruitment/Recruitment.tsx
@@ -8,7 +8,7 @@ import JoinUs from "../../static/img/team/joinus.png";
import "../../theme/styles.scss";
import JobPostings from "components/Postings/Postings";
-import { Button } from "components";
+//import { Button } from "components";
import usePostings from "hooks/postings";
const castData: MyProps[] = Text;
const imgData: string[] = [JoinUs];
@@ -25,9 +25,9 @@ const VideoContainer = styled.div`
padding-top: 56.25%; /* 16:9 Aspect Ratio (divide 9 by 16 = 0.5625) */
`;
-const SignUpButton = styled(Button)`
- width: 128px;
-`;
+//const SignUpButton = styled(Button)`
+ //width: 128px;
+//;
const Recruitment: React.FC = () =>{
@@ -84,9 +84,12 @@ const Recruitment: React.FC = () =>{
Missed recruitment but still want to join our team? Reach out to us at join@waterloop.ca!
*/}
- Want to learn about linear induction motors, high power PCBS, or other technical and business topics? Fill out out our Application Form here.
+ {//Want to learn about linear induction motors, high power PCBS, or other technical and business topics? Fill out out our Application Form here.
+ }
+ Have questions? Check our FAQ, or contact us.
+ );
+}
+
+export default App;
diff --git a/waterloop-website/src/App.test.js b/waterloop-website/src/App.test.js
new file mode 100644
index 0000000000..1f03afeece
--- /dev/null
+++ b/waterloop-website/src/App.test.js
@@ -0,0 +1,8 @@
+import { render, screen } from '@testing-library/react';
+import App from './App';
+
+test('renders learn react link', () => {
+ render();
+ const linkElement = screen.getByText(/learn react/i);
+ expect(linkElement).toBeInTheDocument();
+});
diff --git a/waterloop-website/src/index.css b/waterloop-website/src/index.css
new file mode 100644
index 0000000000..ec2585e8c0
--- /dev/null
+++ b/waterloop-website/src/index.css
@@ -0,0 +1,13 @@
+body {
+ margin: 0;
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
+ 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
+ sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+code {
+ font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
+ monospace;
+}
diff --git a/waterloop-website/src/index.js b/waterloop-website/src/index.js
new file mode 100644
index 0000000000..d563c0fb10
--- /dev/null
+++ b/waterloop-website/src/index.js
@@ -0,0 +1,17 @@
+import React from 'react';
+import ReactDOM from 'react-dom/client';
+import './index.css';
+import App from './App';
+import reportWebVitals from './reportWebVitals';
+
+const root = ReactDOM.createRoot(document.getElementById('root'));
+root.render(
+
+
+
+);
+
+// If you want to start measuring performance in your app, pass a function
+// to log results (for example: reportWebVitals(console.log))
+// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
+reportWebVitals();
diff --git a/waterloop-website/src/logo.svg b/waterloop-website/src/logo.svg
new file mode 100644
index 0000000000..9dfc1c058c
--- /dev/null
+++ b/waterloop-website/src/logo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/waterloop-website/src/reportWebVitals.js b/waterloop-website/src/reportWebVitals.js
new file mode 100644
index 0000000000..5253d3ad9e
--- /dev/null
+++ b/waterloop-website/src/reportWebVitals.js
@@ -0,0 +1,13 @@
+const reportWebVitals = onPerfEntry => {
+ if (onPerfEntry && onPerfEntry instanceof Function) {
+ import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
+ getCLS(onPerfEntry);
+ getFID(onPerfEntry);
+ getFCP(onPerfEntry);
+ getLCP(onPerfEntry);
+ getTTFB(onPerfEntry);
+ });
+ }
+};
+
+export default reportWebVitals;
diff --git a/waterloop-website/src/setupTests.js b/waterloop-website/src/setupTests.js
new file mode 100644
index 0000000000..8f2609b7b3
--- /dev/null
+++ b/waterloop-website/src/setupTests.js
@@ -0,0 +1,5 @@
+// jest-dom adds custom jest matchers for asserting on DOM nodes.
+// allows you to do things like:
+// expect(element).toHaveTextContent(/react/i)
+// learn more: https://github.com/testing-library/jest-dom
+import '@testing-library/jest-dom';
From 2d8ceb5f4773af0ef1b5fce527555c9afa998d8f Mon Sep 17 00:00:00 2001
From: Jack Fogerty <156630534+jackfogerty@users.noreply.github.com>
Date: Thu, 13 Mar 2025 23:05:36 -0400
Subject: [PATCH 2/5] added goose 5 to past geese, replaced text to show that
goose 6 exists, need to update features and images, as well as getting goose
5 blurb
---
src/components/PastGeeseTimeline/hooks/geese-images.ts | 7 +++++++
src/pages/Contact.tsx | 5 +++--
src/pages/Flock.tsx | 4 ++--
3 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/src/components/PastGeeseTimeline/hooks/geese-images.ts b/src/components/PastGeeseTimeline/hooks/geese-images.ts
index d7a127b7d2..ec0254eaaf 100644
--- a/src/components/PastGeeseTimeline/hooks/geese-images.ts
+++ b/src/components/PastGeeseTimeline/hooks/geese-images.ts
@@ -4,6 +4,7 @@ import goose1 from '../../../static/img/pgimgs/goose1.png';
import goose2 from '../../../static/img/pgimgs/goose2.png';
import goose3 from '../../../static/img/pgimgs/goose3.png';
import goose4 from '../../../static/img/pgimgs/goose4.png';
+import goose5 from '../../../static/img/pgimgs/goose5.png';
interface Image {
imgFile: string;
@@ -49,6 +50,12 @@ const imgs: Image[] = [
desc:
'By the fourth competition, we had realized that, despite wheeled propulsion posting record-breaking speeds in the SpaceX Hyperloop tube, there was no way of scaling those systems to transcontinental scale—wheels spinning at Mach 1 simply cannot last. We pivoted to designing a contactless linear induction motor from scratch, and simplified the rest of the pod to allow us to devote the majority of our time on the most difficult research.',
},
+ {
+ imgFile: goose5,
+ name: 'Goose V',
+ desc:
+ 'Placeholder text'
+ }
];
const useGeeseImages:
diff --git a/src/pages/Contact.tsx b/src/pages/Contact.tsx
index fb145c3bf7..5edd83dc79 100644
--- a/src/pages/Contact.tsx
+++ b/src/pages/Contact.tsx
@@ -4,7 +4,7 @@ import { ContactForm } from "components/ContactForm";
import Hero from "components/Hero/General";
// import { MAP } from "../config/map";
import "../theme/styles.scss";
-import NewsletterSignUpForm from "components/NewsletterSignUpForm";
+//import NewsletterSignUpForm from "components/NewsletterSignUpForm";
const Contact: React.FC = () => (
@@ -23,7 +23,8 @@ const Contact: React.FC = () => (
desc="Want to get in touch? Submit this form or drop us a message at contact@waterloop.ca"
>
-
+ {//
+ }
From a62d64899e709208c67d2190ed884387ed203a95 Mon Sep 17 00:00:00 2001
From: Jack Fogerty <156630534+jackfogerty@users.noreply.github.com>
Date: Tue, 18 Mar 2025 17:48:22 -0400
Subject: [PATCH 3/5] changed FAQ link to a button for consistency and removed
contact us hyperlink
---
src/pages/Recruitment/Recruitment.tsx | 14 +++++++-------
src/static/copy/Flock/exFeatsModel.json | 10 +++++-----
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/src/pages/Recruitment/Recruitment.tsx b/src/pages/Recruitment/Recruitment.tsx
index 139671fc61..dace47554b 100644
--- a/src/pages/Recruitment/Recruitment.tsx
+++ b/src/pages/Recruitment/Recruitment.tsx
@@ -6,9 +6,9 @@ import { MyProps } from "components/TextWithImage";
import Text from "static/copy/Recruitment/Recruitment.json";
import JoinUs from "../../static/img/team/joinus.png";
import "../../theme/styles.scss";
-
import JobPostings from "components/Postings/Postings";
-//import { Button } from "components";
+
+import { Button } from "components";
import usePostings from "hooks/postings";
const castData: MyProps[] = Text;
const imgData: string[] = [JoinUs];
@@ -25,9 +25,9 @@ const VideoContainer = styled.div`
padding-top: 56.25%; /* 16:9 Aspect Ratio (divide 9 by 16 = 0.5625) */
`;
-//const SignUpButton = styled(Button)`
- //width: 128px;
-//;
+const FAQButton = styled(Button)`
+ width: 256px;
+`;
const Recruitment: React.FC = () =>{
@@ -86,9 +86,9 @@ const Recruitment: React.FC = () =>{
{//Want to learn about linear induction motors, high power PCBS, or other technical and business topics? Fill out out our Application Form here.
}
- Have questions? Check our FAQ, or contact us.
+ Have questions? Check our FAQ, or contact us.
- {// window.open('http://wloop.fly.dev/subscribe')} text="Sign up" backgroundColor="yellow" textColor="black" />
+ { window.open('recruitment/faq')} text="Frequently Asked Questions" backgroundColor="yellow" textColor="black" />
}
)}
diff --git a/src/static/copy/Flock/exFeatsModel.json b/src/static/copy/Flock/exFeatsModel.json
index b25ad8daed..05fe2a9979 100644
--- a/src/static/copy/Flock/exFeatsModel.json
+++ b/src/static/copy/Flock/exFeatsModel.json
@@ -2,27 +2,27 @@
"features": [
{
"imgAlt": "LIM.png",
- "header": "Linear Induction Motor",
+ "header": "GOOSE 6 PLACEHOLDER FEATURE",
"desc": "To scale to Hyperloop speeds, we need contactless propulsion. LIMs provide a way to levitate, stabilize, and propel, all in the same package, and they require a simple metal track with no magnets - perfect for minimizing infrastructure cost."
},
{
"imgAlt": "frame.png",
- "header": "Frame & Shell",
+ "header": "GOOSE 6 PLACEHOLDER FEATURE",
"desc": "The frame and shell provide structures to support the motor, battery, and everything else onboard the pod. It needs to withstand hundreds of pounds of force in any direction and yet be extremely lightweight, reliable, and expandable."
},
{
"imgAlt": "guidance.png",
- "header": "Guidance & Braking",
+ "header": "GOOSE 6 PLACEHOLDER FEATURE",
"desc": "Guidance and braking are failsafe mechanisms to control the pod's position and speed. Guidance wheels hold the LIM at a distance from the track measured in mere millimeters, and the mechanical brakes automatically actuate in the unlikely scenarios of loss of communications, electrical power, or pneumatic pressure."
},
{
"imgAlt": "battery.png",
- "header": "Motor Controller & Battery",
+ "header": "GOOSE 6 PLACEHOLDER FEATURE",
"desc": "Our high voltage power systems convert kilowatts of power from a carefully monitored lithium battery into three-phase power precisely modulated to maximize the linear induction motor's thrust."
},
{
"imgAlt": "embedded.png",
- "header": "Embedded Systems",
+ "header": "GOOSE 6 PLACEHOLDER FEATURE",
"desc": "The distributed flight computer aboard the pod implements realtime control algorithms for the power signals supplied to the LIM to allow efficient control at all speeds, and numerous sensors to analyze the performance and health of all subsystems. Our dashboard additionally gives us fine-grained, fail-safe control over everything the pod does during a test run."
}
]
From 00c94e19b2a374e3f755c24cea41b37dd0391b69 Mon Sep 17 00:00:00 2001
From: Jack Fogerty <156630534+jackfogerty@users.noreply.github.com>
Date: Wed, 2 Apr 2025 16:07:37 -0400
Subject: [PATCH 4/5] added team descriptions to website, adding circular
images right now for profile of team leads
---
src/components/OurTeam/OurTeam.tsx | 3 +
.../PastGeeseTimeline/hooks/geese-images.ts | 2 +-
src/components/Sponsor/SponsorPage.tsx | 2 +-
src/components/SponsorsLanding/index.ts | 2 +-
src/components/TextWithProfileImage/README.md | 33 +++++++
.../TextWithProfileImage.tsx | 83 ++++++++++++++++++
src/components/TextWithProfileImage/index.ts | 1 +
src/pages/Flock.tsx | 4 +-
src/pages/Home.tsx | 32 +++++--
src/pages/Sponsors.tsx | 45 +++++++++-
src/pages/Team.tsx | 66 +++++++++++++-
src/static/copy/Flock/exFeatsModel.json | 10 +--
src/static/copy/Recruitment/Recruitment.json | 2 +-
src/static/copy/Team/admin.json | 6 ++
src/static/copy/Team/descriptions.json | 1 +
src/static/copy/Team/electrical.json | 6 ++
src/static/copy/Team/exec.json | 6 ++
src/static/copy/Team/infrastructure.json | 6 ++
src/static/copy/Team/mech.json | 6 ++
src/static/copy/Team/software.json | 6 ++
src/static/copy/Team/teamleads.json | 6 ++
src/static/copy/Team/web.json | 6 ++
src/static/img/goose/goose6.png | Bin 0 -> 157611 bytes
src/static/img/goose/goose6_2.png | Bin 0 -> 100993 bytes
src/static/img/goose/goose6_better.png | Bin 0 -> 172975 bytes
src/static/img/goose/goose6_full.png | Bin 0 -> 199297 bytes
.../official-sponsors/Dassault-Systems.png | Bin 0 -> 23547 bytes
src/static/img/official-sponsors/SKF-Logo.png | Bin 0 -> 6618 bytes
src/static/img/official-sponsors/Stantec.png | Bin 0 -> 179942 bytes
src/static/img/official-sponsors/altium.jpg | Bin 0 -> 5466 bytes
src/static/img/official-sponsors/altium.png | Bin 0 -> 3489 bytes
src/static/img/official-sponsors/ansys.png | Bin 0 -> 33602 bytes
src/static/img/official-sponsors/bild.png | Bin 0 -> 32228 bytes
src/static/img/official-sponsors/hakko.png | Bin 0 -> 3335 bytes
src/static/img/official-sponsors/keysight.jpg | Bin 0 -> 4884 bytes
.../img/official-sponsors/mitutoyo_logo.png | Bin 0 -> 14734 bytes
src/static/img/team/propulsion_leads.png | Bin 0 -> 361868 bytes
src/theme/styles.scss | 13 +++
38 files changed, 324 insertions(+), 23 deletions(-)
create mode 100644 src/components/TextWithProfileImage/README.md
create mode 100644 src/components/TextWithProfileImage/TextWithProfileImage.tsx
create mode 100644 src/components/TextWithProfileImage/index.ts
create mode 100644 src/static/copy/Team/admin.json
create mode 100644 src/static/copy/Team/electrical.json
create mode 100644 src/static/copy/Team/exec.json
create mode 100644 src/static/copy/Team/infrastructure.json
create mode 100644 src/static/copy/Team/mech.json
create mode 100644 src/static/copy/Team/software.json
create mode 100644 src/static/copy/Team/teamleads.json
create mode 100644 src/static/copy/Team/web.json
create mode 100644 src/static/img/goose/goose6.png
create mode 100644 src/static/img/goose/goose6_2.png
create mode 100644 src/static/img/goose/goose6_better.png
create mode 100644 src/static/img/goose/goose6_full.png
create mode 100644 src/static/img/official-sponsors/Dassault-Systems.png
create mode 100644 src/static/img/official-sponsors/SKF-Logo.png
create mode 100644 src/static/img/official-sponsors/Stantec.png
create mode 100644 src/static/img/official-sponsors/altium.jpg
create mode 100644 src/static/img/official-sponsors/altium.png
create mode 100644 src/static/img/official-sponsors/ansys.png
create mode 100644 src/static/img/official-sponsors/bild.png
create mode 100644 src/static/img/official-sponsors/hakko.png
create mode 100644 src/static/img/official-sponsors/keysight.jpg
create mode 100644 src/static/img/official-sponsors/mitutoyo_logo.png
create mode 100644 src/static/img/team/propulsion_leads.png
diff --git a/src/components/OurTeam/OurTeam.tsx b/src/components/OurTeam/OurTeam.tsx
index 7353b43bad..44afa0750e 100644
--- a/src/components/OurTeam/OurTeam.tsx
+++ b/src/components/OurTeam/OurTeam.tsx
@@ -39,6 +39,9 @@ const OurTeam: React.FC = () => (
provide an effective mentorship experience for all new team members.
+
+ Curious how you can help? Here is a list of our teams, what they do, as well as the team leads.
+
);
diff --git a/src/pages/Sponsors.tsx b/src/pages/Sponsors.tsx
index 8050fd0e2b..cc43860748 100644
--- a/src/pages/Sponsors.tsx
+++ b/src/pages/Sponsors.tsx
@@ -1,14 +1,47 @@
import React from "react";
import Hero from "components/Hero/General";
-import SponsorList from "components/Sponsor/SponsorPage";
+//import SponsorList from "components/Sponsor/SponsorPage";
+import { SponsorsLanding } from 'components/SponsorsLanding';
import { TextWithImage } from "components/TextWithImage";
import { MyProps } from "components/TextWithImage";
import Text from "static/copy/Sponsors/Sponsors.json";
import SponsorsImg from "../static/img/team/sponsors.png";
import "../theme/styles.scss";
+import { ImgJSON } from 'components/SponsorsLanding';
+//import ColText from 'static/copy/Landing/ColumnBlock.json';
+
+// Images for sponsors:
+import Weef from '../static/img/official-sponsors/weef.jpg';
+import WaterlooEng from '../static/img/official-sponsors/wes.jpg';
+import UW from '../static/img/official-sponsors/foe.jpg';
+import Altium from '../static/img/official-sponsors/altium.png';
+import Ansys from '../static/img/official-sponsors/ansys.png';
+import BILD from '../static/img/official-sponsors/bild.png';
+import Dassault from '../static/img/official-sponsors/Dassault-Systems.png';
+import Hakko from '../static/img/official-sponsors/hakko.png';
+import Keysight from '../static/img/official-sponsors/keysight.jpg';
+import Mitutoyo from '../static/img/official-sponsors/mitutoyo_logo.png';
+import SKF from '../static/img/official-sponsors/SKF-Logo.png';
+import Stantec from '../static/img/official-sponsors/Stantec.png';
const castData: MyProps[] = Text;
const imgData: string[] = [SponsorsImg];
+//const ColData: Props[] = ColText;
+
+const imgJSON: ImgJSON[] = [
+ { imgSrc: Weef, imgAlt: 'Weef' },
+ { imgSrc: WaterlooEng, imgAlt: 'WaterlooEng' },
+ { imgSrc: UW, imgAlt: 'UW' },
+ { imgSrc: Ansys, imgAlt: 'Ansys' },
+ { imgSrc: BILD, imgAlt: 'BILD' },
+ { imgSrc: Dassault, imgAlt: 'Dassault' },
+ { imgSrc: Hakko, imgAlt: 'Hakko' },
+ { imgSrc: Keysight, imgAlt: 'Keysight' },
+ { imgSrc: Mitutoyo, imgAlt: 'Mitutoyo' },
+ { imgSrc: SKF, imgAlt: 'SKF' },
+ { imgSrc: Stantec, imgAlt: 'Stantec' },
+ { imgSrc: Altium, imgAlt: 'Altium' },
+];
const Sponsors: React.FC = () => (
);
diff --git a/src/pages/Team.tsx b/src/pages/Team.tsx
index 128d9e1694..84732127ab 100644
--- a/src/pages/Team.tsx
+++ b/src/pages/Team.tsx
@@ -2,7 +2,28 @@ import React from "react";
import Hero from "components/Hero/General";
import styled from "styled-components";
import OurTeam from "components/OurTeam";
-// import TeamsDisplayer from "components/TeamsDisplayer";
+import { TextWithImage } from "components";
+import { MyProps } from "components/TextWithImage";
+import { TextWithProfileImage } from "components";
+//import TeamsDisplayer from "components/TeamsDisplayer";
+import WebText from "static/copy/Team/web.json";
+import AdminText from "static/copy/Team/admin.json";
+import ElecText from "static/copy/Team/electrical.json";
+import ExecText from "static/copy/Team/exec.json";
+import InfraText from "static/copy/Team/infrastructure.json";
+import MechText from "static/copy/Team/mech.json";
+import SoftwareText from "static/copy/Team/software.json";
+import LeadText from "static/copy/Team/teamleads.json";
+import propulsionLeads from "static/img/team/propulsion_leads.png";
+const webText: MyProps [] = WebText
+const adminText: MyProps [] = AdminText
+const elecText: MyProps [] = ElecText
+const execText: MyProps [] = ExecText
+const infraText: MyProps [] = InfraText
+const mechText: MyProps [] = MechText
+const softwareText: MyProps [] = SoftwareText
+const leadText: MyProps [] = LeadText
+const webImg : string[] = [propulsionLeads]
const ContentContainer = styled.div`
display: block;
@@ -21,8 +42,49 @@ const Teams: React.FC = () => (
- {/* // TODO: uncomment me when teamhub roster has been updated properly. */}
+ {// TODO: uncomment me when teamhub roster has been updated properly. */
+ }
+
+
+
+
+
+
+
+