-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
20 changed files
with
1,623 additions
and
255 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
import { NextResponse } from 'next/server' | ||
|
||
export async function GET() { | ||
const mockData = [ | ||
{ | ||
title: "2025 Season Schedule // Major League Hacking", | ||
description: "Find, compete, and earn points at the largest, most diverse hacker events in the world.", | ||
dates: ["Dec 28th - 29th", "Jan 3rd - 5th", "Jan 3rd - 5th", "Jan 10th - 16th"], | ||
about: [ | ||
"Find, compete, and earn points", | ||
"at the largest, most diverse hacker events", | ||
"in the world." | ||
] | ||
}, | ||
{ | ||
title: "HackMIT 2025", | ||
description: "Join us for 24 hours of hacking, learning, and innovation at MIT!", | ||
dates: ["Sep 15th - 16th"], | ||
about: [ | ||
"24-hour hackathon", | ||
"Workshops and tech talks", | ||
"Networking opportunities" | ||
] | ||
}, | ||
{ | ||
title: "Global AI Hackathon", | ||
description: "Develop cutting-edge AI solutions to real-world problems.", | ||
dates: ["Mar 22nd - 24th"], | ||
about: [ | ||
"Focus on artificial intelligence", | ||
"Open to developers worldwide", | ||
"Mentorship from industry experts" | ||
] | ||
}, | ||
{ | ||
title: "EcoHack 2025", | ||
description: "Create sustainable tech solutions for a greener future.", | ||
dates: ["Apr 5th - 7th"], | ||
about: [ | ||
"Sustainability-focused hackathon", | ||
"Collaboration with environmental organizations", | ||
"Prizes for most impactful projects" | ||
] | ||
} | ||
] | ||
|
||
return NextResponse.json(mockData) | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,101 +1,22 @@ | ||
import Image from "next/image"; | ||
import Header from "../components/Header"; | ||
import HackathonList from "../components/HackathonList"; | ||
import SearchBar from "../components/SearchBar"; | ||
import Filters from "../components/Filters"; | ||
import { ThemeProvider } from "../components/ThemeProvider"; | ||
|
||
export default function Home() { | ||
return ( | ||
<div className="grid grid-rows-[20px_1fr_20px] items-center justify-items-center min-h-screen p-8 pb-20 gap-16 sm:p-20 font-[family-name:var(--font-geist-sans)]"> | ||
<main className="flex flex-col gap-8 row-start-2 items-center sm:items-start"> | ||
<Image | ||
className="dark:invert" | ||
src="https://nextjs.org/icons/next.svg" | ||
alt="Next.js logo" | ||
width={180} | ||
height={38} | ||
priority | ||
/> | ||
<ol className="list-inside list-decimal text-sm text-center sm:text-left font-[family-name:var(--font-geist-mono)]"> | ||
<li className="mb-2"> | ||
Get started by editing{" "} | ||
<code className="bg-black/[.05] dark:bg-white/[.06] px-1 py-0.5 rounded font-semibold"> | ||
app/page.tsx | ||
</code> | ||
. | ||
</li> | ||
<li>Save and see your changes instantly.</li> | ||
</ol> | ||
|
||
<div className="flex gap-4 items-center flex-col sm:flex-row"> | ||
<a | ||
className="rounded-full border border-solid border-transparent transition-colors flex items-center justify-center bg-foreground text-background gap-2 hover:bg-[#383838] dark:hover:bg-[#ccc] text-sm sm:text-base h-10 sm:h-12 px-4 sm:px-5" | ||
href="https://vercel.com/new?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app" | ||
target="_blank" | ||
rel="noopener noreferrer" | ||
> | ||
<Image | ||
className="dark:invert" | ||
src="https://nextjs.org/icons/vercel.svg" | ||
alt="Vercel logomark" | ||
width={20} | ||
height={20} | ||
/> | ||
Deploy now | ||
</a> | ||
<a | ||
className="rounded-full border border-solid border-black/[.08] dark:border-white/[.145] transition-colors flex items-center justify-center hover:bg-[#f2f2f2] dark:hover:bg-[#1a1a1a] hover:border-transparent text-sm sm:text-base h-10 sm:h-12 px-4 sm:px-5 sm:min-w-44" | ||
href="https://nextjs.org/docs?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app" | ||
target="_blank" | ||
rel="noopener noreferrer" | ||
> | ||
Read our docs | ||
</a> | ||
</div> | ||
</main> | ||
<footer className="row-start-3 flex gap-6 flex-wrap items-center justify-center"> | ||
<a | ||
className="flex items-center gap-2 hover:underline hover:underline-offset-4" | ||
href="https://nextjs.org/learn?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app" | ||
target="_blank" | ||
rel="noopener noreferrer" | ||
> | ||
<Image | ||
aria-hidden | ||
src="https://nextjs.org/icons/file.svg" | ||
alt="File icon" | ||
width={16} | ||
height={16} | ||
/> | ||
Learn | ||
</a> | ||
<a | ||
className="flex items-center gap-2 hover:underline hover:underline-offset-4" | ||
href="https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app" | ||
target="_blank" | ||
rel="noopener noreferrer" | ||
> | ||
<Image | ||
aria-hidden | ||
src="https://nextjs.org/icons/window.svg" | ||
alt="Window icon" | ||
width={16} | ||
height={16} | ||
/> | ||
Examples | ||
</a> | ||
<a | ||
className="flex items-center gap-2 hover:underline hover:underline-offset-4" | ||
href="https://nextjs.org?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app" | ||
target="_blank" | ||
rel="noopener noreferrer" | ||
> | ||
<Image | ||
aria-hidden | ||
src="https://nextjs.org/icons/globe.svg" | ||
alt="Globe icon" | ||
width={16} | ||
height={16} | ||
/> | ||
Go to nextjs.org → | ||
</a> | ||
</footer> | ||
</div> | ||
<ThemeProvider attribute="class" defaultTheme="system" enableSystem> | ||
<div className="min-h-screen"> | ||
<Header /> | ||
<main className="container mx-auto px-4 py-8"> | ||
<div className="mb-8 space-y-4"> | ||
<SearchBar /> | ||
<Filters /> | ||
</div> | ||
<HackathonList /> | ||
</main> | ||
</div> | ||
</ThemeProvider> | ||
); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
{ | ||
"$schema": "https://ui.shadcn.com/schema.json", | ||
"style": "new-york", | ||
"rsc": true, | ||
"tsx": true, | ||
"tailwind": { | ||
"config": "tailwind.config.ts", | ||
"css": "app/globals.css", | ||
"baseColor": "neutral", | ||
"cssVariables": true, | ||
"prefix": "" | ||
}, | ||
"aliases": { | ||
"components": "@/components", | ||
"utils": "@/lib/utils", | ||
"ui": "@/components/ui", | ||
"lib": "@/lib", | ||
"hooks": "@/hooks" | ||
}, | ||
"iconLibrary": "lucide" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
'use client' | ||
|
||
import { useState } from 'react' | ||
import { Button } from '@/components/ui/button' | ||
import { | ||
DropdownMenu, | ||
DropdownMenuCheckboxItem, | ||
DropdownMenuContent, | ||
DropdownMenuLabel, | ||
DropdownMenuSeparator, | ||
DropdownMenuTrigger, | ||
} from '@/components/ui/dropdown-menu' | ||
|
||
const months = [ | ||
'January', 'February', 'March', 'April', 'May', 'June', | ||
'July', 'August', 'September', 'October', 'November', 'December' | ||
] | ||
|
||
export default function Filters() { | ||
const [selectedMonths, setSelectedMonths] = useState<string[]>([]) | ||
|
||
const handleMonthToggle = (month: string) => { | ||
setSelectedMonths((prev) => | ||
prev.includes(month) | ||
? prev.filter((m) => m !== month) | ||
: [...prev, month] | ||
) | ||
} | ||
|
||
return ( | ||
<div className="flex gap-2"> | ||
<DropdownMenu> | ||
<DropdownMenuTrigger asChild> | ||
<Button variant="outline">Filter by Month</Button> | ||
</DropdownMenuTrigger> | ||
<DropdownMenuContent className="w-56"> | ||
<DropdownMenuLabel>Select Months</DropdownMenuLabel> | ||
<DropdownMenuSeparator /> | ||
{months.map((month) => ( | ||
<DropdownMenuCheckboxItem | ||
key={month} | ||
checked={selectedMonths.includes(month)} | ||
onCheckedChange={() => handleMonthToggle(month)} | ||
> | ||
{month} | ||
</DropdownMenuCheckboxItem> | ||
))} | ||
</DropdownMenuContent> | ||
</DropdownMenu> | ||
{/* Add more filters here as needed */} | ||
</div> | ||
) | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' | ||
import { Badge } from '@/components/ui/badge' | ||
|
||
interface HackathonCardProps { | ||
title: string | ||
description: string | ||
dates: string[] | ||
about: string[] | ||
} | ||
|
||
export default function HackathonCard({ title, description, dates, about }: HackathonCardProps) { | ||
return ( | ||
<Card className="overflow-hidden"> | ||
<CardHeader className="bg-primary text-primary-foreground"> | ||
<CardTitle className="text-lg">{title}</CardTitle> | ||
</CardHeader> | ||
<CardContent className="p-4 space-y-4"> | ||
<p className="text-sm text-gray-600 dark:text-gray-300">{description}</p> | ||
<div> | ||
<h3 className="font-semibold mb-2">Dates:</h3> | ||
<div className="flex flex-wrap gap-2"> | ||
{dates.map((date, index) => ( | ||
<Badge key={index} variant="secondary"> | ||
{date} | ||
</Badge> | ||
))} | ||
</div> | ||
</div> | ||
<div> | ||
<h3 className="font-semibold mb-2">About:</h3> | ||
<ul className="list-disc list-inside text-sm text-gray-600 dark:text-gray-300"> | ||
{about.map((item, index) => ( | ||
<li key={index}>{item}</li> | ||
))} | ||
</ul> | ||
</div> | ||
</CardContent> | ||
</Card> | ||
) | ||
} | ||
|
Oops, something went wrong.