diff --git a/src/components/ApplicationCard.jsx b/src/components/apply/ApplicationCard.jsx
similarity index 95%
rename from src/components/ApplicationCard.jsx
rename to src/components/apply/ApplicationCard.jsx
index a6beede..002ece3 100644
--- a/src/components/ApplicationCard.jsx
+++ b/src/components/apply/ApplicationCard.jsx
@@ -1,5 +1,5 @@
-export default function ApplicationCard ({
+export default function ApplicationCard({
title,
description,
applicationLink,
diff --git a/src/components/apply/LookForCard.jsx b/src/components/apply/LookForCard.jsx
new file mode 100644
index 0000000..9fef0ac
--- /dev/null
+++ b/src/components/apply/LookForCard.jsx
@@ -0,0 +1,25 @@
+import Col from 'react-bootstrap/Col';
+
+export default function LookForCard({
+ title,
+ description,
+ imgSrc
+}) {
+ return (
+
+
+
+
+ {title}
+
+
+ {description}
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/content/apply.js b/src/content/apply.js
new file mode 100644
index 0000000..cd5b0ef
--- /dev/null
+++ b/src/content/apply.js
@@ -0,0 +1,54 @@
+export const content = {
+ roles: [
+ {
+ title: 'Software Developer',
+ description: 'Work alongside other developers in a team to design, implement, and review code for a product. Ensure smooth feature integration and deliver exceptional solutions.',
+ applicationLink: 'https://forms.gle/nZR43PcqQNQbgtCg8'
+ },
+ {
+ title: 'Product Manager',
+ description: 'Collaborate closely with clients to optimize their utilization of BUILD\'s services. Effectively convey client requirements to a team of developers.',
+ applicationLink: 'https://forms.gle/hjPdzXopGWTWJY4m8'
+ }
+ ],
+ lookingFor: [
+ {
+ title: 'Teamwork',
+ description: 'Are you a team player? Do you work well with others and value a collaborative environment?',
+ img: '/img/illustrations/teamwork.svg'
+ },
+ {
+ title: 'Passion',
+ description: 'Are you passionate about technology and its potential to make a positive impact?',
+ img: '/img/illustrations/passion.svg'
+ },
+ {
+ title: 'Growth',
+ description: 'Do you challenge yourself and actively explore opportunities for improvement?',
+ img: '/img/illustrations/growth.svg'
+ },
+ {
+ title: 'Culture',
+ description: 'Do you value empowering non-profits to achieve their missions through tech?',
+ img: '/img/illustrations/culture.svg'
+ }
+ ],
+ faqs: [
+ {
+ question: 'How much of a time commitment is BUILD?',
+ answer: 'We expect members to contribute a minimum of 2 hours per week. We take it easy during exam weeks.'
+ },
+ {
+ question: 'Do we get paid?',
+ answer: 'BUILD provides students with an opportunity to volunteer their time and skills to make a difference by help non-profits in the community.'
+ },
+ {
+ question: 'How much experience do I need to join?',
+ answer: 'BUILD is open to all years and majors. We do expect software developers to be familiar with basic data structures and programming methodologies.'
+ },
+ {
+ question: 'What is the application process like?',
+ answer: 'After filling out our application form, if selected for an interview, we\'ll reach out to schedule a single 40 minute virtual interview which will consist of a behavioral and technical portion.'
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/hooks/useBreakpoint.js b/src/hooks/useBreakpoint.js
new file mode 100644
index 0000000..7e188b9
--- /dev/null
+++ b/src/hooks/useBreakpoint.js
@@ -0,0 +1,64 @@
+
+import { useState, useEffect } from 'react';
+import { debounce } from 'lodash';
+
+/**
+ * @typedef {"xs" | "sm" | "md" | "lg" | "xl" | "xxl"} Breakpoint
+ */
+
+/**
+ * @type {Record}
+ * @description enum for the different breakpoint sizes
+ * @example BreakpointSize.xs === 576
+ */
+export const BreakpointSize = {
+ xs: 576,
+ sm: 768,
+ md: 992,
+ lg: 1200,
+ xl: 1440,
+ xxl: 9999,
+};
+
+/**
+ * @type {Record}
+ * @description enum for the different breakpoints
+ * @example Breakpoint.xs === 'xs'
+ */
+export const Breakpoint = {
+ xs: 'xs',
+ sm: 'sm',
+ md: 'md',
+ lg: 'lg',
+ xl: 'xl',
+ xxl: 'xxl',
+};
+
+/**
+ * @param {number} width
+ * @returns {Breakpoint}
+ */
+const resolveBreakpoint = (width) => {
+ const breakpoints = Object.entries(BreakpointSize);
+ const [breakpoint] = breakpoints.find(([_, value]) => width < value);
+ return breakpoint;
+};
+
+/**
+ * @returns {Breakpoint}
+ */
+export const useBreakpoint = () => {
+ const [size, setSize] = useState(() => resolveBreakpoint(window.innerWidth));
+
+ const setBreakpoint = () => {
+ setSize(resolveBreakpoint(window.innerWidth));
+ };
+
+ useEffect(() => {
+ const calcInnerWidth = debounce(setBreakpoint, 200);
+ window.addEventListener('resize', calcInnerWidth);
+ return () => window.removeEventListener('resize', calcInnerWidth);
+ }, []);
+
+ return size;
+};
\ No newline at end of file
diff --git a/src/pages/apply.js b/src/pages/apply.js
index c7c302d..5e556c7 100644
--- a/src/pages/apply.js
+++ b/src/pages/apply.js
@@ -3,64 +3,56 @@ import Particles from 'react-particles-js';
import Container from 'react-bootstrap/Container';
import Row from 'react-bootstrap/Row';
import Col from 'react-bootstrap/Col';
-import ApplicationCard from '../components/ApplicationCard.jsx';
+
+import ApplicationCard from '../components/apply/ApplicationCard.jsx';
+import LookForCard from '../components/apply/LookForCard.jsx';
import Footer from '../components/Footer';
import Navbar from '../components/Navbar';
+import { content } from '../content/apply';
+import { useBreakpoint, Breakpoint } from '../hooks/useBreakpoint';
+
import ParticleJSConfig from '../styles/particlejs_config.json';
export default function apply() {
const APPLICATIONS_OPEN = false;
+ const { roles, lookingFor, faqs } = content;
+ const currBreakpoint = useBreakpoint();
- const roles = [
- {
- title: 'Software Developer',
- description: 'Work alongside other developers in a team to design, implement, and review code for a product. Software engineers at BUILD ensure smooth feature integration and deliver exceptional solutions.',
- applicationLink: 'https://forms.gle/nZR43PcqQNQbgtCg8'
- },
- {
- title: 'Product Manager',
- description: 'Collaborate closely with clients to optimize their utilization of BUILD\'s services. Effectively convey client requirements to a team of developers. Product Managers at BUILD exhibit strong organizational and communication skills.',
- applicationLink: 'https://forms.gle/hjPdzXopGWTWJY4m8'
- }
- ]
+ const navBarHeightPx = 80;
+ const jumbotronHeightPx = 500;
return (
-
+
{/* Jumbotron */}
{/* Navbar */}
-
-
-
-
-
-
-
- Join our amazing team!
-
-
-
-
-
-
- BUILD is on the lookout for passionate and talented individuals who are eager to make a difference in our community. Are you interested in applying what you have been learning in class to real-world projects in a dynamic team environment? If so, consider applying!
-
-
-
-
-
-
-
+
+
+
+ Join Our Amazing Team!
+
+
+ BUILD is on the lookout for passionate and talented individuals who are eager to make a difference in our community. Are you interested in applying what you have been learning in class to real-world projects in a dynamic team environment? If so, consider applying!
+
+
+
{/* Body */}
-
-
-
+
+
+
+
Roles at BUILD
@@ -70,151 +62,83 @@ export default function apply() {
-
- { roles.map((role, index) => (
-
-
-
+
+ {roles.map((role, index) => (
+
))}
-
+
-
-
+
+
+
- What we look for
+ What We Look For
-
-
-
-
-
Teamwork
-
- Are you a team player? Do you work well with others and value a collaborative environment?
-
-
-
-
-
-
-
Passion
-
- Are you passionate about technology and its potential to make a positive impact?
-
-
-
-
-
-
-
-
-
Growth
-
- Do you challenge yourself and actively explore opportunities for improvement?
-
-
-
-
-
-
-
Culture
-
- Do you value empowering non-profits to achieve their missions
- through tech?
-
-
-
+
+
+ { lookingFor.map((weLookFor, index) => (
+
+ ))}
-
-
+
+
+
- Frequently Asked Questions
+
+ Frequently Asked Questions
+
-
-
-
-
- How much of a time commitment is BUILD?
-
-
-
-
-
- We expect members to contribute a minimum of 2 hours per week. We take it easy during exam weeks.
-
-
-
-
-
-
-
- Do we get paid?
-
-
-
-
-
- BUILD provides students with an opportunity to volunteer their time and skills to make a difference by help non-profits in the community, therefore, we are unable to offer monetary compensation.
-
-
-
-
-
-
-
- How much experience do I need to join?
-
-
-
-
-
- BUILD is open to all years and majors. We do expect
- software developers to be familiar with basic data structures and programming methodologies.
-
-
-
-
-
-
-
- What is the application process like?
-
-
-
-
-
- After filling out our application form, if selected for an interview, we'll reach out to schedule a single 40 minute virtual interview which will consist of a behavioral and technical portion.
+
+ { faqs.map(({ question, answer }) => (
+
+
+
+ {question}
+
+
+
+
+ {answer}
-
-
-
+
+
+ ))}
diff --git a/src/public/img/logo/Pinia-Cheat-Sheet.pdf b/src/public/img/logo/Pinia-Cheat-Sheet.pdf
new file mode 100644
index 0000000..f74d991
Binary files /dev/null and b/src/public/img/logo/Pinia-Cheat-Sheet.pdf differ
diff --git a/src/public/img/logo/Vue-Essentials-Cheat-Sheet.pdf b/src/public/img/logo/Vue-Essentials-Cheat-Sheet.pdf
new file mode 100644
index 0000000..e4ef1f6
Binary files /dev/null and b/src/public/img/logo/Vue-Essentials-Cheat-Sheet.pdf differ
diff --git a/src/styles/style.scss b/src/styles/style.scss
index 69ef157..feb8c00 100644
--- a/src/styles/style.scss
+++ b/src/styles/style.scss
@@ -685,10 +685,6 @@ a {
background: linear-gradient(to right, #a30000, #f44708);
}
-.particlejs {
- position: absolute;
-}
-
// Projects page
.year-title {
font-weight: 800;