diff --git a/next.config.mjs b/next.config.mjs
index 4678774..9c9d64b 100644
--- a/next.config.mjs
+++ b/next.config.mjs
@@ -1,4 +1,8 @@
/** @type {import('next').NextConfig} */
-const nextConfig = {};
+const nextConfig = {
+ images: {
+ domains: ["avatars.githubusercontent.com"],
+ },
+};
export default nextConfig;
diff --git a/src/app/(main)/(routes)/projects/content.tsx b/src/app/(main)/(routes)/projects/content.tsx
index d0e04f2..9e2b897 100644
--- a/src/app/(main)/(routes)/projects/content.tsx
+++ b/src/app/(main)/(routes)/projects/content.tsx
@@ -1,774 +1,1012 @@
-import { Backpack, Gamepad2, Hammer, PanelsTopLeft, Smartphone, FileOutput } from 'lucide-react';
-import getSVG from '~/public/svg-data';
-import Link from 'next/link';
-import Image from 'next/image'
-import ApplyButton from '~/src/app/components/Projects/ApplyButton';
-import { getMember } from '~/src/app/components/members';
-import { MemberID } from '~/src/app/components/members';
-import { ExternalLink } from 'lucide-react';
+import {
+ Backpack,
+ Gamepad2,
+ Hammer,
+ PanelsTopLeft,
+ Smartphone,
+ FileOutput,
+} from "lucide-react";
+import getSVG from "~/public/svg-data";
+import Link from "next/link";
+import Image from "next/image";
+import ApplyButton from "~/src/app/components/Projects/ApplyButton";
+import { getMember } from "~/src/app/components/members";
+import { MemberID } from "~/src/app/components/members";
+import { ExternalLink } from "lucide-react";
+import GitMonitor from "~/src/app/components/Projects/GitMonitor";
export const projectIDs = [
- 'academy',
- 'website',
- 'gamedev',
- 'mobile',
- 'scraper',
-
+ "academy",
+ "website",
+ "gamedev",
+ "mobile",
+ "scraper",
] as const;
export type ProjectID = typeof projectIDs[number];
-
export const projectApplicationLinks = {
- academy: 'https://docs.google.com/forms/d/e/1FAIpQLSdO_e-4Sl1JtNxqP674A8ZFL57gcwEu5piLhicXDE44rw9KDQ/viewform?usp=sf_link',
- website: 'https://docs.google.com/forms/d/e/1FAIpQLSd5DWM45tlvF0rzjzHmhI3nRrU5EzuztpMrHMrRwAiXdGl-jg/viewform?usp=sf_link',
- gamedev: 'https://docs.google.com/forms/d/e/1FAIpQLSdkWDK_idZLQJ8X98-9iCYxnwTF03ji3QRdzwiU5wz8d3h8hg/viewform?usp=sf_link',
- mobile: 'https://docs.google.com/forms/d/e/1FAIpQLSd--0dToZAGV4MThGzuiJuSy_GCmFIoPjkgRjAbBPnk0B6MrA/viewform?usp=sf_link',
- scraper: 'https://docs.google.com/forms/d/e/1FAIpQLSfJHHugJUM3Sc_r_A7nCDjfSyaIXTepd90raUZ_zEwVZ_mEMg/viewform?usp=sf_link',
- }
+ academy:
+ "https://docs.google.com/forms/d/e/1FAIpQLSdO_e-4Sl1JtNxqP674A8ZFL57gcwEu5piLhicXDE44rw9KDQ/viewform?usp=sf_link",
+ website:
+ "https://docs.google.com/forms/d/e/1FAIpQLSd5DWM45tlvF0rzjzHmhI3nRrU5EzuztpMrHMrRwAiXdGl-jg/viewform?usp=sf_link",
+ gamedev:
+ "https://docs.google.com/forms/d/e/1FAIpQLSdkWDK_idZLQJ8X98-9iCYxnwTF03ji3QRdzwiU5wz8d3h8hg/viewform?usp=sf_link",
+ mobile:
+ "https://docs.google.com/forms/d/e/1FAIpQLSd--0dToZAGV4MThGzuiJuSy_GCmFIoPjkgRjAbBPnk0B6MrA/viewform?usp=sf_link",
+ scraper:
+ "https://docs.google.com/forms/d/e/1FAIpQLSfJHHugJUM3Sc_r_A7nCDjfSyaIXTepd90raUZ_zEwVZ_mEMg/viewform?usp=sf_link",
+};
export const gitRepoLinks = {
- academy: "https://github.com/ASU-CodeDevils/CD-Academy",
- website: "https://github.com/ASU-CodeDevils/codedevils.org",
- gamedev: "https://github.com/ASU-CodeDevils/CD-GameDev",
- mobile: "https://github.com/ASU-CodeDevils/CD-Mobile",
- scraper: "https://github.com/ASU-CodeDevils/scraper.codedevils.org",
- };
+ academy: "https://github.com/ASU-CodeDevils/CD-Academy",
+ website: "https://github.com/ASU-CodeDevils/codedevils.org",
+ gamedev: "https://github.com/ASU-CodeDevils/CD-GameDev",
+ mobile: "https://github.com/ASU-CodeDevils/CD-Mobile",
+ scraper: "https://github.com/ASU-CodeDevils/scraper.codedevils.org",
+};
+// format: element [0] must be of type MemberID all other elements must be an array of one or
+// two string literals. First element is the contributor's name, second is an optional link.
- // format: element [0] must be of type MemberID all other elements must be an array of one or
- // two string literals. First element is the contributor's name, second is an optional link.
-
const projectTeams = {
- academy: [['pita'],
- ['Allie Betlewicz'],
- ['John Miller'],
- ['Jacob Kobrick'],
- ['Adrian Parra'],
- ],
- website: [ ['pita'],
- ['Juliana Bush'],
- ['Ella Rushing'],
- ['Boubacar S Diiallo'],
- ['John Miller'],
- ['Rhett Harrison'],
- ['David Nevarez', 'https://davidnevarez.info/'],
- ['Alejandro Jimenez'],
- ['Darshan Phaldesai'],
- ['Jaith Darrah'],
- ['Tyler Wallace']
- ],
- gamedev: [ ['remi'],
- ['Autumn O'],
- ['Pita Sherwood', 'https://pita.blue'],
- ['John Miller'],
- ['Alejandro Jimenez'],
- ['Josh Walker'],
- ['Carter Hollman'],
- ['Jaith Darrah', 'https://www.jaithdarrah.com/'],
- ['Krishnaprasad Sreekum']
- ],
- mobile: [['pita'],
- ['John Miller'],
- ['Alejandro Jimenez'],
- ['Korbin Hillan'],
- ],
- scraper: [
- ['frankie'],
- ['Logan Wright'],
- ['Carter Hollman'],
- ['Derrick Berko'],
- ['Michael Ellmer']
- ]
-}
-
+ academy: [
+ ["pita"],
+ ["Allie Betlewicz"],
+ ["John Miller"],
+ ["Jacob Kobrick"],
+ ["Adrian Parra"],
+ ],
+ website: [
+ ["pita"],
+ ["Juliana Bush"],
+ ["Ella Rushing"],
+ ["Boubacar S Diiallo"],
+ ["John Miller"],
+ ["Rhett Harrison"],
+ ["David Nevarez", "https://davidnevarez.info/"],
+ ["Alejandro Jimenez"],
+ ["Darshan Phaldesai"],
+ ["Jaith Darrah"],
+ ["Tyler Wallace"],
+ ],
+ gamedev: [
+ ["remi"],
+ ["Autumn O"],
+ ["Pita Sherwood", "https://pita.blue"],
+ ["John Miller"],
+ ["Alejandro Jimenez"],
+ ["Josh Walker"],
+ ["Carter Hollman"],
+ ["Jaith Darrah", "https://www.jaithdarrah.com/"],
+ ["Krishnaprasad Sreekum"],
+ ],
+ mobile: [["pita"], ["John Miller"], ["Alejandro Jimenez"], ["Korbin Hillan"]],
+ scraper: [
+ ["frankie"],
+ ["Logan Wright"],
+ ["Carter Hollman"],
+ ["Derrick Berko"],
+ ["Michael Ellmer"],
+ ],
+};
-
- const processContent = ({projectID, contentID, pageID}:{
- projectID: ProjectID,
- contentID: number,
- pageID: string
- }) => {
-
- const content = {
- academy: [(
-
-
CodeDevils Academy
-
-
-
-
- Join the Project!
-
-
- ), (
-
A sister website to CodeDevils.org. A content library for users to visit and learn how to code!
- ), (
- <>
-
- The sister website to CodeDevils.org, CodeDevils Academy is our content management and learning
- platform. We're excited to announce the development of our dedicated learning platform designed
- to empower our community through accessible educational resources. This project will be built
- from the ground up, although the designs for it are in the late stages. Our vision for CodeDevils
- Academy is to create an engaging, user-friendly environment where members can easily access a wealth
- of learning materials tailored to their needs.
-
- We aim to provide a seamless experience for all users. The platform will feature a clean and organized
- layout, allowing members to quickly find exclusive tutorials, courses, and resources without hassle.
- We plan to create a robust content management system that will allow us to upload, edit, and manage
- educational materials efficiently.
-
- The platform will host a variety of content formats, including written tutorials, video lessons,
- quizzes, and coding challenges. By offering multiple learning styles, we aim to engage all members,
- whether they are beginners or advanced developers. To keep our members motivated, we'll implement
- progress tracking features that allow users to monitor their advancement through courses and tutorials.
- This will help them set goals and celebrate their achievements.
-
- If you're ready to make a difference and help us build CodeDevils Academy, we invite you to apply.
- Let's create a premier learning platform that reflects our commitment to education and community.
- Your journey with CodeDevils starts here—let's make something great!
-
+ A sister website to CodeDevils.org. A content library for users to visit
+ and learn how to code!
+
,
+ <>
+
+ The sister website to CodeDevils.org, CodeDevils Academy is our
+ content management and learning platform. We're excited to
+ announce the development of our dedicated learning platform designed
+ to empower our community through accessible educational resources.
+ This project will be built from the ground up, although the designs
+ for it are in the late stages. Our vision for CodeDevils Academy is to
+ create an engaging, user-friendly environment where members can easily
+ access a wealth of learning materials tailored to their needs.
+
+
+ We aim to provide a seamless experience for all users. The platform
+ will feature a clean and organized layout, allowing members to quickly
+ find exclusive tutorials, courses, and resources without hassle. We
+ plan to create a robust content management system that will allow us
+ to upload, edit, and manage educational materials efficiently.
+
+
+ The platform will host a variety of content formats, including written
+ tutorials, video lessons, quizzes, and coding challenges. By offering
+ multiple learning styles, we aim to engage all members, whether they
+ are beginners or advanced developers. To keep our members motivated,
+ we'll implement progress tracking features that allow users to
+ monitor their advancement through courses and tutorials. This will
+ help them set goals and celebrate their achievements.
+
+
+ If you're ready to make a difference and help us build CodeDevils
+ Academy, we invite you to apply. Let's create a premier learning
+ platform that reflects our commitment to education and community. Your
+ journey with CodeDevils starts here—let's make something great!
+
- This is the codedevils.org project; the website you're currently looking at. With many features
- planned, and with an active rebrand going on, we'll need some talented hands to keep this ship running.
- This is considered one of our core projects, meaning it is essential to the CodeDevils brand and
- identity. We build our websites in Next.js and Typescript. Next.js is a powerful framework for
- JavaScript/TypeScript that handles frontend and backend deployments. One primary focus of the
- website's design is to keep the code maintainable, manageable, and readable. We will not be building
- web pages that are simply hard-coded in HTML, but are dynamic and rely on backend data structures to
- function.
-
- We have a lot of fun features planned, many of them are just to show off our skills as programmers,
- but we're here to advertise our organization and put our best foot forward to outside companies,
- prospective contributors, and to the university we stand behind. Our project is dedicated not to
- being flashy, but to being robust and respectable to the community at large. We aim to create a
- website that is not just functional but also resonates with our audience, reflecting our dedication
- to quality and professionalism.
-
- We're seeking contributors who share our passion for technology and community. Whether you're a
- seasoned developer, a creative designer, or even someone wanting to dip their toes into web design
- and learn from us, you're in the right place. If you're ready to make a meaningful contribution,
- we invite you to join us. Whether you can dedicate a few hours or want to take on a larger role,
- your efforts will help shape the future of CodeDevils.org. This is more than just coding; it's
- about building a resource that empowers our community and showcases our commitment to excellence.
-
- Let's work together to create a website that embodies the spirit of CodeDevils—dynamic, robust,
- and community-focused. Your journey with us starts here. Let's make it remarkable!
-
+
+
No contributors just yet. Be the first to apply!
>
- ), (
-
-
-
-
Current Project Goals
-
-
-
-
Add and improve features using service API's
-
Redesign the website's colors and design to align with CodeDevils rebranding
A series of Game Development projects to implement in various places around CodeDevils!
- ), (
- <>
-
- Do you want to learn more about game development? Then the CD-GameDev project is for you.
- We have decided to use the Rust programming language, a growingly popular, high-performance,
- multi-purpose programming language that is sure to be a great tool to add to your skill set.
- And although most games tend to use object oriented programming, we have opted to use a different
- paradigm that is also growing more popular in the game dev world; Entity Component System (ECS).
- This paradigm allows for major performance gains in compute heavy games, and also offers a different
- way to think about objects in our game by separating data and systems. For this endeavor, we will be
- using the Bevy ECS framework, one of the best on the market.
-
- One of the main drivers behind the decision of using Rust + Bevy, was that it is open-source, and
- is turtles all the way down. In other words, everything is Rust from top to bottom, allowing us
- to delve deep into how the Bevy ECS framework, and all its accompanying tools, work under the hood.
- We want to teach you about all the components that goes into creating and running a game, and traditional
- game engines usually abstract all those details away. But that is not to say that Bevy is not easy to use.
- After some practice, we believe you'll find that it is incredibly ergonomic and user friendly, thanks to
- the amazing engineers contributing to the Bevy project.
-
+ {link ? (
+
+ {member}
- , but might take elements from other genres as
- well. It will be a 2D, side-view game, with a pixel art style. The features and systems we will implement
- will evolve over time as we prototype and progress together. By joining this project, you won't just be
- coding what we tell you to code, we also want you to be part of the discussion about where the game is headed
- in all of its aspect, would it be features and systems, or story and lore.
-
- The journey will be a challenging one, but will be very rewarding as well. You might have to learn quite
- a few things before you can get started contributing, especially if you never coded in Rust or are new
- to game development, but we will be there every step of the way, and we have curated a selection of
- resources to help you get started using Rust and Bevy, so that you can start your game dev journey
- with us as fast as possible. From things like how to handle asset loading, animations, handling audio,
- to how game handles physics and graphics rendering, you'll come out of this project with a greater
- understanding of all that comes into play when creating games.
-
- >
- ), (
-
-
-
-
Current Project Goals
-
-
-
-
Create systems and plugins to facilitate the creation of the game
-
Program and integrate multiple gameplay systems together
Our Mobile app! Built for iOS and Android, helps contributors keep up to date with projects and keeps members aware of events!
- ), (
+ ) : (
+
{member}
+ )}
+
+ ) : (
+ <>>
+ )
+ )
+ ) : (
<>
-
- Welcome to the CodeDevils Mobile project page! As part of our commitment to fostering a community of
- developers, we are excited to announce the development of our mobile app, CodeDevils Mobile. This project
- is designed to create a welcoming space for anyone interested in mobile development, whether you're a
- beginner looking to learn or an experienced developer eager to share your knowledge.
-
- With CodeDevils Mobile, our vision is to build an inclusive platform that encourages exploration and
- collaboration in the world of mobile app development. We recognize that mobile technology is an integral
- part of our lives, and we want to provide a space where members can come together to learn, share ideas,
- and showcase their projects. By utilizing Dart/Flutter, Swift, and Kotlin, we aim to create a versatile
- application that caters to both iOS and Android platforms.
-
- CodeDevils Mobile, in its current vision, will serve primarily as a community platform for CodeDevils
- events, Academy content, and have a contributor platform to stay up to date with the latest project
- announcements and changes. Additional features will come as the project unfolds. We have a lot of
- excitement for this project and we're very excited to see what it becomes.
-
- If you have a particular interest or passion for mobile development, we encourage you to get started
- early on this project and make your mark! Your influence on the direction and execution of this project
- will be invaluable to both your career and to the project as a whole.
-
+
+
No contributors just yet. Be the first to apply!
>
- ), (
-
-
-
-
Current Project Goals
-
-
-
-
Create systems and plugins to facilitate the creation of the game
-
Program and integrate multiple gameplay systems together
A job post scraping tool built to keep our members up to date with the latest developments in the job market!
- ), (
+ gamedev: [
+
+
CodeDevils GameDev
+
+
+
+
+ Join the Project!
+
+
,
+
+ A series of Game Development projects to implement in various places
+ around CodeDevils!
+
,
+ <>
+
+ Do you want to learn more about game development? Then the CD-GameDev
+ project is for you. We have decided to use the Rust programming
+ language, a growingly popular, high-performance, multi-purpose
+ programming language that is sure to be a great tool to add to your
+ skill set. And although most games tend to use object oriented
+ programming, we have opted to use a different paradigm that is also
+ growing more popular in the game dev world; Entity Component System
+ (ECS). This paradigm allows for major performance gains in compute
+ heavy games, and also offers a different way to think about objects in
+ our game by separating data and systems. For this endeavor, we will be
+ using the Bevy ECS framework, one of the best on the market.
+
+
+ One of the main drivers behind the decision of using Rust + Bevy, was
+ that it is open-source, and is turtles all the way down. In other
+ words, everything is Rust from top to bottom, allowing us to delve
+ deep into how the Bevy ECS framework, and all its accompanying tools,
+ work under the hood. We want to teach you about all the components
+ that goes into creating and running a game, and traditional game
+ engines usually abstract all those details away. But that is not to
+ say that Bevy is not easy to use. After some practice, we believe
+ you'll find that it is incredibly ergonomic and user friendly,
+ thanks to the amazing engineers contributing to the Bevy project.
+
+
+ The game itself will be inspired from the{" "}
+
+
+ metroidvania genre
+
+
+ , but might take elements from other genres as well. It will be a 2D,
+ side-view game, with a pixel art style. The features and systems we
+ will implement will evolve over time as we prototype and progress
+ together. By joining this project, you won't just be coding what
+ we tell you to code, we also want you to be part of the discussion
+ about where the game is headed in all of its aspect, would it be
+ features and systems, or story and lore.
+
+
+ The journey will be a challenging one, but will be very rewarding as
+ well. You might have to learn quite a few things before you can get
+ started contributing, especially if you never coded in Rust or are new
+ to game development, but we will be there every step of the way, and
+ we have curated a selection of resources to help you get started using
+ Rust and Bevy, so that you can start your game dev journey with us as
+ fast as possible. From things like how to handle asset loading,
+ animations, handling audio, to how game handles physics and graphics
+ rendering, you'll come out of this project with a greater
+ understanding of all that comes into play when creating games.
+
+ >,
+
+
+
+
Current Project Goals
+
+
+
+
+ Create systems and plugins to facilitate the creation of the game
+
+
Program and integrate multiple gameplay systems together
- CD-Scraper is a project designed to teach the fundamentals of web scaping and the tools to make that happen.
- The goal is to design a system for scraping job posting from various websites and serving the collected data
- through an API build using SpringBoot. As this project is going to be based fully in Java, it is friendly to
- those that are just starting off their programming journey.
-
- Throughout this project, contributors will have the opportunity to collaborate with peers, share insights,
- and learn from each other. This team-oriented approach fosters a supportive environment where beginners can
- ask questions and gain confidence in their coding abilities. You'll not only develop your technical skills
- but also engage in problem-solving and critical thinking as you navigate the challenges of web scraping
- together.
-
- Each contributor will be responsible for implementing a script to scrape different job posting websites
- (i.e. Indeed, LinkedIn). Through this process, you will, hopefully, have a grasp on the some fundamental
- HTML parsing.
-
- In this project, you will NOT be working with APIs or any web related technology. Those will be managed
- by staff to ensure this project is easy to pick up for those new to programming, but wanting to contribute
- to a more complex project outside of school assignments. Also, you will NOT be working with any data and
- their persistence (i.e. databases).
-
- If you want to apply what you have learned about Java in class into a project that is more tangible,
- join our beginner-friendly project by filling out our application. Your project lead will reach out to you
- within the week. Let's learn to code by building something meaningful and fun!
-
+
+
No contributors just yet. Be the first to apply!
>
- ), (
-
-
-
-
Current Project Goals
-
-
-
-
Learn about web scraping
-
Take Java skills from school and implement them into a tangible project
-
Gain confidence to start your own personal projects
-
-
-
-
- ), (
-
-
- { getSVG({ svgID: 9 }) }
-
-
- ), (
-
-
GitHub Activity
-
-
- ), (
-
-
-
-
-
- ), (
-
-
-
-
Project Team
-
-
-
-
-
{ getMember({memberID: projectTeams[projectID][0]?.[0] as MemberID, memberData: 'name'}) }
-
{ getMember({memberID: projectTeams[projectID][0]?.[0] as MemberID, memberData: 'bio'}) }
,
+ ],
- if (!(projectID in content)) { throw new Error('Invalid Project ID'); }
- if (contentID < 0 || contentID >= content[projectID].length) { throw new Error('Invalid Content ID'); }
+ mobile: [
+
+
CodeDevils Mobile
+
+
+
+
+ Join the Project!
+
+
,
+
+ Our Mobile app! Built for iOS and Android, helps contributors keep up to
+ date with projects and keeps members aware of events!
+
,
+ <>
+
+ Welcome to the CodeDevils Mobile project page! As part of our
+ commitment to fostering a community of developers, we are excited to
+ announce the development of our mobile app, CodeDevils Mobile. This
+ project is designed to create a welcoming space for anyone interested
+ in mobile development, whether you're a beginner looking to learn
+ or an experienced developer eager to share your knowledge.
+
+
+ With CodeDevils Mobile, our vision is to build an inclusive platform
+ that encourages exploration and collaboration in the world of mobile
+ app development. We recognize that mobile technology is an integral
+ part of our lives, and we want to provide a space where members can
+ come together to learn, share ideas, and showcase their projects. By
+ utilizing Dart/Flutter, Swift, and Kotlin, we aim to create a
+ versatile application that caters to both iOS and Android platforms.
+
+
+ CodeDevils Mobile, in its current vision, will serve primarily as a
+ community platform for CodeDevils events, Academy content, and have a
+ contributor platform to stay up to date with the latest project
+ announcements and changes. Additional features will come as the
+ project unfolds. We have a lot of excitement for this project and
+ we're very excited to see what it becomes.
+
+
+ If you have a particular interest or passion for mobile development,
+ we encourage you to get started early on this project and make your
+ mark! Your influence on the direction and execution of this project
+ will be invaluable to both your career and to the project as a whole.
+
+ >,
+
+
+
+
Current Project Goals
+
+
+
+
+ Create systems and plugins to facilitate the creation of the game
+
+
Program and integrate multiple gameplay systems together
+ A job post scraping tool built to keep our members up to date with the
+ latest developments in the job market!
+
,
+ <>
+
+ CD-Scraper is a project designed to teach the fundamentals of web
+ scaping and the tools to make that happen. The goal is to design a
+ system for scraping job posting from various websites and serving the
+ collected data through an API build using SpringBoot. As this project
+ is going to be based fully in Java, it is friendly to those that are
+ just starting off their programming journey.
+
+
+ Throughout this project, contributors will have the opportunity to
+ collaborate with peers, share insights, and learn from each other.
+ This team-oriented approach fosters a supportive environment where
+ beginners can ask questions and gain confidence in their coding
+ abilities. You'll not only develop your technical skills but also
+ engage in problem-solving and critical thinking as you navigate the
+ challenges of web scraping together.
+
+
+ Each contributor will be responsible for implementing a script to
+ scrape different job posting websites (i.e. Indeed, LinkedIn). Through
+ this process, you will, hopefully, have a grasp on the some
+ fundamental HTML parsing.
+
+
+ In this project, you will NOT be working with APIs or any web related
+ technology. Those will be managed by staff to ensure this project is
+ easy to pick up for those new to programming, but wanting to
+ contribute to a more complex project outside of school assignments.
+ Also, you will NOT be working with any data and their persistence
+ (i.e. databases).
+
+
+ If you want to apply what you have learned about Java in class into a
+ project that is more tangible, join our beginner-friendly project by
+ filling out our application. Your project lead will reach out to you
+ within the week. Let's learn to code by building something
+ meaningful and fun!
+
+ >,
+
+
+
+
Current Project Goals
+
+
+
+
Learn about web scraping
+
+ Take Java skills from school and implement them into a tangible
+ project
+
+
Gain confidence to start your own personal projects
Get involved with our open-source projects to build your portfolio
up for future job opportunities. We have a variety of projects that
you can contribute to help you grow your skills and gain real-world
@@ -128,106 +160,109 @@ const projectsPage = () => {
-
{/* List of Project Titles. Dynamically generated. */}
-