Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
20
20 changes: 15 additions & 5 deletions app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,24 @@ import { GoogleAnalytics } from "@next/third-parties/google";
import type { Metadata } from "next";
import { Inter } from "next/font/google";

import { Navbar } from "@/components/Navbar";

const inter = Inter({
subsets: ["latin"],
weight: "400",
weight: ["300", "400", "500", "600", "700"],
});

export const metadata: Metadata = {
title: "DCHacks",
description: "High School Hackathon in DC Metro Area",
title: "DCHacks 2025",
description:
"High School Hackathon in DC Metro Area - Join 100+ students for innovation, collaboration, and building the future",
keywords:
"hackathon, high school, DC, Washington, coding, programming, technology",
openGraph: {
title: "DCHacks 2025",
description: "High School Hackathon in DC Metro Area",
type: "website",
},
};

export default function RootLayout({
Expand All @@ -20,13 +30,13 @@ export default function RootLayout({
children: React.ReactNode;
}>) {
return (
<html lang="en">
<html lang="en" className="scroll-smooth">
<GoogleAnalytics gaId="G-T54MKE337Q" />
<body
className={"antialiased " + inter.className}
suppressHydrationWarning
>
{/* <Navbar /> */}
<Navbar />
{children}
</body>
</html>
Expand Down
57 changes: 38 additions & 19 deletions app/page.tsx
Original file line number Diff line number Diff line change
@@ -1,31 +1,50 @@
import { AboutUs } from "@/components/AboutUs";
import { Donate } from "@/components/Donate";
import { FAQ } from "@/components/FAQ";
import { Hero } from "@/components/Hero";
import { JoinTeam } from "@/components/JoinTeam";
import { Register } from "@/components/Register";
import { Sponsors } from "@/components/Sponsors";

export default function Home() {
return (
<div className="bg-bg pb-20">
<svg width="0" height="0" style={{ position: "absolute" }}>
<linearGradient
id="primary-gradient"
x1="100%"
y1="100%"
x2="0%"
y2="0%"
>
<stop stopColor="var(--color-grad-p-from)" offset="0%" />
<stop stopColor="var(--color-grad-p-to)" offset="100%" />
</linearGradient>
</svg>
<Hero />
<AboutUs />
<JoinTeam />
<Register />
<Sponsors />
<Donate />
<div className="relative min-h-screen overflow-hidden bg-gradient-to-br from-pink-50 via-pink-100 to-pink-50">
{/* Animated background elements */}
<div className="absolute inset-0 overflow-hidden">
<div className="absolute -top-40 -right-40 h-96 w-96 animate-pulse rounded-full bg-gradient-to-br from-red-500/10 to-pink-500/10 blur-3xl" />
<div className="absolute -bottom-40 -left-40 h-96 w-96 animate-pulse rounded-full bg-gradient-to-br from-red-400/10 to-pink-400/10 blur-3xl" />
<div className="absolute top-1/2 left-1/2 h-64 w-64 -translate-x-1/2 -translate-y-1/2 animate-pulse rounded-full bg-gradient-to-br from-red-300/5 to-pink-300/5 blur-3xl" />
</div>

{/* Gradient mesh overlay */}
<div className="absolute inset-0 bg-gradient-to-br from-transparent via-red-500/3 to-transparent" />

{/* Main content */}
<div className="relative z-10">
<Hero />
<AboutUs />
<JoinTeam />
<Register />
<Sponsors />
<Donate />
<FAQ />
</div>

{/* Floating particles */}
<div className="pointer-events-none absolute inset-0">
{[...Array(20)].map((_, i) => (
<div
key={i}
className="absolute h-1 w-1 animate-pulse rounded-full bg-red-500/30"
style={{
left: `${Math.random() * 100}%`,
top: `${Math.random() * 100}%`,
animationDelay: `${Math.random() * 3}s`,
animationDuration: `${2 + Math.random() * 3}s`,
}}
/>
))}
</div>
</div>
);
}
2 changes: 1 addition & 1 deletion components.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@
"hooks": "@/hooks"
},
"iconLibrary": "lucide"
}
}
Loading