Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
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
2 changes: 2 additions & 0 deletions apps/web/src/app/admin/events/edit/[slug]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ import { getEventById } from "db/functions";
import { notFound } from "next/navigation";
import EditEventForm from "@/components/events/admin/EditEventForm";

export const dynamic = "force-dynamic";

export default async function EditEventPage({
params,
}: {
Expand Down
4 changes: 2 additions & 2 deletions apps/web/src/app/admin/events/page.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
"use server";

import { EventDataTable } from "@/components/events/shared/EventDataTable";
import { columns } from "@/components/events/shared/EventColumns";
import { Button } from "@/components/shadcn/ui/button";
Expand All @@ -8,6 +6,8 @@ import Link from "next/link";
import { getAllEvents, getUser } from "db/functions";
import { auth, redirectToSignIn } from "@clerk/nextjs/server";

export const dynamic = "force-dynamic";

export default async function Page() {
const { userId } = auth();
if (!userId) {
Expand Down
2 changes: 2 additions & 0 deletions apps/web/src/app/admin/points/page.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
export const dynamic = "force-dynamic";

export default function Points() {
return (
<main className="h-dvh pt-28">
Expand Down
2 changes: 2 additions & 0 deletions apps/web/src/app/admin/toggles/dashboard/page.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
export const dynamic = "force-dynamic";

export default function Page() {
return <p>Coming soon</p>;
}
1 change: 1 addition & 0 deletions apps/web/src/app/admin/toggles/page.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
export const dynamic = "force-dynamic";
export default async function Page() {
return (
<div className="min-h-[250px] w-full space-y-3 rounded-lg border-2 border-border p-5">
Expand Down
182 changes: 67 additions & 115 deletions apps/web/src/app/register/page.tsx
Original file line number Diff line number Diff line change
@@ -1,128 +1,80 @@
import c from "config";
import RegisterForm from "@/components/registration/RegisterForm";
import { auth, currentUser } from "@clerk/nextjs";
import { redirect } from "next/navigation";
import Navbar from "@/components/shared/Navbar";
import Link from "next/link";
import { Redis } from "@upstash/redis";
import { parseRedisBoolean } from "@/lib/utils/server/redis";
import { Button } from "@/components/shadcn/ui/button";
import { getUser } from "db/functions";
import Image from "next/image";
import React from "react";

const redis = new Redis({
url: process.env.UPSTASH_REDIS_REST_URL,
token: process.env.UPSTASH_REDIS_REST_TOKEN,
});
export default function Page() {
return (
<>
{/* Top Navigation Brand Logo Bar */}
<div className="z-50 w-screen pt-6">
<div className="relative top-0 z-50 h-16 w-screen">
<div className="mx-auto grid h-full w-full max-w-7xl grid-flow-col grid-cols-2 px-2 sm:px-6 lg:max-w-full lg:px-8">
<div className="col-span-3 flex items-center justify-start gap-x-5 pl-4 md:pl-0">
<Link
href={"/"}
className="mr-5 flex items-center gap-x-2"
>
<Image
src={"/img/static/images/white wehack logo.png"}
alt={c.hackathonName + " Logo"}
width={60}
height={60}
className={"drop-shadow-[0_0px_0px_rgba(255,255,255,0.90)]"}
/>
</Link>
</div>
</div>
</div>
</div>

export default async function Page() {
const { userId } = auth();
if (!userId) return redirect("/sign-up");
{/* Main Center-Aligned 2027 Season Notice Layout */}
<main className="flex min-h-[70vh] flex-col items-center justify-center px-4 text-center">
<div className="relative z-10 flex w-full max-w-2xl flex-col items-center justify-center gap-y-6 rounded-2xl border border-[#D09C51] bg-[#1e1e1e] p-8 md:p-12 shadow-2xl">

{/* Header Title */}
<h1 className="text-4xl font-black text-hackathon md:text-6xl font-cinzel-decorative tracking-wide text-[#FFE9D7]">
WEHack 2027
</h1>

const user = await currentUser();
if (!user) return redirect("/sign-up");
{/* Styled Separator line matching brand guidelines */}
<div className="h-[2px] w-24 bg-[#D09C51] my-1" />

{/* Required Structural Update Copy */}
<p className="text-lg md:text-xl font-light leading-relaxed text-[#C9D5E3]">
More information about WEHack 2027 will come out soon. In the meantime,
fill out our interest form to get updates from us.
</p>

const registration = await getUser(userId);
if (registration) return redirect("/dash");
{/* Live MLH Registration Interest Form Link Button Action */}
<div className="flex flex-col sm:flex-row gap-4 mt-4 w-full justify-center">
<Link
href="https://events.mlh.com/events/14391-wehack-2027"
target="_blank"
rel="noreferrer"
>
<Button className="px-8 py-6 text-lg font-bold text-[#1a1a1a] bg-[#D09C51] hover:bg-[#CCBA97] transition-all duration-200 transform hover:scale-[1.02] rounded-xl shadow-lg">
Fill out the Interest Form!
</Button>
</Link>

const [defaultRegistrationEnabled, defaultSecretRegistrationEnabled]: (
| string
| null
)[] = await redis.mget(
`${process.env.HK_ENV}_config:registration:registrationEnabled`,
`${process.env.HK_ENV}_config:registration:secretRegistrationEnabled`,
);
<Link href={"/"}>
<Button variant="outline" className="px-8 py-6 text-lg border-white/10 hover:bg-white/5 text-[#C9D5E3] rounded-xl">
Return Home
</Button>
</Link>
</div>

if (parseRedisBoolean(defaultRegistrationEnabled, true) === true) {
return (
<>
<div className="z-50 w-screen pt-6">
<div className="relative top-0 z-50 h-16 w-screen">
<div className="mx-auto grid h-full w-full max-w-7xl grid-flow-col grid-cols-2 px-2 sm:px-6 lg:max-w-full lg:px-8">
<div className="col-span-3 flex items-center justify-start gap-x-5 pl-4 md:pl-0">
<Link
href={"/"}
className="mr-5 flex items-center gap-x-2"
>
<Image
src={"/img/static/images/white wehack logo.png"}
alt={c.hackathonName + " Logo"}
width={60}
height={60}
className={"drop-shadow-[0_0px_0px_rgba(255,255,255,0.90)]"}
/>
</Link>
</div>
</div>
</div>
</div>
<main className="dark:bg-[#301814]">
<div className="mx-auto min-h-screen max-w-5xl px-5 pb-10 pt-[20vh] font-sans dark:text-[#CCBA97]">
<h1 className="text-6xl font-black md:text-8xl text-hackathon font-cinzel-decorative">
Register
</h1>
<p className="mt-5 font-medium text-2xl">
<span className="font-bold">Welcome Hacker!</span>{" "}
Please fill out the form below to complete your
registration for {c.hackathonName}.
</p>
<p className="pt-5 text-xl font-semibold">
Please complete your registration form in one sitting to not lose your progress!
You must click "Submit" at the end for your registration to be officially submitted.
<br></br>
</p>
<h3 className="pt-5 text-lg font-thin tracking-wide underline font-gantari">Once your form is submitted, you will <b>NOT</b> be able to change your responses, so please answer wisely.</h3>
<p className="pb-10 pt-5 text-xl">
Psttt... Running into a issue? Please let us know by
emailing <b>wehackutd@gmail.com</b>
</p>
<RegisterForm
defaultEmail={
user.emailAddresses[0]?.emailAddress || ""
}
/>
</div>
</main>
</>
);
}

return (
<main className="flex min-h-screen flex-col items-center justify-center px-2">
<div className="max-w-screen fixed left-1/2 top-[calc(50%+7rem)] h-[40vh] w-[800px] -translate-x-1/2 -translate-y-1/2 scale-150 overflow-x-hidden bg-background" />
<h2 className="text-4xl font-extrabold">{c.hackathonName}</h2>
{/* Why is this not a component? This same code is in here and insideo of sign-up */}
<h1 className="mb-10 pb-5 text-6xl font-extrabold text-hackathon md:text-8xl">
Registration
</h1>
<div className="relative z-10 flex aspect-video w-full max-w-[500px] flex-col items-center justify-center gap-y-4 rounded-xl px-5 py-4">
<h2 className="text-center text-2xl font-black">
Registration Is Currently Closed
{/* More Information Coming Soon! */}
</h2>
<p className="text-center font-bold">
If you believe this is a mistake or have any questions, feel
free to reach out to us at {c.issueEmail}!
{/* More information about WEHack 2026 will come out soon. In the meantime, fill out our interest form to get updates from us. */}
</p>
{/* <Link href="https://events.mlh.io/events/12674-wehack-2026" target="_blank">
<Button className="bg-[#D09C51] hover:bg-[#CCBA97]">
Interest Form!
</Button>
</Link> */}

<Link href={"/"}>
<Button className="bg-[#D09C51] hover:bg-[#CCBA97]">Return Home</Button>
</Link>
<p className="text-center text-sm">
Already registered?
<Link className="pl-1 underline" href={"/sign-in"}>
Sign-in.
</Link>
</p>
</div>
</main>
);
{/* Operational Support Contact Point footer */}
<p className="text-sm text-[#C9D5E3]/60 mt-4">
Running into an issue? Reach out to us at <b>wehackutd@gmail.com</b>
</p>
</div>
</main>
</>
);
}

export const runtime = "edge";
export const runtime = "edge";
86 changes: 14 additions & 72 deletions apps/web/src/app/sections/Donations/Donations.tsx
Original file line number Diff line number Diff line change
@@ -1,79 +1,21 @@
import React from 'react';
import Image from 'next/image';
import './Donations.css';

const LOGO_SHAKESHACK = '/img/static/images/donors/Shake-Shack_Logo.png';
const LOGO_NAMI = '/img/static/images/donors/Nami_Illustrations.png';
const LOGO_CIDERCADE = '/img/static/images/donors/Cidercade.png';
const LOGO_JENIS = '/img/static/images/donors/Jenis.png';
const LOGO_FIREFLY = '/img/static/images/donors/SweetFirefly.png';
const LOGO_BAZARIA = '/img/static/images/donors/Bazaria.png';
const LOGO_EILAND = '/img/static/images/donors/Eiland.png';
const LOGO_BUNDT = '/img/static/images/donors/NothingBundtCakes.png';

const SHAKESHACK_LINK = 'https://www.shakeshack.com/';
const NAMI_LINK = 'https://namimatcha.com/';
const CIDERCADE_LINK = 'https://www.cidercade.com/';
const JENIS_LINK = 'https://www.jenis.com/';
const FIREFLY_LINK = 'https://sweetfirefly.com/';
const BAZARIA_LINK = 'https://thebazaria.com/';
const EILAND_LINK = 'https://www.eilandcoffee.com/';
const BUNDT_LINK = 'https://www.nothingbundtcakes.com/';

interface GridItem {
id: number;
imagePath: string;
link: string;
}

const donations: GridItem[] = [
{ id: 1, imagePath: LOGO_CIDERCADE, link: CIDERCADE_LINK },
{ id: 2, imagePath: LOGO_SHAKESHACK, link: SHAKESHACK_LINK },
{ id: 3, imagePath: LOGO_NAMI, link: NAMI_LINK },
{ id: 4, imagePath: LOGO_JENIS, link: JENIS_LINK },
{ id: 5, imagePath: LOGO_FIREFLY, link: FIREFLY_LINK },
{ id: 6, imagePath: LOGO_BAZARIA, link: BAZARIA_LINK },
{ id: 7, imagePath: LOGO_EILAND, link: EILAND_LINK },
{ id: 8, imagePath: LOGO_BUNDT, link: BUNDT_LINK },
];

const Donations: React.FC = () => {
export default function Donations() {
return (
<section
id="Donations"
className="donations-container w-full flex flex-col items-center py-20 px-6"
>
<div className="header-3">
<h1>Donations</h1>
</div>
<section id="donations" className="py-12 text-center px-4 w-full">
<div className="max-w-2xl mx-auto flex flex-col items-center gap-4">

{/* Your original donations title */}
<h2 className="text-[#FFE9D7] text-3xl font-serif tracking-wide mb-2">
Donations
</h2>

{/* Clean, updated outreach message as plain, borderless text */}
<p className="text-[#C9D5E3] text-base md:text-lg font-light italic leading-relaxed">
Interested in donating or supporting our mission? Contact us at wehackutd@gmail.com
</p>

<div className="donations-grid-wrapper w-full max-w-7xl mx-auto">
<div className="donations-row">
{donations.map((item) => (
<a
key={item.id}
href={item.link}
target="_blank"
rel="noopener noreferrer"
className="donation-card"
>
<div className="donation-card-inner">
<Image
src={item.imagePath}
alt={`Donation ${item.id}`}
width={420}
height={420}
sizes="(max-width: 768px) 44vw, 18vw"
className="donation-logo"
priority={item.id <= 2}
/>
</div>
</a>
))}
</div>
</div>
</section>
);
};

export default Donations;
}
16 changes: 11 additions & 5 deletions apps/web/src/app/sections/Jumbotron/Jumbotron.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,19 @@ function Jumbotron() {
<section className='jumbotron md:h-[80rem]' id="home">
<div className='jumboText-container flex flex-col items-start text-left'>
<div className='jumbo-group md:ml-[1rem] mt-16 md:mt-[5rem]'>
<h4 className='jumbo-text font-thin text-[#FFE9D7] text-xs md:text-base lg:text-2xl'>WEHack 2026 Presents</h4>
<h1 className='jumbo-title text-[#FFE9D7] text-3xl md:text-5xl lg:text-7xl animate-pulse'>The Night at the Museum</h1>
<h2 className='jumbo-text font-thin text-[#C9D5E3] text-base sm:text-1xl md:1xl lg:text-4xl'>April 11th-12th</h2>
<h4 className='jumbo-text font-thin text-[#FFE9D7] text-xs md:text-base lg:text-2xl'>WEHack 2027 Presents</h4>
<h1 className='jumbo-title text-[#FFE9D7] text-3xl md:text-5xl lg:text-7xl animate-pulse'>WEHack 2027 Coming Soon</h1>
<h2 className='jumbo-text font-thin text-[#C9D5E3] text-base sm:text-1xl md:1xl lg:text-4xl'>Spring 2027</h2>

<div className='jumbo-buttons flex flex-row items-start space-x-4 mt-4 gap-1.3'>
{/* <Button link={'https://events.mlh.io/events/11456-wehack'} buttonText={'Interest Form'}/> */}
{/* <Button link={'https://live.wehackutd.com/'} buttonText={'WEHack Portal'}/> */}
<a
href="https://events.mlh.com/events/14391-wehack-2027"
className="px-8 py-4 rounded-xl font-bold transition-all duration-200 text-[#1a1a1a] bg-[#FFE9D7] hover:bg-[#CCBA97] transform hover:scale-[1.02] shadow-xl text-lg inline-block"
target="_blank"
rel="noreferrer"
>
Fill out our Interest Form!
</a>
</div>
</div>
</div>
Expand Down
Loading
Loading