Skip to content

Commit 8b49f05

Browse files
authored
Merge pull request #16 from DataScience-GT/rework/turbbo
fix the turbo parts & website
2 parents 7455c35 + 08428ce commit 8b49f05

File tree

8 files changed

+327
-50
lines changed

8 files changed

+327
-50
lines changed
Lines changed: 249 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,249 @@
1+
"use client";
2+
3+
import { useState, useEffect } from "react";
4+
// Assuming these are custom components, they are preserved
5+
import Background from "@/components/Background";
6+
import Navbar from "@/components/Navbar";
7+
import Footer from "@/components/Footer";
8+
import Major from "@/components/Text/Major"; // Used for Headings
9+
import Mini from "@/components/Text/Mini"; // Used for Body Text
10+
11+
// Custom Icon Components (Placeholder for better UI)
12+
const CodeIcon = (props: React.SVGProps<SVGSVGElement>) => (
13+
<svg {...props} xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" strokeWidth={1.5} stroke="currentColor">
14+
<path strokeLinecap="round" strokeLinejoin="round" d="M17.25 6.75 14.25 12l3 5.25m-1.5-8.625 2.25 2.25M17.25 6.75l-4.25 4.25m4.25-4.25 4.25 4.25M7.75 6.75l3 5.25-3 5.25m1.5-8.625-2.25 2.25m-1.5 1.5 4.25 4.25M6.75 17.25l-4.25-4.25m4.25 4.25-4.25 4.25" />
15+
</svg>
16+
);
17+
const BookOpenIcon = (props: React.SVGProps<SVGSVGElement>) => (
18+
<svg {...props} xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" strokeWidth={1.5} stroke="currentColor">
19+
<path strokeLinecap="round" strokeLinejoin="round" d="M12 6.5C12 5.67157 12.6716 5 13.5 5H18.5C19.3284 5 20 5.67157 20 6.5V17.5C20 18.3284 19.3284 19 18.5 19H13.5C12.6716 19 12 18.3284 12 17.5V6.5Z" />
20+
<path strokeLinecap="round" strokeLinejoin="round" d="M12 6.5C12 5.67157 11.3284 5 10.5 5H5.5C4.67157 5 4 5.67157 4 6.5V17.5C4 18.3284 4.67157 19 5.5 19H10.5C11.3284 19 12 18.3284 12 17.5V6.5Z" />
21+
<path strokeLinecap="round" strokeLinejoin="round" d="M12 6.5C12 5.67157 11.3284 5 10.5 5H5.5C4.67157 5 4 5.67157 4 6.5V17.5C4 18.3284 4.67157 19 5.5 19H10.5C11.3284 19 12 18.3284 12 17.5V6.5Z" />
22+
<path strokeLinecap="round" strokeLinejoin="round" d="M12 6.5C12 5.67157 11.3284 5 10.5 5H5.5C4.67157 5 4 5.67157 4 6.5V17.5C4 18.3284 4.67157 19 5.5 19H10.5C11.3284 19 12 18.3284 12 17.5V6.5Z" />
23+
<path strokeLinecap="round" strokeLinejoin="round" d="M12 6.5C12 5.67157 11.3284 5 10.5 5H5.5C4.67157 5 4 5.67157 4 6.5V17.5C4 18.3284 4.67157 19 5.5 19H10.5C11.3284 19 12 18.3284 12 17.5V6.5Z" />
24+
<path strokeLinecap="round" strokeLinejoin="round" d="M12 6.5C12 5.67157 11.3284 5 10.5 5H5.5C4.67157 5 4 5.67157 4 6.5V17.5C4 18.3284 4.67157 19 5.5 19H10.5C11.3284 19 12 18.3284 12 17.5V6.5Z" />
25+
<path strokeLinecap="round" strokeLinejoin="round" d="M12 6.5C12 5.67157 11.3284 5 10.5 5H5.5C4.67157 5 4 5.67157 4 6.5V17.5C4 18.3284 4.67157 19 5.5 19H10.5C11.3284 19 12 18.3284 12 17.5V6.5Z" />
26+
<path strokeLinecap="round" strokeLinejoin="round" d="M12 6.5C12 5.67157 11.3284 5 10.5 5H5.5C4.67157 5 4 5.67157 4 6.5V17.5C4 18.3284 4.67157 19 5.5 19H10.5C11.3284 19 12 18.3284 12 17.5V6.5Z" />
27+
<path strokeLinecap="round" strokeLinejoin="round" d="M12 6.5C12 5.67157 11.3284 5 10.5 5H5.5C4.67157 5 4 5.67157 4 6.5V17.5C4 18.3284 4.67157 19 5.5 19H10.5C11.3284 19 12 18.3284 12 17.5V6.5Z" />
28+
<path strokeLinecap="round" strokeLinejoin="round" d="M12 6.5C12 5.67157 11.3284 5 10.5 5H5.5C4.67157 5 4 5.67157 4 6.5V17.5C4 18.3284 4.67157 19 5.5 19H10.5C11.3284 19 12 18.3284 12 17.5V6.5Z" />
29+
</svg>
30+
);
31+
const UsersIcon = (props: React.SVGProps<SVGSVGElement>) => (
32+
<svg {...props} xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" strokeWidth={1.5} stroke="currentColor">
33+
<path strokeLinecap="round" strokeLinejoin="round" d="M17.982 18.725A7.488 7.488 0 0 0 12 15.75a7.488 7.488 0 0 0-5.982 2.975m11.964 0a7.5 7.5 0 0 0-11.964 0M12 5.75a3 3 0 1 0 0 6 3 3 0 0 0 0-6Z" />
34+
<path strokeLinecap="round" strokeLinejoin="round" d="M17.982 18.725A7.488 7.488 0 0 0 12 15.75a7.488 7.488 0 0 0-5.982 2.975m11.964 0a7.5 7.5 0 0 0-11.964 0M12 5.75a3 3 0 1 0 0 6 3 3 0 0 0 0-6Z" />
35+
</svg>
36+
);
37+
38+
39+
const BootcampPage: React.FC = () => {
40+
const [windowWidth, setWindowWidth] = useState<number>(
41+
typeof window !== "undefined" ? window.innerWidth : 1024
42+
);
43+
44+
useEffect(() => {
45+
const handleResize = () => setWindowWidth(window.innerWidth);
46+
window.addEventListener("resize", handleResize);
47+
return () => window.removeEventListener("resize", handleResize);
48+
}, []);
49+
50+
return (
51+
// Use a very dark background for contrast (e.g., bg-gray-900)
52+
<div className="relative min-h-screen flex flex-col bg-gray-950">
53+
<Background className="absolute inset-0 z-0 opacity-50" />
54+
55+
<Navbar
56+
screen_width={windowWidth}
57+
className="fixed top-0 left-0 w-full z-30 bg-gray-950/90 backdrop-blur-sm shadow-lg shadow-indigo-900/10"
58+
page="other"
59+
/>
60+
61+
{/* Main content with refined vertical spacing */}
62+
<main className="relative z-10 pt-[120px] pb-32 px-4 sm:px-8 md:px-16 space-y-32">
63+
{/* HERO SECTION - Enhanced Typography and Gradient */}
64+
<section className="text-center space-y-4">
65+
<Major type="b" className="text-white text-5xl sm:text-6xl font-extrabold tracking-tight">
66+
Data Science Bootcamp
67+
</Major>
68+
69+
<Major type="b" className="text-transparent bg-clip-text bg-gradient-to-r from-indigo-400 to-cyan-400 text-3xl sm:text-4xl font-bold">
70+
Georgia Tech
71+
</Major>
72+
73+
<Mini className="text-gray-400 max-w-xl mx-auto pt-2 text-lg">
74+
Making data science accessible for all students, regardless of prior experience.
75+
</Mini>
76+
</section>
77+
78+
{/* ABOUT THE BOOTCAMP - Clean Card */}
79+
<section className="max-w-4xl mx-auto space-y-8 bg-gray-900/60 p-8 rounded-xl shadow-2xl border border-indigo-700/50">
80+
<Major type="b" className="text-indigo-400 text-3xl border-b border-indigo-400/30 pb-3">
81+
About the Bootcamp
82+
</Major>
83+
84+
<Mini className="text-gray-300 leading-relaxed">
85+
The DSGT Data Science Bootcamp is designed to introduce students to
86+
the core tools and ideas behind modern data science—<strong>no prior
87+
experience required</strong>.
88+
</Mini>
89+
90+
<Mini className="text-gray-300 leading-relaxed">
91+
Through structured workshops, guided projects, and collaborative
92+
learning, the bootcamp focuses on building <strong>practical skills</strong> that can
93+
be applied to real-world problems and enhance your portfolio.
94+
</Mini>
95+
</section>
96+
97+
{/* WHAT YOU’LL LEARN - Iconic Card Grid */}
98+
<section className="max-w-6xl mx-auto space-y-12">
99+
<Major type="b" className="text-white text-4xl text-center font-bold">
100+
Essential Skills You’ll Master
101+
</Major>
102+
103+
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6">
104+
{/* Python Card */}
105+
<div className="bg-gray-800/70 p-6 rounded-2xl shadow-xl border border-gray-700 hover:bg-gray-700/80 transition duration-300 ease-in-out transform hover:scale-[1.02]">
106+
<CodeIcon className="h-8 w-8 text-yellow-500 mb-3" />
107+
<Major as="h3" compact className="text-white text-xl">Python</Major>
108+
<Mini className="text-gray-400 mt-2 text-sm">
109+
Learn the fundamentals of this powerful, beginner-friendly language, essential for data science and machine learning.
110+
</Mini>
111+
</div>
112+
113+
{/* Pandas Card */}
114+
<div className="bg-gray-800/70 p-6 rounded-2xl shadow-xl border border-gray-700 hover:bg-gray-700/80 transition duration-300 ease-in-out transform hover:scale-[1.02]">
115+
<CodeIcon className="h-8 w-8 text-blue-500 mb-3" />
116+
<Major as="h3" compact className="text-white text-xl">Pandas</Major>
117+
<Mini className="text-gray-400 mt-2 text-sm">
118+
Master DataFrames to clean, manipulate, and analyze structured datasets from real-world sources efficiently.
119+
</Mini>
120+
</div>
121+
122+
{/* NumPy Card */}
123+
<div className="bg-gray-800/70 p-6 rounded-2xl shadow-xl border border-gray-700 hover:bg-gray-700/80 transition duration-300 ease-in-out transform hover:scale-[1.02]">
124+
<CodeIcon className="h-8 w-8 text-green-500 mb-3" />
125+
<Major as="h3" compact className="text-white text-xl">NumPy</Major>
126+
<Mini className="text-gray-400 mt-2 text-sm">
127+
Build a foundation in numerical computing for high-performance array and matrix operations, core to ML algorithms.
128+
</Mini>
129+
</div>
130+
131+
{/* Machine Learning Card */}
132+
<div className="bg-gray-800/70 p-6 rounded-2xl shadow-xl border border-gray-700 hover:bg-gray-700/80 transition duration-300 ease-in-out transform hover:scale-[1.02]">
133+
<CodeIcon className="h-8 w-8 text-purple-500 mb-3" />
134+
<Major as="h3" compact className="text-white text-xl">Machine Learning</Major>
135+
<Mini className="text-gray-400 mt-2 text-sm">
136+
Introduction to key ML concepts, how models learn from data, and making predictions and uncovering patterns.
137+
</Mini>
138+
</div>
139+
</div>
140+
141+
<Mini className="text-gray-500 text-center text-sm italic">
142+
…and additional tools commonly used in the data science pipeline
143+
</Mini>
144+
</section>
145+
146+
{/* WHAT IS DATA SCIENCE - Iconic Visualization Section */}
147+
<section className="max-w-4xl mx-auto space-y-6 text-center">
148+
<Major type="b" className="text-white text-4xl font-bold">
149+
What Is Data Science?
150+
</Major>
151+
152+
<Mini className="text-gray-400 text-lg leading-relaxed">
153+
Data science is the intersection of three key disciplines—<strong>programming</strong>, <strong>statistics</strong>, and <strong>domain knowledge</strong>—used to extract actionable insights from raw data. It enables organizations to identify trends and make data-driven decisions.
154+
</Mini>
155+
156+
157+
</section>
158+
159+
{/* BOOTCAMP OPTIONS - Comparison Cards */}
160+
<section className="max-w-6xl mx-auto space-y-12">
161+
<Major type="b" className="text-white text-4xl text-center font-bold">
162+
Choose Your Path
163+
</Major>
164+
165+
<div className="grid grid-cols-1 md:grid-cols-2 gap-8">
166+
{/* In-Person Option */}
167+
<div className="bg-gray-800 border-t-4 border-indigo-500 rounded-2xl p-8 shadow-2xl hover:shadow-indigo-500/30 transition duration-300">
168+
<UsersIcon className="h-10 w-10 text-indigo-400 mb-4" />
169+
<Major as="h3" compact className="text-white text-2xl mb-4">
170+
In-Person Bootcamp
171+
</Major>
172+
<ul className="mt-4 space-y-3 text-gray-300 text-base">
173+
<li className="flex items-start">
174+
<span className="text-indigo-400 text-xl mr-2"></span> Introductory data science curriculum
175+
</li>
176+
<li className="flex items-start">
177+
<span className="text-indigo-400 text-xl mr-2"></span> Biweekly hands-on workshops
178+
</li>
179+
<li className="flex items-start">
180+
<span className="text-indigo-400 text-xl mr-2"></span> <strong>Weekly dedicated mentor meetings</strong>
181+
</li>
182+
<li className="flex items-start">
183+
<span className="text-indigo-400 text-xl mr-2"></span> Guided, hands-on project experience
184+
</li>
185+
<li className="flex items-start">
186+
<span className="text-indigo-400 text-xl mr-2"></span> Communication and support via Slack
187+
</li>
188+
</ul>
189+
</div>
190+
191+
{/* Udemy Option */}
192+
<div className="bg-gray-800 border-t-4 border-cyan-500 rounded-2xl p-8 shadow-2xl hover:shadow-cyan-500/30 transition duration-300">
193+
<BookOpenIcon className="h-10 w-10 text-cyan-400 mb-4" />
194+
<Major as="h3" compact className="text-white text-2xl mb-4">Udemy Self-Paced Course</Major>
195+
<ul className="mt-4 space-y-3 text-gray-300 text-base">
196+
<li className="flex items-start">
197+
<span className="text-cyan-400 text-xl mr-2"></span> Introductory data science curriculum
198+
</li>
199+
<li className="flex items-start">
200+
<span className="text-cyan-400 text-xl mr-2"></span> Fully self-paced, flexible learning
201+
</li>
202+
<li className="flex items-start">
203+
<span className="text-cyan-400 text-xl mr-2"></span> <strong>Focus on core concepts only</strong> (No guided projects)
204+
</li>
205+
<li className="flex items-start">
206+
<span className="text-cyan-400 text-xl mr-2"></span> Peer collaboration via dedicated Slack channel
207+
</li>
208+
<li className="flex items-start">
209+
<span className="text-cyan-400 text-xl mr-2"></span> Access to all recorded lecture content
210+
</li>
211+
</ul>
212+
</div>
213+
</div>
214+
</section>
215+
216+
{/* RESOURCES - Clean List with better emphasis */}
217+
<section className="max-w-5xl mx-auto space-y-8 pb-24">
218+
<Major type="b" className="text-white text-4xl text-center font-bold">
219+
Advanced Learning Resources
220+
</Major>
221+
222+
<div className="bg-gray-800/70 p-8 rounded-xl space-y-4 shadow-xl border border-gray-700">
223+
{[
224+
{ title: 'Mathematics for Machine Learning', prereq: 'No prerequisites' },
225+
{ title: 'Python for Data Science (Beginner)', prereq: 'No prerequisites' },
226+
{ title: 'Advanced Python', prereq: 'Beginner Python knowledge required' },
227+
{ title: 'Fundamentals of Machine Learning', prereq: 'No prerequisites' },
228+
{ title: 'Neural Networks & Deep Learning', prereq: 'Linear Algebra, Calculus, Python' },
229+
{ title: 'Linear Algebra (3Blue1Brown)', prereq: 'Video Series' },
230+
].map((resource, index) => (
231+
<div key={index} className="flex justify-between items-center border-b border-gray-700 last:border-b-0 py-2">
232+
<Mini className="text-white text-lg font-medium">
233+
{resource.title}
234+
</Mini>
235+
<Mini className="text-indigo-300 text-sm font-light italic">
236+
{resource.prereq}
237+
</Mini>
238+
</div>
239+
))}
240+
</div>
241+
</section>
242+
</main>
243+
244+
<Footer screen_width={windowWidth} className="bg-gray-900/80 border-t border-indigo-900" />
245+
</div>
246+
);
247+
};
248+
249+
export default BootcampPage;

