diff --git a/.gitignore b/.gitignore
index 9ebce39..159b739 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,4 +23,5 @@ dist-ssr
*.sln
*.sw?
-node_modules
\ No newline at end of file
+node_modules
+.env
\ No newline at end of file
diff --git a/documentation.md b/documentation.md
new file mode 100644
index 0000000..4535fd5
--- /dev/null
+++ b/documentation.md
@@ -0,0 +1,117 @@
+# Documentation of SFU OS Dev Website
+
+This markdown file is for documentation for our club website
+
+## Router
+
+This file is responsible for routing each components.
+
+```tsx
+// App.tsx
+function App() {
+ return (
+
+
- Explore the dynamic events hosted by the SFU Open Source Development Club, where innovation meets collaboration. From hands-on workshops to inspiring talks, our events empower students, foster skill development, and build connections within the global open-source community.
+ Explore the dynamic events hosted by the SFU Open Source Development
+ Club, where innovation meets collaboration. From hands-on workshops
+ to inspiring talks, our events empower students, foster skill
+ development, and build connections within the global open-source
+ community.
- At the SFU Open Source Development Club, we believe in connecting beyond the screen. Through our engaging events, we create spaces for members to meet, network, and grow both personally and professionally. Whether it‘s through fun social gatherings or insightful guest talks, we foster a sense of community that values authentic connections and shared experiences. Our events go beyond learning—they‘re about building lasting relationships, celebrating diversity, and creating a welcoming environment where everyone feels they belong.
+ At the{" "}
+
+ SFU Open Source Development Club
+
+ , we believe in connecting beyond the screen. Through our{" "}
+ engaging events, we
+ create spaces for members to meet, network, and grow both{" "}
+ personally and{" "}
+ professionally. Whether
+ it‘s through fun{" "}
+ social gatherings or
+ insightful guest talks,
+ we foster a sense of{" "}
+ community that values{" "}
+ authentic connections{" "}
+ and shared experiences.
+ Our events go beyond learning—they‘re about building lasting{" "}
+ relationships,
+ celebrating diversity,
+ and creating a welcoming environment where everyone feels they
+ belong.
+ Responsible for developing and maintaining the club's website,
+ projects, and technical workshops. Ideal for those passionate
+ about coding and software development.
+
+
+
Good to have:
+
+
Experience with React, TypeScript, or Python
+
Knowledge of Git/GitHub
+
Previous project experience
+
+
+
+
+
+ Strategy Team
+
+
+ Focuses on club growth, partnerships, and long-term planning.
+ Great for those interested in business development, marketing, and
+ leadership.
+
+
+
Good to have:
+
+
Strong communication skills
+
Interest in marketing or finance
+
Leadership experience
+
+
+
+
+
+ Event Team
+
+
+ Organizes hackathons, workshops, and social events. Perfect for
+ those who love planning, logistics, and creating engaging
+ experiences for members.
+
SFU OS Dev Club
diff --git a/src/components/ProjectProposalForm.tsx b/src/components/ProjectProposalForm.tsx
new file mode 100644
index 0000000..029c2fe
--- /dev/null
+++ b/src/components/ProjectProposalForm.tsx
@@ -0,0 +1,16 @@
+import React from "react";
+
+const ProjectProposalForm = () => {
+ return (
+
+
+ Project Proposal
+
+
+
Form content goes here.
+
+
+ );
+};
+
+export default ProjectProposalForm;
diff --git a/src/components/Projects.tsx b/src/components/Projects.tsx
index 37dd23e..ec81408 100644
--- a/src/components/Projects.tsx
+++ b/src/components/Projects.tsx
@@ -1,59 +1,13 @@
import React, { useState } from "react";
import Project from "./Project";
-import { ProjectType } from "../interfaces/project-type";
import { getBasePath } from "../utils/basePath";
-
-const onGoingProjectsList: ProjectType[] = [
- {
- title: "Financial Fast Feed",
- description:
- "Financial Fast Feed aggregates and summarizes news from 9 different financial sources, including Crypto, Economic, and Stock Market updates. Powered by GPT-3.5, it offers quick insights into market trends and financial news, helping users stay informed with concise summaries from diverse perspectives.",
- imgURL: "projects/financial-fast-feed.jpg",
- githubURL: "https://github.com/sfuosdev/financial-fast-feed",
- },
- {
- title: "CourseCompass",
- description:
- "Course Compass is a platform designed to help students select courses and plan their degrees. By providing course ratings, reviews, and calendars, students can make informed decisions and share insights with others. Built with Next.js, React, MongoDB, and Tailwind CSS, the project emphasizes team collaboration and version control best practices.",
- imgURL: "projects/course-compass.jpg",
- githubURL: "https://github.com/JoaoIshida/CourseCompass",
- },
-];
-
-const pastProjectsList: ProjectType[] = [
- {
- title: "SWE Resume Evaluator SaaS",
- description:
- "SWE Resume Evaluator is a Software-as-a-Service (SaaS) web application that uses Naive Bayes classifiers to assess users' resumes for their suitability for various software engineering positions, such as SWE, ML, and QA.",
- imgURL: "projects/swe-resume-evaluator.png",
- githubURL: "https://github.com/sfuosdev/swe-resume-evaluator",
- },
- {
- title: "MACM316",
- description:
- "Macm316 provides a visualization and plotting tool for numerical methods in Numerical Analysis.",
- imgURL: "projects/macm316.png",
- githubURL: "https://github.com/sfuosdev/Macm316",
- },
- {
- title: "PituPiPy",
- description:
- "PituPiPy is a Python implementation of P2P (peer-to-peer) networking program that enables users to message and share files within in a P2P network pool.",
- imgURL: "projects/pitupipy.jpg",
- githubURL: "https://github.com/sfuosdev/PituPiPy",
- },
- {
- title: "SFU-RMP",
- description:
- "Chrome extension for SFU students to provide access to prof rating from RateMyProfessor.com on SFU course registration pages (goSFU, mySchedule)",
- imgURL: "projects/sfu-rmp.png",
- githubURL: "https://github.com/sfuosdev/SFU-RMP",
- },
-];
+import { onGoingProjectsList } from "../lists/onGoingProjects";
+import { pastProjectsList } from "../lists/pastProjects";
const Projects = () => {
const basePath = getBasePath();
const [activeTab, setActiveTab] = useState("ONGOING");
+ const [isExpanded, setIsExpanded] = useState(false);
const renderProjectsList = () => {
let projectsList = [];
@@ -72,21 +26,42 @@ const Projects = () => {
return
Meet Our Executive Team
@@ -64,52 +67,50 @@ const Teams = () => {
-
- Daniel Pham
-
+
Tommy Oh
Co-President
- Daniel brings a deep commitment to open-source software and
- business, aiming to empower students to contribute to impactful
- projects.
+ With a passion for technology and community, Tommy focuses on
+ creating an inclusive space for developers of all levels at SFU.
- With a passion for technology and community, Tommy focuses on
- creating an inclusive space for developers of all levels at SFU.
+ Yoonsang is dedicated to fostering collaboration and innovation
+ within the SFU developer community through open-source projects.
- {/* Directors */}
-
- Directors
-
+
+ Technology Team
+
@@ -119,7 +120,7 @@ const Teams = () => {
>
@@ -132,30 +133,13 @@ const Teams = () => {
and high-quality standards in club projects.
+ );
+};
+
+export default TechnologyQuestions;
diff --git a/src/interfaces/event-q-props.ts b/src/interfaces/event-q-props.ts
new file mode 100644
index 0000000..d5bbfa6
--- /dev/null
+++ b/src/interfaces/event-q-props.ts
@@ -0,0 +1,6 @@
+export interface EventQuestionsProps {
+ formData: any;
+ handleChange: (
+ e: React.ChangeEvent
+ ) => void;
+}
diff --git a/src/interfaces/exec-form-data-type.ts b/src/interfaces/exec-form-data-type.ts
new file mode 100644
index 0000000..b5d17ae
--- /dev/null
+++ b/src/interfaces/exec-form-data-type.ts
@@ -0,0 +1,44 @@
+export interface FormData {
+ fullName: string;
+ email: string;
+ studentId: string;
+ yearOfStudy: string;
+ faculty: string;
+ major: string;
+ coopTerm: string;
+ firstChoiceTeam: string;
+
+ questions: {
+ // Tech Team Questions
+ tech_q1?: string;
+ tech_q2?: string;
+ tech_q3?: string;
+ tech_q4?: string;
+ tech_q5?: string;
+ tech_q6?: string;
+ tech_q7?: string;
+ tech_q8?: string;
+ tech_q9?: string;
+ tech_q10?: string;
+
+ // Strategy Team Questions
+ strat_q1?: string;
+ strat_q2?: string;
+ strat_q3?: string;
+ strat_q4?: string;
+ strat_q5?: string;
+ strat_q6?: string;
+
+ // Event Team Questions
+ event_q1?: string;
+ event_q2?: string;
+ event_q3?: string;
+ event_q4?: string;
+ event_q5?: string;
+ event_q6?: string;
+ event_q7?: string;
+ event_q8?: string;
+ event_q9?: string;
+ event_q10?: string;
+ };
+}
diff --git a/src/interfaces/strat-q-props.ts b/src/interfaces/strat-q-props.ts
new file mode 100644
index 0000000..f3f58ae
--- /dev/null
+++ b/src/interfaces/strat-q-props.ts
@@ -0,0 +1,8 @@
+export interface StrategyQuestionsProps {
+ formData: any;
+ handleChange: (
+ e: React.ChangeEvent<
+ HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement
+ >
+ ) => void;
+}
diff --git a/src/lists/onGoingProjects.ts b/src/lists/onGoingProjects.ts
new file mode 100644
index 0000000..0946631
--- /dev/null
+++ b/src/lists/onGoingProjects.ts
@@ -0,0 +1,18 @@
+import { ProjectType } from "../interfaces/project-type";
+
+export const onGoingProjectsList: ProjectType[] = [
+ {
+ title: "Financial Fast Feed",
+ description:
+ "Financial Fast Feed aggregates and summarizes news from 9 different financial sources, including Crypto, Economic, and Stock Market updates. Powered by GPT-3.5, it offers quick insights into market trends and financial news, helping users stay informed with concise summaries from diverse perspectives.",
+ imgURL: "projects/financial-fast-feed.jpg",
+ githubURL: "https://github.com/sfuosdev/financial-fast-feed",
+ },
+ {
+ title: "CourseCompass",
+ description:
+ "Course Compass is a platform designed to help students select courses and plan their degrees. By providing course ratings, reviews, and calendars, students can make informed decisions and share insights with others. Built with Next.js, React, MongoDB, and Tailwind CSS, the project emphasizes team collaboration and version control best practices.",
+ imgURL: "projects/course-compass.jpg",
+ githubURL: "https://github.com/JoaoIshida/CourseCompass",
+ },
+];
diff --git a/src/lists/pastEvents.ts b/src/lists/pastEvents.ts
new file mode 100644
index 0000000..b0858f1
--- /dev/null
+++ b/src/lists/pastEvents.ts
@@ -0,0 +1,57 @@
+import { EventType } from "../interfaces/event-type";
+
+export const pastEventsList: EventType[] = [
+ {
+ title: "Fall 2025 Catalyst Event",
+ description:
+ 'Concluding the Fall 2025 semester, the OS Dev Club hosted "Catalyst," a collaborative case competition held in partnership with the Charles Chang Institute for Entrepreneurship and Moment Energy. The event focused on addressing key challenges within the renewable energy sector, drawing over 80 students from various academic backgrounds. Participants were tasked with research-based prompts to develop innovative solutions for real-world energy problems. The competition concluded with students pitching their ideas to a panel of industry experts, effectively bridging the gap between classroom learning and practical applications in clean technology.',
+ imgURLs: [
+ "events/catalyst/f25-catalyst-3.jpeg",
+ "events/catalyst/f25-catalyst-2.jpeg",
+ "events/catalyst/f25-catalyst-1.jpeg",
+ "events/catalyst/f25-catalyst-4.jpeg",
+ "events/catalyst/f25-catalyst-5.jpeg",
+ "events/catalyst/f25-catalyst-6.jpeg",
+ ],
+ },
+
+ {
+ title: "Fall 2024 Icebreaker Event",
+ description:
+ "At the beginning of the Fall 2024 semester, the we hosted an amazing icebreaker event to kick off the semester! We introduced the club, our executives, shared our vision, and highlighted exciting projects we'll be working on this term. Our project leads gave insightful presentations, sparking enthusiasm among attendees. It was fantastic to welcome so many passionate students eager to dive into open-source development. The pizza and drinks were a hit, making the evening even more memorable!",
+ imgURLs: [
+ "events/f24-icebreaker-4.jpg",
+ "events/f24-icebreaker-1.jpg",
+ "events/f24-icebreaker-2.jpg",
+ "events/f24-icebreaker-3.jpg",
+ "events/f24-icebreaker-5.jpg",
+ "events/f24-icebreaker-6.jpg",
+ ],
+ },
+ {
+ title: "March Speaker Series",
+ description:
+ "The March Speaker Series was a fantastic success! We were thrilled to host guest speaker David Hobbs, who shared invaluable industry insights and actionable career tips with our members. His engaging session left attendees inspired and motivated as they plan their career journeys. A heartfelt thank you to everyone who joined us and made this event so special!",
+ imgURLs: ["events/mar-speaker-series-1.jpg"],
+ },
+ {
+ title: "February Speaker Series",
+ description:
+ "The February Speaker Series was an incredible experience! We were honored to host Charles Tong, who shared valuable insights into the intersection of Tech and Business. His engaging talk provided our members with fresh perspectives and practical knowledge to apply in their journeys. A big thank you to everyone who attended and contributed thoughtful questions, making the event even more impactful. The energy and enthusiasm of our members makes these events so special!",
+ imgURLs: [
+ "events/feb-speaker-series-1.jpg",
+ "events/feb-speaker-series-2.jpg",
+ "events/feb-speaker-series-3.jpg",
+ ],
+ },
+ {
+ title: "February Speaker Series",
+ description:
+ "The February Speaker Series was an incredible experience! We were honored to host Charles Tong, who shared valuable insights into the intersection of Tech and Business. His engaging talk provided our members with fresh perspectives and practical knowledge to apply in their journeys. A big thank you to everyone who attended and contributed thoughtful questions, making the event even more impactful. The energy and enthusiasm of our members makes these events so special!",
+ imgURLs: [
+ "events/feb-speaker-series-1.jpg",
+ "events/feb-speaker-series-2.jpg",
+ "events/feb-speaker-series-3.jpg",
+ ],
+ },
+];
diff --git a/src/lists/pastProjects.ts b/src/lists/pastProjects.ts
new file mode 100644
index 0000000..848ac6e
--- /dev/null
+++ b/src/lists/pastProjects.ts
@@ -0,0 +1,32 @@
+import { ProjectType } from "../interfaces/project-type";
+
+export const pastProjectsList: ProjectType[] = [
+ {
+ title: "SWE Resume Evaluator SaaS",
+ description:
+ "SWE Resume Evaluator is a Software-as-a-Service (SaaS) web application that uses Naive Bayes classifiers to assess users' resumes for their suitability for various software engineering positions, such as SWE, ML, and QA.",
+ imgURL: "projects/swe-resume-evaluator.png",
+ githubURL: "https://github.com/sfuosdev/swe-resume-evaluator",
+ },
+ {
+ title: "MACM316",
+ description:
+ "Macm316 provides a visualization and plotting tool for numerical methods in Numerical Analysis.",
+ imgURL: "projects/macm316.png",
+ githubURL: "https://github.com/sfuosdev/Macm316",
+ },
+ {
+ title: "PituPiPy",
+ description:
+ "PituPiPy is a Python implementation of P2P (peer-to-peer) networking program that enables users to message and share files within in a P2P network pool.",
+ imgURL: "projects/pitupipy.jpg",
+ githubURL: "https://github.com/sfuosdev/PituPiPy",
+ },
+ {
+ title: "SFU-RMP",
+ description:
+ "Chrome extension for SFU students to provide access to prof rating from RateMyProfessor.com on SFU course registration pages (goSFU, mySchedule)",
+ imgURL: "projects/sfu-rmp.png",
+ githubURL: "https://github.com/sfuosdev/SFU-RMP",
+ },
+];
diff --git a/src/lists/upcomingEvents.ts b/src/lists/upcomingEvents.ts
new file mode 100644
index 0000000..7eb1a02
--- /dev/null
+++ b/src/lists/upcomingEvents.ts
@@ -0,0 +1,3 @@
+import { EventType } from "../interfaces/event-type";
+
+export const upcomingEventsList: EventType[] = [];
diff --git a/tailwind.config.js b/tailwind.config.js
index 5070594..557666c 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -1,40 +1,38 @@
/** @type {import('tailwindcss').Config} */
export default {
- content: [
- "./index.html",
- "./src/**/*.{js,ts,jsx,tsx}",
- ],
+ content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
theme: {
extend: {
colors: {
primary: {
- light: '#c084fc', /* Light purple */
- DEFAULT: '#a855f7', /* Medium purple */
- dark: '#7e22ce', /* Dark purple */
+ light: "#c084fc" /* Light purple */,
+ DEFAULT: "#a855f7" /* Medium purple */,
+ dark: "#7e22ce" /* Dark purple */,
},
secondary: {
- light: '#7dd3fc', /* Light teal */
- DEFAULT: '#38bdf8', /* Medium teal */
- dark: '#0284c7', /* Dark teal */
+ light: "#7dd3fc" /* Light teal */,
+ DEFAULT: "#38bdf8" /* Medium teal */,
+ dark: "#0284c7" /* Dark teal */,
},
background: {
- light: '#312e81', /* Slightly lighter purple for contrast */
- DEFAULT: '#1e1b4b', /* Dark purple background */
- dark: '#0f172a', /* Very dark purple, almost black */
- header: '#282A36',
+ light: "#312e81" /* Slightly lighter purple for contrast */,
+ DEFAULT: "#1e1b4b" /* Dark purple background */,
+ dark: "#0f172a" /* Very dark purple, almost black */,
+ header: "#282A36",
},
icons: {
- logoGradient: 'linear-gradient(135deg, #00b4d8, #48cae4, #90e0ef, #00ff87)',
+ logoGradient:
+ "linear-gradient(135deg, #00b4d8, #48cae4, #90e0ef, #00ff87)",
},
button: {
- primary: '#5C96A7',
- hover: '#74A9B8',
+ primary: "#5C96A7",
+ hover: "#74A9B8",
},
},
fontFamily: {
- club: ['Sarpanch'],
+ club: ["sans-serif"],
},
},
},
plugins: [],
-}
\ No newline at end of file
+};