diff --git a/components/currentProjectCard.jsx b/components/currentProjectCard.jsx
index b8ccfc3..914d16c 100644
--- a/components/currentProjectCard.jsx
+++ b/components/currentProjectCard.jsx
@@ -42,7 +42,7 @@ const styles = {
display: 'flex',
flexDirection: 'row',
backgroundColor: '#333',
- padding: '16px',
+ padding: '25px',
borderRadius: '8px',
width: '100%',
maxWidth: '600px',
@@ -52,31 +52,37 @@ const styles = {
display: 'flex',
flexDirection: 'column',
alignItems: 'center',
- width: '100%',
+ flex: 1,
},
projectInfo: {
- marginBottom: '16px',
+ flex: '1 1 300px',
+ alignItems: 'center',
+ justifyContent: 'center',
},
projectImage: {
borderRadius: '10%',
objectFit: 'cover',
- width: 'auto',
- height: '100%',
+ width: '100%',
+ height: 'auto',
},
projectTitle: {
marginTop: '16px',
fontSize: '24px',
fontWeight: 'bold',
textAlign: 'center',
+ color: 'white',
},
leadsInfo: {
display: 'flex',
flexDirection: 'column',
alignItems: 'center',
+ justifyContent: 'center',
+ flex: '1 1 75px',
},
leadText: {
fontSize: '20px',
fontWeight: 'bold',
+ color: 'white',
},
leadsContainer: {
display: 'flex',
@@ -101,5 +107,6 @@ const styles = {
textAlign: 'center',
fontSize: '14px',
fontWeight: '500',
+ color: 'white',
},
};
diff --git a/components/projectCard.jsx b/components/projectCard.jsx
index 5456639..efd8f74 100644
--- a/components/projectCard.jsx
+++ b/components/projectCard.jsx
@@ -3,7 +3,10 @@ import Image from "next/image";
import Icon from "@/components/icon";
export default function ProjectCard({ project, basePath }) {
- const imagePath = `${basePath}/images/projects/${project.label.toLowerCase().split(" ").join("_")}.jpg`;
+ const imagePath = `${basePath}/images/projects/${project.label
+ .toLowerCase()
+ .split(" ")
+ .join("_")}.jpg`;
return (
-
{project.label}
+
+ {project.label}
+
{project.github && (
-
-
+
)}
{project.googleSlides && (
-
-
+
diff --git a/config/communityImages.json b/config/communityImages.json
index f654435..e0f7cd6 100644
--- a/config/communityImages.json
+++ b/config/communityImages.json
@@ -1,11 +1,10 @@
[
- {
- "name": "WN24 Project Expo",
- "image": "WN24_EXPO.JPG"
- },
- {
- "name": "WN24 Data Science Night",
- "image": "WN24_DSN.JPG"
- }
- ]
-
\ No newline at end of file
+ {
+ "name": "",
+ "image": "WN24_EXPO.JPG"
+ },
+ {
+ "name": "",
+ "image": "WN24_DSN.JPG"
+ }
+]
diff --git a/config/currentProjects.json b/config/currentProjects.json
index c17f7f8..7a88499 100644
--- a/config/currentProjects.json
+++ b/config/currentProjects.json
@@ -25,7 +25,7 @@
},
{
"label": "SoccerNet",
- "image": "soccernet.jpg",
+ "image": "soccernet.png",
"leads": [
{ "name": "Antonio Capdevielle", "image": "temp.jpeg" },
{ "name": "Shiva Chandran", "image": "shivac.jpg" }
@@ -85,7 +85,7 @@
"leads": [
{ "name": "Jason Yen", "image": "temp.jpeg" },
{ "name": "Onat Ozer", "image": "temp.jpeg" },
- { "name": "Adita Sinha", "image": "temp.jpeg" }
+ { "name": "Aditya Sinha", "image": "temp.jpeg" }
]
}
]
diff --git a/config/homepage.json b/config/homepage.json
index 921814e..77ee673 100644
--- a/config/homepage.json
+++ b/config/homepage.json
@@ -1,17 +1,18 @@
[
- {
- "name": "Image Colorization",
- "image": "image_colorization.png",
- "link": "https://docs.google.com/document/d/19CekIh2sZGKKMoRA5VNFEcjNGHc9GEYt/"
- },
- {
- "name": "Webscraping",
- "image": "webscraping.png",
- "link": "https://docs.google.com/document/d/1uVD5nvpA0lg9E8tE9khuEQDlwCwHKgrHGqtvzKe2JoA/"
- },
- {
- "name": "Footwear Classification",
- "image": "footwear_classification.png",
- "link": "https://docs.google.com/presentation/d/1Bb7nCc4o3fmV4OkR-NOeAwzl6i1E_BA_V937Gjoq1wc/"
- }
-]
\ No newline at end of file
+ {
+ "name": "LLM Augmentation",
+ "image": "llm_augmentation.png",
+ "link": "https://github.com/MichiganDataScienceTeam/W24-llm-augmentation"
+ },
+
+ {
+ "name": "Image Colorization",
+ "image": "image_colorization.png",
+ "link": "https://docs.google.com/document/d/19CekIh2sZGKKMoRA5VNFEcjNGHc9GEYt/"
+ },
+ {
+ "name": "Real Vs Fake Face",
+ "image": "rvf.png",
+ "link": "https://github.com/MichiganDataScienceTeam/W24-RvF/tree/main"
+ }
+]
diff --git a/config/ourteam.json b/config/ourteam.json
index d422e69..8859b0a 100644
--- a/config/ourteam.json
+++ b/config/ourteam.json
@@ -158,6 +158,11 @@
"groupName": "Project Committee",
"description": "Project advisors who help MDST operate our projects smoothly and at scale. Led by the VP of Projects.",
"members": [
+ {
+ "name": "Aaron Williams",
+ "title": "Project Planner",
+ "image": "temp.jpeg"
+ },
{
"name": "Anthony Chen",
"title": "Project Planner",
diff --git a/config/pastProjects.json b/config/pastProjects.json
index 3e9fa95..8ffcc7e 100644
--- a/config/pastProjects.json
+++ b/config/pastProjects.json
@@ -1,19 +1,23 @@
{
"Winter 2024": [
{
- "label": "Codenames"
+ "label": "Codenames",
+ "googleSlides": "https://docs.google.com/presentation/d/1EEHSw-WKN6Oes6NFfYK7iZHj91J1CgmHiiV8aO99r6I/"
},
{
- "label": "LLM Augmentation"
+ "label": "LLM Augmentation",
+ "github": "https://github.com/MichiganDataScienceTeam/W24-llm-augmentation"
},
{
"label": "Poker Bot"
},
{
- "label": "Rate My Professor Sentiment Analysis"
+ "label": "RMP Sentiment Analysis",
+ "github": "https://github.com/MichiganDataScienceTeam/WN2024-RMP"
},
{
- "label": "Real vs Fake Faces"
+ "label": "Real vs Fake Faces",
+ "github": "https://github.com/MichiganDataScienceTeam/W24-RvF"
},
{
"label": "Shazam Clone"
@@ -22,10 +26,16 @@
"label": "Spotify Analysis"
},
{
- "label": "Stock Market Analysis"
+ "label": "Stock Market Analysis",
+ "github": "https://github.com/MichiganDataScienceTeam/W24-StockAnalysis"
},
{
- "label": "TikTok Videos"
+ "label": "TikTok Videos",
+ "github": "https://github.com/MichiganDataScienceTeam/W24-TikTokVideos"
+ },
+ {
+ "label": "Neural Nets from Scratch",
+ "googleSlides": "https://docs.google.com/presentation/d/1eygF8pf7d1f8UMB-v2oypFPFSCwICGlTM48-deNqibI/"
}
],
"Fall 2023": [
@@ -33,7 +43,8 @@
"label": "Automated Poker Bot"
},
{
- "label": "College Football Success Factors"
+ "label": "College Football Success Factors",
+ "googleSlides": "https://docs.google.com/presentation/d/1tmIdFj_GK67cwrD3ueg2BlnUTtP9SWHVOYZPKaXCI5A/"
},
{
"label": "Cracking Wordle"
@@ -45,16 +56,20 @@
"label": "NHANES"
},
{
- "label": "Real vs Photoshopped Faces"
+ "label": "Real vs Fake Faces",
+ "github": "https://github.com/MichiganDataScienceTeam/W24-RvFF"
},
{
- "label": "Reinforcement Learning"
+ "label": "Reinforcement Learning",
+ "github": "https://github.com/MichiganDataScienceTeam/F23-Reinforcement-Learning",
+ "googleSlides": "https://docs.google.com/presentation/d/1d4I_1fqJCD7ZppEVOkYuTzfMbQ8NKCpYjbQkIEoSwNk/"
},
{
"label": "Sentence Completer"
},
{
- "label": "Webscraping"
+ "label": "Webscraping",
+ "github": "https://github.com/MichiganDataScienceTeam/F23-Webscraping"
}
],
"Winter 2023": [
@@ -91,29 +106,36 @@
],
"Fall 2022": [
{
- "label": "College Football"
+ "label": "College Football",
+ "googleSlides": "https://docs.google.com/document/d/1aD0UfCwea5I35nqoAEfS0PNpnzrAv3LX-X4kTCLVuu4/"
},
{
- "label": "Dogs vs Cats"
+ "label": "Dogs vs Cats",
+ "googleSlides": "https://docs.google.com/presentation/d/1p-nNSJNfZd09ApFk05hJZfRlY2Z8PlsiVTgp0i6_U44/"
},
{
- "label": "Image Super Resolution"
+ "label": "Image Super Resolution",
+ "googleSlides": "https://drive.google.com/file/d/1cKrjVCl-M5wXzARgPMj8Gr-foZpEkIS_/"
},
{
"label": "Language Translation Application"
},
{
- "label": "Pokemon Data Science"
+ "label": "Pokemon Data Science",
+ "github": "https://docs.google.com/presentation/d/1vgOGh7djJRqNI7Ihf-R4ZZh7ON_KlCtCsHYucy0Aujk/"
},
{
- "label": "SEC Insider Information",
- "github": "https://github.com/MichiganDataScienceTeam/F22-SEC-Insider-Trading"
+ "label": "SEC Insider Trading",
+ "github": "https://github.com/MichiganDataScienceTeam/F22-SEC-Insider-Trading",
+ "googleSlides": "https://docs.google.com/presentation/d/1dfPMDMX9n3X6GxDN9UDY6cfULwg4e-BLKfpSPziidKY/"
},
{
- "label": "Sports Data Science"
+ "label": "Sports Data Science",
+ "googleSlides": "https://docs.google.com/presentation/d/1q_kJey90QQsP4Nm5b96o5NVMg4gRgbTqe9THJfaXle0/"
},
{
- "label": "TLDR Machine"
+ "label": "TLDR Machine",
+ "googleSlides": "https://docs.google.com/presentation/d/1dmCTwBANTU1W1ik5dSXuwD5ycRRRCtjyiQzMFE2zDgs/"
},
{
"label": "Twitter Sentiment Analysis"
diff --git a/config/sponsors.json b/config/sponsors.json
index df64309..5893d4c 100644
--- a/config/sponsors.json
+++ b/config/sponsors.json
@@ -7,6 +7,11 @@
"link": "https://www.myrocketcareer.com/",
"image": "rocket.png"
},
+ {
+ "name": "Discover",
+ "link": "https://www.discover.com/",
+ "image": "discover.png"
+ },
{
"name": "Wolverine Trading",
"link": "https://www.wolve.com/",
diff --git a/pages/projects/[...slug].jsx b/pages/projects/[...slug].jsx
index 75130ac..902823e 100644
--- a/pages/projects/[...slug].jsx
+++ b/pages/projects/[...slug].jsx
@@ -7,6 +7,18 @@ import Hero from "@/components/hero";
import Image from "next/image";
import HeadContent from "@/components/headContent";
+// Function to get all projects from JSON files
+const getAllProjects = () => {
+ try {
+ const pastProjects = JSON.parse(fs.readFileSync(path.join(process.cwd(), 'config', 'pastProjects.json'), 'utf-8'));
+ const currentProjects = JSON.parse(fs.readFileSync(path.join(process.cwd(), 'config', 'currentProjects.json'), 'utf-8'));
+ return [...pastProjects, ...currentProjects];
+ } catch (error) {
+ console.error("Error reading or parsing JSON files:", error);
+ return [];
+ }
+};
+
function ProjectPage({ content, title, images }) {
const router = useRouter();
const basePath = router.basePath;
@@ -29,12 +41,19 @@ function ProjectPage({ content, title, images }) {
}
export async function getStaticProps({ params }) {
+ const allProjects = getAllProjects();
const [subdirectory, innerDir] = params.slug;
- const filePath = path.join(process.cwd(), 'public', 'projects', subdirectory, innerDir, 'writeup.md');
+ const project = allProjects.find(proj => proj.subdirectory === subdirectory && proj.innerDir === innerDir);
+
+ if (!project) {
+ return { notFound: true };
+ }
+
+ const filePath = path.join(process.cwd(), 'content', 'projects', subdirectory, innerDir, 'writeup.md');
const fileContent = fs.readFileSync(filePath, 'utf-8');
- const imagesDir = path.join(process.cwd(), 'public', 'projects', subdirectory, innerDir, 'images');
- const images = fs.existsSync(imagesDir) ? fs.readdirSync(imagesDir).map(img => path.join('/projects', subdirectory, innerDir, 'images', img)) : [];
+ const imagesDir = path.join(process.cwd(), 'public', 'images', 'projects', subdirectory, innerDir);
+ const images = fs.existsSync(imagesDir) ? fs.readdirSync(imagesDir).map(img => path.join('/images/projects', subdirectory, innerDir, img)) : [];
return {
props: {
@@ -46,13 +65,13 @@ export async function getStaticProps({ params }) {
}
export async function getStaticPaths() {
- const projectsDirectory = path.join(process.cwd(), "public", "projects");
- const subdirectories = fs.readdirSync(projectsDirectory, { withFileTypes: true }).filter(dirent => dirent.isDirectory());
+ const allProjects = getAllProjects();
- const paths = subdirectories.flatMap(subdirectory => {
- const innerDirectories = fs.readdirSync(path.join(projectsDirectory, subdirectory.name), { withFileTypes: true }).filter(dirent => dirent.isDirectory());
- return innerDirectories.map(innerDir => ({ params: { slug: [subdirectory.name, innerDir.name] } }));
- });
+ const paths = allProjects.map(project => ({
+ params: {
+ slug: [project.subdirectory, project.innerDir],
+ },
+ }));
return {
paths,
diff --git a/pages/projects/index.jsx b/pages/projects/index.jsx
index 99738a8..32e3b44 100644
--- a/pages/projects/index.jsx
+++ b/pages/projects/index.jsx
@@ -3,8 +3,8 @@ import path from "path";
import HeadContent from "@/components/headContent";
import Hero from "@/components/hero";
import Layout from "@/components/layout";
-import CurrentProjectCard from "@/components/CurrentProjectCard";
-import ProjectCard from "@/components/ProjectCard";
+import CurrentProjectCard from "@/components/currentProjectCard";
+import ProjectCard from "@/components/projectCard";
import { useRouter } from "next/router";
export default function Projects({ groupedLinks, currentProjects }) {
diff --git a/public/images/footwear_classification.png b/public/images/footwear_classification.png
deleted file mode 100644
index cf1369a..0000000
Binary files a/public/images/footwear_classification.png and /dev/null differ
diff --git a/public/images/llm_augmentation.png b/public/images/llm_augmentation.png
new file mode 100644
index 0000000..9930bd5
Binary files /dev/null and b/public/images/llm_augmentation.png differ
diff --git a/public/images/projects/network_instrusion_detection.jpg b/public/images/projects/network_instrusion_detection.jpg
deleted file mode 100644
index 73e0f8e..0000000
Binary files a/public/images/projects/network_instrusion_detection.jpg and /dev/null differ
diff --git a/public/images/projects/network_intrusion_detection.jpg b/public/images/projects/network_intrusion_detection.jpg
new file mode 100644
index 0000000..8835f64
Binary files /dev/null and b/public/images/projects/network_intrusion_detection.jpg differ
diff --git a/public/images/projects/neural_nets_from_scratch.jpg b/public/images/projects/neural_nets_from_scratch.jpg
new file mode 100644
index 0000000..2be140e
Binary files /dev/null and b/public/images/projects/neural_nets_from_scratch.jpg differ
diff --git a/public/images/projects/rate_my_professor_sentiment_analysis.jpg b/public/images/projects/rate_my_professor_sentiment_analysis.jpg
deleted file mode 100644
index 2de3c83..0000000
Binary files a/public/images/projects/rate_my_professor_sentiment_analysis.jpg and /dev/null differ
diff --git a/public/images/projects/rmp_sentiment_analysis.jpg b/public/images/projects/rmp_sentiment_analysis.jpg
new file mode 100644
index 0000000..3179efd
Binary files /dev/null and b/public/images/projects/rmp_sentiment_analysis.jpg differ
diff --git a/public/images/projects/sec_insider_information.jpg b/public/images/projects/sec_insider_trading.jpg
similarity index 100%
rename from public/images/projects/sec_insider_information.jpg
rename to public/images/projects/sec_insider_trading.jpg
diff --git a/public/images/projects/soccernet.png b/public/images/projects/soccernet.png
new file mode 100644
index 0000000..ee5090c
Binary files /dev/null and b/public/images/projects/soccernet.png differ
diff --git a/public/images/rvf.png b/public/images/rvf.png
new file mode 100644
index 0000000..9b92d3f
Binary files /dev/null and b/public/images/rvf.png differ
diff --git a/public/images/sponsors/discover.png b/public/images/sponsors/discover.png
new file mode 100644
index 0000000..a2dd830
Binary files /dev/null and b/public/images/sponsors/discover.png differ