sites/mainweb/app/past/page.tsx

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import Major from "@/components/Text/Major";
88
import Mini from "@/components/Text/Mini";
99
import Link from "next/link";
1010

11-
1211
const CompletedEventPage: React.FC = () => {
1312
const [windowWidth, setWindowWidth] = useState<number>(
1413
typeof window !== "undefined" ? window.innerWidth : 1024
@@ -34,15 +33,17 @@ const CompletedEventPage: React.FC = () => {
3433

3534
<main className="relative z-10 flex-grow pt-[80px] flex items-center justify-center p-4 sm:p-6 md:p-10">
3635
<div className="text-center p-8 sm:p-10 max-w-lg w-full rounded-3xl bg-white/10 backdrop-blur-lg border border-white/20 shadow-2xl space-y-7 transition-all duration-500 hover:shadow-white/20">
37-
38-
{/* Icon/Emoji div removed as requested */}
39-
4036
<Major type="b" className="text-white text-3xl sm:text-4xl">
41-
Hey, currently this is unavailable
37+
🚧 Work in Progress
4238
</Major>
4339

4440
<Mini className="text-gray-300 max-w-md mx-auto leading-relaxed">
45-
We appreciate your interest! Please check back later, or explore our website to learn more about our projects, Hacklytics, and how you can get involved.
41+
This page is currently under development. Check back soon for updates,
42+
or explore the rest of the site in the meantime.
43+
</Mini>
44+
45+
<Mini className="text-gray-400 max-w-md mx-auto leading-relaxed">
46+
If you want to help out, reach out to <span className="text-white font-semibold">Aamogh</span> on Slack.
4647
</Mini>
4748

4849
<div className="flex flex-col sm:flex-row justify-center gap-3 pt-4">
@@ -52,6 +53,7 @@ const CompletedEventPage: React.FC = () => {
5253
>
5354
Go to Home Page
5455
</Link>
56+
5557
<Link
5658
href="/team"
5759
className="w-full sm:w-auto px-8 py-3 border border-gray-500 text-gray-300 font-semibold rounded-xl transition-all duration-300 ease-in-out hover:bg-white/10 hover:border-white/30"
@@ -67,4 +69,4 @@ const CompletedEventPage: React.FC = () => {
6769
);
6870
};
6971

70-
export default CompletedEventPage;
72+
export default CompletedEventPage;

sites/mainweb/components/EventCard/index.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,26 @@ interface EventCardProps {
1010
when?: string;
1111
button_text: string;
1212
button_to: string;
13+
target?: string;
14+
rel?: string;
15+
className?: string;
1316
children: React.ReactNode;
1417
}
1518

16-
const EventCard = ({ img, heading, when, button_text, button_to, children }: EventCardProps) => {
19+
const EventCard = ({ img, heading, when, button_text, button_to, target, rel, className, children }: EventCardProps) => {
20+
const isExternal = button_to.startsWith("http");
21+
const outTarget = isExternal ? target ?? "_blank" : target;
22+
const outRel = isExternal ? rel ?? "noopener noreferrer" : rel;
1723
return (
18-
<div className="flex flex-col justify-between bg-gray-900 text-white rounded-xl overflow-hidden shadow-lg transition-transform hover:-translate-y-1 w-full h-full">
24+
<div className={`flex flex-col justify-between bg-gray-900 text-white rounded-xl overflow-hidden shadow-lg transition-transform hover:-translate-y-1 w-full h-full ${className ?? ""}`}>
1925
<div className="relative w-full h-48">
2026
<Image src={img} alt={heading} fill className="object-cover" />
2127
</div>
2228
<div className="p-4 flex flex-col gap-2">
2329
<h3 className="text-xl font-bold">{heading}</h3>
2430
{when && <span className="text-sm text-gray-400">{when}</span>}
2531
<p className="text-sm text-gray-200">{children}</p>
26-
<Link href={button_to} className="mt-4 inline-block text-teal-500 font-bold hover:text-teal-400">
32+
<Link href={button_to} className="mt-4 inline-block text-teal-500 font-bold hover:text-teal-400" target={outTarget} rel={outRel}>
2733
{button_text}
2834
</Link>
2935
</div>

sites/mainweb/components/LearnMore/LearnMore.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@ import Link from "next/link";
33
interface LearnMoreProps {
44
to: string;
55
children: React.ReactNode;
6+
target?: string;
7+
rel?: string;
68
}
79

8-
const LearnMore = ({ to, children }: LearnMoreProps) => {
10+
const LearnMore = ({ to, children, target, rel }: LearnMoreProps) => {
911
const isExternal = to.startsWith("http");
1012

1113
const baseClasses =
@@ -14,21 +16,19 @@ const LearnMore = ({ to, children }: LearnMoreProps) => {
1416
"inline-block pl-1 transition-all duration-300 group-hover:pl-3";
1517

1618
if (isExternal) {
19+
const outTarget = target ?? "_blank";
20+
const outRel = rel ?? "noopener noreferrer";
21+
1722
return (
18-
<a
19-
href={to}
20-
target="_blank"
21-
rel="noopener noreferrer"
22-
className={`${baseClasses} group`}
23-
>
23+
<a href={to} target={outTarget} rel={outRel} className={`${baseClasses} group`}>
2424
{children}
2525
<span className={arrowClasses}></span>
2626
</a>
2727
);
2828
}
2929

3030
return (
31-
<Link href={to} scroll={false} className={`${baseClasses} group`}>
31+
<Link href={to} scroll={false} className={`${baseClasses} group`} target={target} rel={rel}>
3232
{children}
3333
<span className={arrowClasses}></span>
3434
</Link>

0 commit comments

Comments
 (0)