diff --git a/apps/blade/src/app/_components/issue-calendar/calendar-issue-dialog.tsx b/apps/blade/src/app/_components/issue-calendar/calendar-issue-dialog.tsx index 0346d4878..9b9763282 100644 --- a/apps/blade/src/app/_components/issue-calendar/calendar-issue-dialog.tsx +++ b/apps/blade/src/app/_components/issue-calendar/calendar-issue-dialog.tsx @@ -44,7 +44,8 @@ function getAssigneeDisplayName( ) { const member = assignment.user.member; if (member) { - const fullName = `${member.firstName.trim()} ${member.lastName.trim()}`.trim(); + const fullName = + `${member.firstName.trim()} ${member.lastName.trim()}`.trim(); if (fullName.length > 0) return fullName; } return assignment.user.discordUserId; diff --git a/apps/blade/src/app/_components/issues/issue-fetcher-pane.tsx b/apps/blade/src/app/_components/issues/issue-fetcher-pane.tsx index f32cae57f..a7abd2ab7 100644 --- a/apps/blade/src/app/_components/issues/issue-fetcher-pane.tsx +++ b/apps/blade/src/app/_components/issues/issue-fetcher-pane.tsx @@ -49,7 +49,8 @@ function getAssigneeDisplayNames(issue: ISSUE.IssueFetcherPaneIssue): string[] { .map((assignment) => { const member = assignment.user.member; if (member) { - const fullName = `${member.firstName.trim()} ${member.lastName.trim()}`.trim(); + const fullName = + `${member.firstName.trim()} ${member.lastName.trim()}`.trim(); if (fullName) return fullName; } return assignment.user.discordUserId.trim(); diff --git a/apps/blade/src/app/admin/issues/[id]/page.tsx b/apps/blade/src/app/admin/issues/[id]/page.tsx index b249aa996..fa62a4193 100644 --- a/apps/blade/src/app/admin/issues/[id]/page.tsx +++ b/apps/blade/src/app/admin/issues/[id]/page.tsx @@ -24,7 +24,8 @@ function getAssigneeDisplayName(assignment: { }) { const member = assignment.user.member; if (member) { - const fullName = `${member.firstName.trim()} ${member.lastName.trim()}`.trim(); + const fullName = + `${member.firstName.trim()} ${member.lastName.trim()}`.trim(); if (fullName.length > 0) return fullName; } return assignment.user.discordUserId; diff --git a/apps/club/public/hackathons/figma-background.webp b/apps/club/public/hackathons/figma-background.webp new file mode 100644 index 000000000..d71def23e Binary files /dev/null and b/apps/club/public/hackathons/figma-background.webp differ diff --git a/apps/club/public/hackathons/figma-card-real-0.png b/apps/club/public/hackathons/figma-card-real-0.png new file mode 100644 index 000000000..554516539 Binary files /dev/null and b/apps/club/public/hackathons/figma-card-real-0.png differ diff --git a/apps/club/public/hackathons/figma-card-real-1.png b/apps/club/public/hackathons/figma-card-real-1.png new file mode 100644 index 000000000..d057be1d2 Binary files /dev/null and b/apps/club/public/hackathons/figma-card-real-1.png differ diff --git a/apps/club/public/hackathons/figma-card-real-2.png b/apps/club/public/hackathons/figma-card-real-2.png new file mode 100644 index 000000000..5660d3b02 Binary files /dev/null and b/apps/club/public/hackathons/figma-card-real-2.png differ diff --git a/apps/club/public/hackathons/figma-card-real-3.png b/apps/club/public/hackathons/figma-card-real-3.png new file mode 100644 index 000000000..5a9209296 Binary files /dev/null and b/apps/club/public/hackathons/figma-card-real-3.png differ diff --git a/apps/club/public/hackathons/figma-card-real-4.png b/apps/club/public/hackathons/figma-card-real-4.png new file mode 100644 index 000000000..f99202881 Binary files /dev/null and b/apps/club/public/hackathons/figma-card-real-4.png differ diff --git a/apps/club/public/hackathons/figma-card-real-5.png b/apps/club/public/hackathons/figma-card-real-5.png new file mode 100644 index 000000000..598928774 Binary files /dev/null and b/apps/club/public/hackathons/figma-card-real-5.png differ diff --git a/apps/club/public/hackathons/figma-card-real-6.png b/apps/club/public/hackathons/figma-card-real-6.png new file mode 100644 index 000000000..f82a6fcc6 Binary files /dev/null and b/apps/club/public/hackathons/figma-card-real-6.png differ diff --git a/apps/club/public/hackathons/figma-footer-logo.png b/apps/club/public/hackathons/figma-footer-logo.png new file mode 100644 index 000000000..eadda7560 Binary files /dev/null and b/apps/club/public/hackathons/figma-footer-logo.png differ diff --git a/apps/club/public/hackathons/figma-timeline-extended.png b/apps/club/public/hackathons/figma-timeline-extended.png new file mode 100644 index 000000000..4f528aabd Binary files /dev/null and b/apps/club/public/hackathons/figma-timeline-extended.png differ diff --git a/apps/club/public/hackathons/icon-email.png b/apps/club/public/hackathons/icon-email.png new file mode 100644 index 000000000..f4a7db5d9 Binary files /dev/null and b/apps/club/public/hackathons/icon-email.png differ diff --git a/apps/club/public/hackathons/icon-instagram.png b/apps/club/public/hackathons/icon-instagram.png new file mode 100644 index 000000000..3c524c178 Binary files /dev/null and b/apps/club/public/hackathons/icon-instagram.png differ diff --git a/apps/club/public/hackathons/icon-linkedin.png b/apps/club/public/hackathons/icon-linkedin.png new file mode 100644 index 000000000..62f473cb8 Binary files /dev/null and b/apps/club/public/hackathons/icon-linkedin.png differ diff --git a/apps/club/public/hackathons/icon-twitter.png b/apps/club/public/hackathons/icon-twitter.png new file mode 100644 index 000000000..a5b1c055b Binary files /dev/null and b/apps/club/public/hackathons/icon-twitter.png differ diff --git a/apps/club/public/hackathons/logo-130.svg b/apps/club/public/hackathons/logo-130.svg new file mode 100644 index 000000000..ee8d47241 --- /dev/null +++ b/apps/club/public/hackathons/logo-130.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/club/src/app/hackathons/page.tsx b/apps/club/src/app/hackathons/page.tsx new file mode 100644 index 000000000..c8af3abd0 --- /dev/null +++ b/apps/club/src/app/hackathons/page.tsx @@ -0,0 +1,399 @@ +import Image from "next/image"; +import Link from "next/link"; + +const navLinks = ["Home", "Teams", "Events", "Sponsors"]; + +const socialLinks = [ + { + href: "https://twitter.com/knighthacks", + label: "Knight Hacks X", + icon: "/hackathons/icon-twitter.png", + }, + { + href: "mailto:team@knighthacks.org", + label: "Email Knight Hacks", + icon: "/hackathons/icon-email.png", + }, + { + href: "https://instagram.com/knighthacks", + label: "Knight Hacks Instagram", + icon: "/hackathons/icon-instagram.png", + }, + { + href: "https://linkedin.com/company/knight-hacks", + label: "Knight Hacks LinkedIn", + icon: "/hackathons/icon-linkedin.png", + }, +] as const; + +const hackathons = [ + { + name: "Knight Hacks VIII", + date: "Oct 24 - 26, 2025", + participants: 641, + projects: 188, + siteUrl: "https://knighthacksviii.devpost.com/", + }, + { + name: "Knight Hacks VII", + date: "Oct 4 - 6, 2024", + participants: 310, + projects: 93, + siteUrl: "https://knight-hacks-vii.devpost.com/", + }, + { + name: "Knight Hacks VI", + date: "Oct 6 - 8, 2023", + participants: 323, + projects: 99, + siteUrl: "https://knight-hacks-vi.devpost.com/", + }, + { + name: "Knight Hacks IV", + date: "Nov 12 - 14, 2021", + participants: 180, + projects: 57, + siteUrl: "https://knight-hacks-2021.devpost.com/", + }, + { + name: "Knight Hacks III", + date: "Mar 1 - 3, 2019", + participants: 192, + projects: 78, + siteUrl: "https://knight-hacks-2019.devpost.com/", + }, + { + name: "Knight Hacks II", + date: "Oct 7 - 8, 2017", + participants: 141, + projects: 56, + siteUrl: "https://knight-hacks-2017.devpost.com/", + }, + { + name: "Knight Hacks I", + date: "Jan 15 - 16, 2016", + participants: 75, + projects: 34, + siteUrl: "https://knight-hacks.devpost.com/", + }, +] as const; + +const timelineRows = [ + { + side: "left", + cardX: 92.71826171875, + cardY: 692.225341796875, + cardWidth: 636.91552734375, + cardHeight: 575.094482421875, + detailsX: 921.5, + detailsY: 865.12, + }, + { + side: "right", + cardX: 808.5576171875, + cardY: 1367.227294921875, + cardWidth: 644.7265625, + cardHeight: 585.4908447265625, + detailsX: 152, + detailsY: 1540.12, + }, + { + side: "left", + cardX: 92.71826171875, + cardY: 2042.2255859375, + cardWidth: 636.91552734375, + cardHeight: 575.093994140625, + detailsX: 921.5, + detailsY: 2215.12, + }, + { + side: "right", + cardX: 808.5576171875, + cardY: 2706.227294921875, + cardWidth: 644.7265625, + cardHeight: 585.490478515625, + detailsX: 153, + detailsY: 2879.12, + }, + { + side: "left", + cardX: 92.71875, + cardY: 3335.2255859375, + cardWidth: 636.9150390625, + cardHeight: 575.093994140625, + detailsX: 922.5, + detailsY: 3508.12, + }, + { + side: "right", + cardX: 808.5576171875, + cardY: 4009.227294921875, + cardWidth: 644.7265625, + cardHeight: 585.4908447265625, + detailsX: 153, + detailsY: 4182.12, + }, + { + side: "left", + cardX: 92.71875, + cardY: 4684.2255859375, + cardWidth: 636.9150390625, + cardHeight: 575.093994140625, + detailsX: 922.5, + detailsY: 4857.12, + }, +] as const; + +function BrutalistNav() { + return ( + + ); +} + +function HackathonDetails({ + x, + y, + hackathon, +}: { + x: number; + y: number; + hackathon: (typeof hackathons)[number]; +}) { + return ( +
+
+
+

+ {hackathon.date} +

+
+
+

+ {hackathon.name} +

+
+
+ + + View Hackathon Site{" "} + + +
+ ); +} + +function Timeline() { + return ( + + ); +} + +function Footer() { + return ( + + ); +} + +export default function HackathonsPage() { + return ( +
+
+ +
+ +

+ Knight Hacks History +

+ + + + {timelineRows.map((row, index) => { + const hackathon = hackathons[index]; + + if (!hackathon) { + return null; + } + + return ( +
+

+ {hackathon.name} was held {hackathon.date} with{" "} + {hackathon.participants} participants and {hackathon.projects}{" "} + project submissions. +

+ + +
+ ); + })} + +
+
+
+ ); +} diff --git a/apps/cron/src/structs/CronBuilder.ts b/apps/cron/src/structs/CronBuilder.ts index a737af3bd..465e283cc 100644 --- a/apps/cron/src/structs/CronBuilder.ts +++ b/apps/cron/src/structs/CronBuilder.ts @@ -83,7 +83,6 @@ export class CronBuilder { public schedule(): void { for (const { expression, executor } of this.crons) { - cron.schedule(expression, this._executor.bind(this, executor)); currentCron.run(this, () => logger.log(`scheduled @ ${expression}`)); }