From 76311981e5a6f25a713db3f514ce304f43396531 Mon Sep 17 00:00:00 2001 From: Jasmine-Mogadam <47947909+Jasmine-Mogadam@users.noreply.github.com> Date: Mon, 9 Mar 2026 15:11:40 -0400 Subject: [PATCH 1/5] fix lint + renable --- .husky/pre-push | 4 +- client/src/app/makeuc-2025.css | 15 +++--- client/src/app/stats/page.tsx | 2 +- client/src/assets/fonts/garet/Garet.css | 5 +- client/src/assets/fonts/poppins/Poppins.css | 53 ++++++++++++++------- server/admin/pages/utilities.tsx | 12 +++-- 6 files changed, 56 insertions(+), 35 deletions(-) diff --git a/.husky/pre-push b/.husky/pre-push index 5e0db94..5423b8e 100755 --- a/.husky/pre-push +++ b/.husky/pre-push @@ -1,5 +1,5 @@ #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" -# yarn lint -# yarn build +yarn lint +yarn build diff --git a/client/src/app/makeuc-2025.css b/client/src/app/makeuc-2025.css index a804e83..649c214 100644 --- a/client/src/app/makeuc-2025.css +++ b/client/src/app/makeuc-2025.css @@ -247,7 +247,7 @@ body { 1488px 1629px #fff, 1545px 1875px #fff, 978px 1201px #fff, 1126px 1916px #fff, 412px 592px #fff, 852px 732px #fff, 1060px 444px #fff, 323px 1676px #fff, 1593px 1616px #fff; - animation: animStar 100s linear infinite; + animation: anim-star 100s linear infinite; } #stars2::after { @@ -340,7 +340,7 @@ body { 267px 1851px #fff, 1293px 1431px #fff, 1159px 433px #fff, 1725px 1170px #fff, 1067px 296px #fff, 746px 463px #fff, 412px 349px #fff, 1193px 1421px #fff, 564px 455px #fff, 1675px 589px #fff; - animation: animStar 150s linear infinite; + animation: anim-star 150s linear infinite; } #stars3::after { @@ -402,13 +402,18 @@ body { padding-left: 10px; } +[type="button"]:not([role="checkbox"]) span { + color: var(--foreground) !important; + opacity: 0.825 !important; +} + #title span { background: linear-gradient(white, #38495a); background-clip: text; -webkit-text-fill-color: transparent; } -@keyframes animStar { +@keyframes anim-star { from { transform: translateY(0); } @@ -480,10 +485,6 @@ textarea::placeholder, opacity: 0.65 !important; } - [type="button"]:not([role="checkbox"]) span { - color: var(--foreground) !important; - opacity: 0.825 !important; -} .bg-destructive { color: white !important; diff --git a/client/src/app/stats/page.tsx b/client/src/app/stats/page.tsx index 3191828..e255e1e 100644 --- a/client/src/app/stats/page.tsx +++ b/client/src/app/stats/page.tsx @@ -3,7 +3,7 @@ import { PageTitle } from "~/components/general/typography"; import { Config } from "~/constants/config"; -export const revalidate = Config.RevalidationFrequency; +export const dynamic = "force-dynamic"; export default function StatsPage() { const year = new Date().getFullYear() - 1; diff --git a/client/src/assets/fonts/garet/Garet.css b/client/src/assets/fonts/garet/Garet.css index 43486d0..ad9c1cb 100644 --- a/client/src/assets/fonts/garet/Garet.css +++ b/client/src/assets/fonts/garet/Garet.css @@ -1,6 +1,6 @@ /* Garet font faces */ @font-face { - font-family: "Garet"; + font-family: Garet; src: url("/assets/fonts/garet/Garet-Book.woff2") format("woff2"), url("/assets/fonts/garet/Garet-Book.woff") format("woff"), url("/assets/fonts/garet/Garet-Book.ttf") format("truetype"), @@ -8,8 +8,9 @@ font-weight: 400; font-style: normal; } + @font-face { - font-family: "Garet"; + font-family: Garet; src: url("/assets/fonts/garet/Garet-Heavy.woff2") format("woff2"), url("/assets/fonts/garet/Garet-Heavy.woff") format("woff"), url("/assets/fonts/garet/Garet-Heavy.ttf") format("truetype"), diff --git a/client/src/assets/fonts/poppins/Poppins.css b/client/src/assets/fonts/poppins/Poppins.css index 75d8195..2debdf7 100644 --- a/client/src/assets/fonts/poppins/Poppins.css +++ b/client/src/assets/fonts/poppins/Poppins.css @@ -1,111 +1,128 @@ /* Poppins font faces */ @font-face { - font-family: "Poppins"; + font-family: Poppins; src: url("/assets/fonts/poppins/Poppins-Thin.ttf") format("truetype"); font-weight: 100; font-style: normal; } + @font-face { - font-family: "Poppins"; + font-family: Poppins; src: url("/assets/fonts/poppins/Poppins-ThinItalic.ttf") format("truetype"); font-weight: 100; font-style: italic; } + @font-face { - font-family: "Poppins"; + font-family: Poppins; src: url("/assets/fonts/poppins/Poppins-ExtraLight.ttf") format("truetype"); font-weight: 200; font-style: normal; } + @font-face { - font-family: "Poppins"; + font-family: Poppins; src: url("/assets/fonts/poppins/Poppins-ExtraLightItalic.ttf") format("truetype"); font-weight: 200; font-style: italic; } + @font-face { - font-family: "Poppins"; + font-family: Poppins; src: url("/assets/fonts/poppins/Poppins-Light.ttf") format("truetype"); font-weight: 300; font-style: normal; } + @font-face { - font-family: "Poppins"; + font-family: Poppins; src: url("/assets/fonts/poppins/Poppins-LightItalic.ttf") format("truetype"); font-weight: 300; font-style: italic; } + @font-face { - font-family: "Poppins"; + font-family: Poppins; src: url("/assets/fonts/poppins/Poppins-Regular.ttf") format("truetype"); font-weight: 400; font-style: normal; } + @font-face { - font-family: "Poppins"; + font-family: Poppins; src: url("/assets/fonts/poppins/Poppins-Italic.ttf") format("truetype"); font-weight: 400; font-style: italic; } + @font-face { - font-family: "Poppins"; + font-family: Poppins; src: url("/assets/fonts/poppins/Poppins-Medium.ttf") format("truetype"); font-weight: 500; font-style: normal; } + @font-face { - font-family: "Poppins"; + font-family: Poppins; src: url("/assets/fonts/poppins/Poppins-MediumItalic.ttf") format("truetype"); font-weight: 500; font-style: italic; } + @font-face { - font-family: "Poppins"; + font-family: Poppins; src: url("/assets/fonts/poppins/Poppins-SemiBold.ttf") format("truetype"); font-weight: 600; font-style: normal; } + @font-face { - font-family: "Poppins"; + font-family: Poppins; src: url("/assets/fonts/poppins/Poppins-SemiBoldItalic.ttf") format("truetype"); font-weight: 600; font-style: italic; } + @font-face { - font-family: "Poppins"; + font-family: Poppins; src: url("/assets/fonts/poppins/Poppins-Bold.ttf") format("truetype"); font-weight: 700; font-style: normal; } + @font-face { - font-family: "Poppins"; + font-family: Poppins; src: url("/assets/fonts/poppins/Poppins-BoldItalic.ttf") format("truetype"); font-weight: 700; font-style: italic; } + @font-face { - font-family: "Poppins"; + font-family: Poppins; src: url("/assets/fonts/poppins/Poppins-ExtraBold.ttf") format("truetype"); font-weight: 800; font-style: normal; } + @font-face { - font-family: "Poppins"; + font-family: Poppins; src: url("/assets/fonts/poppins/Poppins-ExtraBoldItalic.ttf") format("truetype"); font-weight: 800; font-style: italic; } + @font-face { - font-family: "Poppins"; + font-family: Poppins; src: url("/assets/fonts/poppins/Poppins-Black.ttf") format("truetype"); font-weight: 900; font-style: normal; } + @font-face { - font-family: "Poppins"; + font-family: Poppins; src: url("/assets/fonts/poppins/Poppins-BlackItalic.ttf") format("truetype"); font-weight: 900; font-style: italic; diff --git a/server/admin/pages/utilities.tsx b/server/admin/pages/utilities.tsx index 26f8ecc..ebf70ec 100644 --- a/server/admin/pages/utilities.tsx +++ b/server/admin/pages/utilities.tsx @@ -1,28 +1,30 @@ +/* eslint-env browser */ import { PageContainer } from "@keystone-6/core/admin-ui/components"; import { Button } from "@keystone-ui/button"; import { Heading, H1, H3 } from "@keystone-ui/core"; import type { FormEventHandler } from "react"; + export const gql = ([content]: TemplateStringsArray) => content; // eslint-disable-next-line @typescript-eslint/no-explicit-any export async function fetchGraphQL( query: string, - variables?: Record + variables?: Record ) { return fetch("/api/graphql", { method: "POST", body: JSON.stringify({ query, variables }), headers: { "Content-Type": "application/json" }, }) - .then((x) => x.json()) + .then(x => x.json()) .then(({ data, errors }) => { if (errors) { throw new Error( // eslint-disable-next-line @typescript-eslint/no-explicit-any `GraphQL errors occurred:\n${errors - .map((x: any) => x.message) + .map((x: { message: string }) => x.message) .join("\n")}` ); } @@ -38,7 +40,7 @@ async function seedIndiaSchools() { `); } -const importRegistrants: FormEventHandler = (event) => { +const importRegistrants: FormEventHandler = event => { event.preventDefault(); const formData = new FormData(event.target as HTMLFormElement); @@ -49,7 +51,7 @@ const importRegistrants: FormEventHandler = (event) => { }); }; -const importProjects: FormEventHandler = (event) => { +const importProjects: FormEventHandler = event => { event.preventDefault(); const formData = new FormData(event.target as HTMLFormElement); From 1d636ef18ce6b12e66ab0f8ac5274f313a351e86 Mon Sep 17 00:00:00 2001 From: Jasmine-Mogadam <47947909+Jasmine-Mogadam@users.noreply.github.com> Date: Mon, 9 Mar 2026 15:33:33 -0400 Subject: [PATCH 2/5] add mac linter push support --- server/package.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/server/package.json b/server/package.json index 2b123c0..29c6f87 100644 --- a/server/package.json +++ b/server/package.json @@ -38,6 +38,8 @@ "zod": "^3.22.3" }, "devDependencies": { + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", "@types/archiver": "^5.1.1", "@types/express-fileupload": "^1.4.1", "@types/passport": "^1.0.14", From bd3083aab6b9345127906dae738aed8ed3bcbd0d Mon Sep 17 00:00:00 2001 From: Jasmine-Mogadam <47947909+Jasmine-Mogadam@users.noreply.github.com> Date: Mon, 9 Mar 2026 15:45:20 -0400 Subject: [PATCH 3/5] fix graphql cities --- .../judging/generated/graphql/graphql.ts | 52 +++++++++++++++ .../registration/generated/graphql/gql.ts | 5 ++ .../registration/generated/graphql/graphql.ts | 66 +++++++++++++++++++ client/src/generated/graphql/graphql.ts | 52 +++++++++++++++ server/schema.graphql | 2 + server/schema.prisma | 2 +- server/src/graphql/helpers/geography.ts | 17 +++-- server/src/graphql/index.ts | 20 +++--- 8 files changed, 203 insertions(+), 13 deletions(-) diff --git a/client/src/features/judging/generated/graphql/graphql.ts b/client/src/features/judging/generated/graphql/graphql.ts index 034ead4..7242d5e 100644 --- a/client/src/features/judging/generated/graphql/graphql.ts +++ b/client/src/features/judging/generated/graphql/graphql.ts @@ -886,6 +886,8 @@ export type ProjectWhereUniqueInput = { export type Query = { __typename?: 'Query'; + cities: Array>; + countries: Array>; discordScheduledMessage?: Maybe; discordScheduledMessages?: Maybe>; discordScheduledMessagesCount?: Maybe; @@ -915,6 +917,11 @@ export type Query = { }; +export type QueryCitiesArgs = { + countryId?: InputMaybe; +}; + + export type QueryDiscordScheduledMessageArgs = { where: DiscordScheduledMessageWhereUniqueInput; }; @@ -1078,6 +1085,7 @@ export enum QueryMode { export type Registrant = { __typename?: 'Registrant'; + acceptAllAuthorization?: Maybe; acceptPhotoRelease?: Maybe; age?: Maybe; country?: Maybe; @@ -1089,24 +1097,33 @@ export type Registrant = { ethnicity?: Maybe; expectedGraduationYear?: Maybe; firstName?: Maybe; + foodAllergy?: Maybe; + foodSuggestions?: Maybe; gender?: Maybe; hackathonsAttended?: Maybe; id: Scalars['ID']['output']; invitedInPerson?: Maybe; lastName?: Maybe; major?: Maybe; + makeucCodeOfConduct?: Maybe; + makeucHackathonRules?: Maybe; + makeucLiabilityRelease?: Maybe; mlhCodeOfConductAgreement?: Maybe; mlhEmailAgreement?: Maybe; mlhPrivacyPolicyAgreement?: Maybe; notes?: Maybe; + participationPreference?: Maybe; + phoneNumber?: Maybe; registrationYear?: Maybe; resume?: Maybe; school?: Maybe; + tshirtSize?: Maybe; user?: Maybe; verified?: Maybe; }; export type RegistrantCreateInput = { + acceptAllAuthorization?: InputMaybe; age?: InputMaybe; country?: InputMaybe; createdAt?: InputMaybe; @@ -1115,16 +1132,24 @@ export type RegistrantCreateInput = { ethnicity?: InputMaybe; expectedGraduationYear?: InputMaybe; firstName?: InputMaybe; + foodAllergy?: InputMaybe; + foodSuggestions?: InputMaybe; gender?: InputMaybe; hackathonsAttended?: InputMaybe; lastName?: InputMaybe; major?: InputMaybe; + makeucCodeOfConduct?: InputMaybe; + makeucHackathonRules?: InputMaybe; + makeucLiabilityRelease?: InputMaybe; mlhCodeOfConductAgreement?: InputMaybe; mlhEmailAgreement?: InputMaybe; mlhPrivacyPolicyAgreement?: InputMaybe; notes?: InputMaybe; + participationPreference?: InputMaybe; + phoneNumber?: InputMaybe; resume?: InputMaybe; school?: InputMaybe; + tshirtSize?: InputMaybe; user?: InputMaybe; }; @@ -1135,6 +1160,7 @@ export type RegistrantManyRelationFilter = { }; export type RegistrantOrderByInput = { + acceptAllAuthorization?: InputMaybe; acceptPhotoRelease?: InputMaybe; age?: InputMaybe; country?: InputMaybe; @@ -1146,17 +1172,25 @@ export type RegistrantOrderByInput = { ethnicity?: InputMaybe; expectedGraduationYear?: InputMaybe; firstName?: InputMaybe; + foodAllergy?: InputMaybe; + foodSuggestions?: InputMaybe; gender?: InputMaybe; hackathonsAttended?: InputMaybe; id?: InputMaybe; invitedInPerson?: InputMaybe; lastName?: InputMaybe; major?: InputMaybe; + makeucCodeOfConduct?: InputMaybe; + makeucHackathonRules?: InputMaybe; + makeucLiabilityRelease?: InputMaybe; mlhCodeOfConductAgreement?: InputMaybe; mlhEmailAgreement?: InputMaybe; mlhPrivacyPolicyAgreement?: InputMaybe; notes?: InputMaybe; + participationPreference?: InputMaybe; + phoneNumber?: InputMaybe; registrationYear?: InputMaybe; + tshirtSize?: InputMaybe; verified?: InputMaybe; }; @@ -1178,6 +1212,7 @@ export type RegistrantUpdateArgs = { }; export type RegistrantUpdateInput = { + acceptAllAuthorization?: InputMaybe; age?: InputMaybe; country?: InputMaybe; createdAt?: InputMaybe; @@ -1186,16 +1221,24 @@ export type RegistrantUpdateInput = { ethnicity?: InputMaybe; expectedGraduationYear?: InputMaybe; firstName?: InputMaybe; + foodAllergy?: InputMaybe; + foodSuggestions?: InputMaybe; gender?: InputMaybe; hackathonsAttended?: InputMaybe; lastName?: InputMaybe; major?: InputMaybe; + makeucCodeOfConduct?: InputMaybe; + makeucHackathonRules?: InputMaybe; + makeucLiabilityRelease?: InputMaybe; mlhCodeOfConductAgreement?: InputMaybe; mlhEmailAgreement?: InputMaybe; mlhPrivacyPolicyAgreement?: InputMaybe; notes?: InputMaybe; + participationPreference?: InputMaybe; + phoneNumber?: InputMaybe; resume?: InputMaybe; school?: InputMaybe; + tshirtSize?: InputMaybe; user?: InputMaybe; }; @@ -1203,6 +1246,7 @@ export type RegistrantWhereInput = { AND?: InputMaybe>; NOT?: InputMaybe>; OR?: InputMaybe>; + acceptAllAuthorization?: InputMaybe; acceptPhotoRelease?: InputMaybe; age?: InputMaybe; country?: InputMaybe; @@ -1214,18 +1258,26 @@ export type RegistrantWhereInput = { ethnicity?: InputMaybe; expectedGraduationYear?: InputMaybe; firstName?: InputMaybe; + foodAllergy?: InputMaybe; + foodSuggestions?: InputMaybe; gender?: InputMaybe; hackathonsAttended?: InputMaybe; id?: InputMaybe; invitedInPerson?: InputMaybe; lastName?: InputMaybe; major?: InputMaybe; + makeucCodeOfConduct?: InputMaybe; + makeucHackathonRules?: InputMaybe; + makeucLiabilityRelease?: InputMaybe; mlhCodeOfConductAgreement?: InputMaybe; mlhEmailAgreement?: InputMaybe; mlhPrivacyPolicyAgreement?: InputMaybe; notes?: InputMaybe; + participationPreference?: InputMaybe; + phoneNumber?: InputMaybe; registrationYear?: InputMaybe; school?: InputMaybe; + tshirtSize?: InputMaybe; user?: InputMaybe; verified?: InputMaybe; }; diff --git a/client/src/features/registration/generated/graphql/gql.ts b/client/src/features/registration/generated/graphql/gql.ts index ca239c4..cb2bc1f 100644 --- a/client/src/features/registration/generated/graphql/gql.ts +++ b/client/src/features/registration/generated/graphql/gql.ts @@ -13,6 +13,7 @@ import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/ * Therefore it is highly recommended to use the babel or swc plugin for production. */ const documents = { + "query GetCountries {\n schools(orderBy: {country: asc}, take: 1000) {\n country\n }\n}\n\nquery GetCities($countryId: Int) {\n cities(countryId: $countryId)\n}": types.GetCountriesDocument, "mutation CreateRegistrant($data: RegistrantCreateInput!) {\n createRegistrant(data: $data) {\n id\n }\n}\n\nmutation VerifyRegistrant($id: ID!) {\n verifyRegistrant(id: $id) {\n id\n }\n}": types.CreateRegistrantDocument, "query GetSchools($where: SchoolWhereInput!, $orderBy: [SchoolOrderByInput!]!, $skip: Int!, $take: Int!) {\n schools(where: $where, orderBy: $orderBy, skip: $skip, take: $take) {\n id\n name\n }\n}": types.GetSchoolsDocument, }; @@ -31,6 +32,10 @@ const documents = { */ export function graphql(source: string): unknown; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "query GetCountries {\n schools(orderBy: {country: asc}, take: 1000) {\n country\n }\n}\n\nquery GetCities($countryId: Int) {\n cities(countryId: $countryId)\n}"): (typeof documents)["query GetCountries {\n schools(orderBy: {country: asc}, take: 1000) {\n country\n }\n}\n\nquery GetCities($countryId: Int) {\n cities(countryId: $countryId)\n}"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ diff --git a/client/src/features/registration/generated/graphql/graphql.ts b/client/src/features/registration/generated/graphql/graphql.ts index 989e2fa..b9f17e4 100644 --- a/client/src/features/registration/generated/graphql/graphql.ts +++ b/client/src/features/registration/generated/graphql/graphql.ts @@ -886,6 +886,8 @@ export type ProjectWhereUniqueInput = { export type Query = { __typename?: 'Query'; + cities: Array>; + countries: Array>; discordScheduledMessage?: Maybe; discordScheduledMessages?: Maybe>; discordScheduledMessagesCount?: Maybe; @@ -915,6 +917,11 @@ export type Query = { }; +export type QueryCitiesArgs = { + countryId?: InputMaybe; +}; + + export type QueryDiscordScheduledMessageArgs = { where: DiscordScheduledMessageWhereUniqueInput; }; @@ -1078,6 +1085,7 @@ export enum QueryMode { export type Registrant = { __typename?: 'Registrant'; + acceptAllAuthorization?: Maybe; acceptPhotoRelease?: Maybe; age?: Maybe; country?: Maybe; @@ -1089,24 +1097,33 @@ export type Registrant = { ethnicity?: Maybe; expectedGraduationYear?: Maybe; firstName?: Maybe; + foodAllergy?: Maybe; + foodSuggestions?: Maybe; gender?: Maybe; hackathonsAttended?: Maybe; id: Scalars['ID']['output']; invitedInPerson?: Maybe; lastName?: Maybe; major?: Maybe; + makeucCodeOfConduct?: Maybe; + makeucHackathonRules?: Maybe; + makeucLiabilityRelease?: Maybe; mlhCodeOfConductAgreement?: Maybe; mlhEmailAgreement?: Maybe; mlhPrivacyPolicyAgreement?: Maybe; notes?: Maybe; + participationPreference?: Maybe; + phoneNumber?: Maybe; registrationYear?: Maybe; resume?: Maybe; school?: Maybe; + tshirtSize?: Maybe; user?: Maybe; verified?: Maybe; }; export type RegistrantCreateInput = { + acceptAllAuthorization?: InputMaybe; age?: InputMaybe; country?: InputMaybe; createdAt?: InputMaybe; @@ -1115,16 +1132,24 @@ export type RegistrantCreateInput = { ethnicity?: InputMaybe; expectedGraduationYear?: InputMaybe; firstName?: InputMaybe; + foodAllergy?: InputMaybe; + foodSuggestions?: InputMaybe; gender?: InputMaybe; hackathonsAttended?: InputMaybe; lastName?: InputMaybe; major?: InputMaybe; + makeucCodeOfConduct?: InputMaybe; + makeucHackathonRules?: InputMaybe; + makeucLiabilityRelease?: InputMaybe; mlhCodeOfConductAgreement?: InputMaybe; mlhEmailAgreement?: InputMaybe; mlhPrivacyPolicyAgreement?: InputMaybe; notes?: InputMaybe; + participationPreference?: InputMaybe; + phoneNumber?: InputMaybe; resume?: InputMaybe; school?: InputMaybe; + tshirtSize?: InputMaybe; user?: InputMaybe; }; @@ -1135,6 +1160,7 @@ export type RegistrantManyRelationFilter = { }; export type RegistrantOrderByInput = { + acceptAllAuthorization?: InputMaybe; acceptPhotoRelease?: InputMaybe; age?: InputMaybe; country?: InputMaybe; @@ -1146,17 +1172,25 @@ export type RegistrantOrderByInput = { ethnicity?: InputMaybe; expectedGraduationYear?: InputMaybe; firstName?: InputMaybe; + foodAllergy?: InputMaybe; + foodSuggestions?: InputMaybe; gender?: InputMaybe; hackathonsAttended?: InputMaybe; id?: InputMaybe; invitedInPerson?: InputMaybe; lastName?: InputMaybe; major?: InputMaybe; + makeucCodeOfConduct?: InputMaybe; + makeucHackathonRules?: InputMaybe; + makeucLiabilityRelease?: InputMaybe; mlhCodeOfConductAgreement?: InputMaybe; mlhEmailAgreement?: InputMaybe; mlhPrivacyPolicyAgreement?: InputMaybe; notes?: InputMaybe; + participationPreference?: InputMaybe; + phoneNumber?: InputMaybe; registrationYear?: InputMaybe; + tshirtSize?: InputMaybe; verified?: InputMaybe; }; @@ -1178,6 +1212,7 @@ export type RegistrantUpdateArgs = { }; export type RegistrantUpdateInput = { + acceptAllAuthorization?: InputMaybe; age?: InputMaybe; country?: InputMaybe; createdAt?: InputMaybe; @@ -1186,16 +1221,24 @@ export type RegistrantUpdateInput = { ethnicity?: InputMaybe; expectedGraduationYear?: InputMaybe; firstName?: InputMaybe; + foodAllergy?: InputMaybe; + foodSuggestions?: InputMaybe; gender?: InputMaybe; hackathonsAttended?: InputMaybe; lastName?: InputMaybe; major?: InputMaybe; + makeucCodeOfConduct?: InputMaybe; + makeucHackathonRules?: InputMaybe; + makeucLiabilityRelease?: InputMaybe; mlhCodeOfConductAgreement?: InputMaybe; mlhEmailAgreement?: InputMaybe; mlhPrivacyPolicyAgreement?: InputMaybe; notes?: InputMaybe; + participationPreference?: InputMaybe; + phoneNumber?: InputMaybe; resume?: InputMaybe; school?: InputMaybe; + tshirtSize?: InputMaybe; user?: InputMaybe; }; @@ -1203,6 +1246,7 @@ export type RegistrantWhereInput = { AND?: InputMaybe>; NOT?: InputMaybe>; OR?: InputMaybe>; + acceptAllAuthorization?: InputMaybe; acceptPhotoRelease?: InputMaybe; age?: InputMaybe; country?: InputMaybe; @@ -1214,18 +1258,26 @@ export type RegistrantWhereInput = { ethnicity?: InputMaybe; expectedGraduationYear?: InputMaybe; firstName?: InputMaybe; + foodAllergy?: InputMaybe; + foodSuggestions?: InputMaybe; gender?: InputMaybe; hackathonsAttended?: InputMaybe; id?: InputMaybe; invitedInPerson?: InputMaybe; lastName?: InputMaybe; major?: InputMaybe; + makeucCodeOfConduct?: InputMaybe; + makeucHackathonRules?: InputMaybe; + makeucLiabilityRelease?: InputMaybe; mlhCodeOfConductAgreement?: InputMaybe; mlhEmailAgreement?: InputMaybe; mlhPrivacyPolicyAgreement?: InputMaybe; notes?: InputMaybe; + participationPreference?: InputMaybe; + phoneNumber?: InputMaybe; registrationYear?: InputMaybe; school?: InputMaybe; + tshirtSize?: InputMaybe; user?: InputMaybe; verified?: InputMaybe; }; @@ -1506,6 +1558,18 @@ export type UserWhereUniqueInput = { id?: InputMaybe; }; +export type GetCountriesQueryVariables = Exact<{ [key: string]: never; }>; + + +export type GetCountriesQuery = { __typename?: 'Query', schools?: Array<{ __typename?: 'School', country?: string | null }> | null }; + +export type GetCitiesQueryVariables = Exact<{ + countryId?: InputMaybe; +}>; + + +export type GetCitiesQuery = { __typename?: 'Query', cities: Array }; + export type CreateRegistrantMutationVariables = Exact<{ data: RegistrantCreateInput; }>; @@ -1531,6 +1595,8 @@ export type GetSchoolsQueryVariables = Exact<{ export type GetSchoolsQuery = { __typename?: 'Query', schools?: Array<{ __typename?: 'School', id: string, name?: string | null }> | null }; +export const GetCountriesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetCountries"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"schools"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"orderBy"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"country"},"value":{"kind":"EnumValue","value":"asc"}}]}},{"kind":"Argument","name":{"kind":"Name","value":"take"},"value":{"kind":"IntValue","value":"1000"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"country"}}]}}]}}]} as unknown as DocumentNode; +export const GetCitiesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetCities"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"countryId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"cities"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"countryId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"countryId"}}}]}]}}]} as unknown as DocumentNode; export const CreateRegistrantDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateRegistrant"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"data"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"RegistrantCreateInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createRegistrant"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"data"},"value":{"kind":"Variable","name":{"kind":"Name","value":"data"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode; export const VerifyRegistrantDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"VerifyRegistrant"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"verifyRegistrant"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode; export const GetSchoolsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetSchools"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"where"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"SchoolWhereInput"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"orderBy"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"SchoolOrderByInput"}}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"skip"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"take"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"schools"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"Variable","name":{"kind":"Name","value":"where"}}},{"kind":"Argument","name":{"kind":"Name","value":"orderBy"},"value":{"kind":"Variable","name":{"kind":"Name","value":"orderBy"}}},{"kind":"Argument","name":{"kind":"Name","value":"skip"},"value":{"kind":"Variable","name":{"kind":"Name","value":"skip"}}},{"kind":"Argument","name":{"kind":"Name","value":"take"},"value":{"kind":"Variable","name":{"kind":"Name","value":"take"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file diff --git a/client/src/generated/graphql/graphql.ts b/client/src/generated/graphql/graphql.ts index 9890f28..8484b94 100644 --- a/client/src/generated/graphql/graphql.ts +++ b/client/src/generated/graphql/graphql.ts @@ -886,6 +886,8 @@ export type ProjectWhereUniqueInput = { export type Query = { __typename?: 'Query'; + cities: Array>; + countries: Array>; discordScheduledMessage?: Maybe; discordScheduledMessages?: Maybe>; discordScheduledMessagesCount?: Maybe; @@ -915,6 +917,11 @@ export type Query = { }; +export type QueryCitiesArgs = { + countryId?: InputMaybe; +}; + + export type QueryDiscordScheduledMessageArgs = { where: DiscordScheduledMessageWhereUniqueInput; }; @@ -1078,6 +1085,7 @@ export enum QueryMode { export type Registrant = { __typename?: 'Registrant'; + acceptAllAuthorization?: Maybe; acceptPhotoRelease?: Maybe; age?: Maybe; country?: Maybe; @@ -1089,24 +1097,33 @@ export type Registrant = { ethnicity?: Maybe; expectedGraduationYear?: Maybe; firstName?: Maybe; + foodAllergy?: Maybe; + foodSuggestions?: Maybe; gender?: Maybe; hackathonsAttended?: Maybe; id: Scalars['ID']['output']; invitedInPerson?: Maybe; lastName?: Maybe; major?: Maybe; + makeucCodeOfConduct?: Maybe; + makeucHackathonRules?: Maybe; + makeucLiabilityRelease?: Maybe; mlhCodeOfConductAgreement?: Maybe; mlhEmailAgreement?: Maybe; mlhPrivacyPolicyAgreement?: Maybe; notes?: Maybe; + participationPreference?: Maybe; + phoneNumber?: Maybe; registrationYear?: Maybe; resume?: Maybe; school?: Maybe; + tshirtSize?: Maybe; user?: Maybe; verified?: Maybe; }; export type RegistrantCreateInput = { + acceptAllAuthorization?: InputMaybe; age?: InputMaybe; country?: InputMaybe; createdAt?: InputMaybe; @@ -1115,16 +1132,24 @@ export type RegistrantCreateInput = { ethnicity?: InputMaybe; expectedGraduationYear?: InputMaybe; firstName?: InputMaybe; + foodAllergy?: InputMaybe; + foodSuggestions?: InputMaybe; gender?: InputMaybe; hackathonsAttended?: InputMaybe; lastName?: InputMaybe; major?: InputMaybe; + makeucCodeOfConduct?: InputMaybe; + makeucHackathonRules?: InputMaybe; + makeucLiabilityRelease?: InputMaybe; mlhCodeOfConductAgreement?: InputMaybe; mlhEmailAgreement?: InputMaybe; mlhPrivacyPolicyAgreement?: InputMaybe; notes?: InputMaybe; + participationPreference?: InputMaybe; + phoneNumber?: InputMaybe; resume?: InputMaybe; school?: InputMaybe; + tshirtSize?: InputMaybe; user?: InputMaybe; }; @@ -1135,6 +1160,7 @@ export type RegistrantManyRelationFilter = { }; export type RegistrantOrderByInput = { + acceptAllAuthorization?: InputMaybe; acceptPhotoRelease?: InputMaybe; age?: InputMaybe; country?: InputMaybe; @@ -1146,17 +1172,25 @@ export type RegistrantOrderByInput = { ethnicity?: InputMaybe; expectedGraduationYear?: InputMaybe; firstName?: InputMaybe; + foodAllergy?: InputMaybe; + foodSuggestions?: InputMaybe; gender?: InputMaybe; hackathonsAttended?: InputMaybe; id?: InputMaybe; invitedInPerson?: InputMaybe; lastName?: InputMaybe; major?: InputMaybe; + makeucCodeOfConduct?: InputMaybe; + makeucHackathonRules?: InputMaybe; + makeucLiabilityRelease?: InputMaybe; mlhCodeOfConductAgreement?: InputMaybe; mlhEmailAgreement?: InputMaybe; mlhPrivacyPolicyAgreement?: InputMaybe; notes?: InputMaybe; + participationPreference?: InputMaybe; + phoneNumber?: InputMaybe; registrationYear?: InputMaybe; + tshirtSize?: InputMaybe; verified?: InputMaybe; }; @@ -1178,6 +1212,7 @@ export type RegistrantUpdateArgs = { }; export type RegistrantUpdateInput = { + acceptAllAuthorization?: InputMaybe; age?: InputMaybe; country?: InputMaybe; createdAt?: InputMaybe; @@ -1186,16 +1221,24 @@ export type RegistrantUpdateInput = { ethnicity?: InputMaybe; expectedGraduationYear?: InputMaybe; firstName?: InputMaybe; + foodAllergy?: InputMaybe; + foodSuggestions?: InputMaybe; gender?: InputMaybe; hackathonsAttended?: InputMaybe; lastName?: InputMaybe; major?: InputMaybe; + makeucCodeOfConduct?: InputMaybe; + makeucHackathonRules?: InputMaybe; + makeucLiabilityRelease?: InputMaybe; mlhCodeOfConductAgreement?: InputMaybe; mlhEmailAgreement?: InputMaybe; mlhPrivacyPolicyAgreement?: InputMaybe; notes?: InputMaybe; + participationPreference?: InputMaybe; + phoneNumber?: InputMaybe; resume?: InputMaybe; school?: InputMaybe; + tshirtSize?: InputMaybe; user?: InputMaybe; }; @@ -1203,6 +1246,7 @@ export type RegistrantWhereInput = { AND?: InputMaybe>; NOT?: InputMaybe>; OR?: InputMaybe>; + acceptAllAuthorization?: InputMaybe; acceptPhotoRelease?: InputMaybe; age?: InputMaybe; country?: InputMaybe; @@ -1214,18 +1258,26 @@ export type RegistrantWhereInput = { ethnicity?: InputMaybe; expectedGraduationYear?: InputMaybe; firstName?: InputMaybe; + foodAllergy?: InputMaybe; + foodSuggestions?: InputMaybe; gender?: InputMaybe; hackathonsAttended?: InputMaybe; id?: InputMaybe; invitedInPerson?: InputMaybe; lastName?: InputMaybe; major?: InputMaybe; + makeucCodeOfConduct?: InputMaybe; + makeucHackathonRules?: InputMaybe; + makeucLiabilityRelease?: InputMaybe; mlhCodeOfConductAgreement?: InputMaybe; mlhEmailAgreement?: InputMaybe; mlhPrivacyPolicyAgreement?: InputMaybe; notes?: InputMaybe; + participationPreference?: InputMaybe; + phoneNumber?: InputMaybe; registrationYear?: InputMaybe; school?: InputMaybe; + tshirtSize?: InputMaybe; user?: InputMaybe; verified?: InputMaybe; }; diff --git a/server/schema.graphql b/server/schema.graphql index 6d30901..9918a75 100644 --- a/server/schema.graphql +++ b/server/schema.graphql @@ -913,6 +913,8 @@ type Query { passportStrategyStorage(where: PassportStrategyStorageWhereUniqueInput!): PassportStrategyStorage passportStrategyStoragesCount(where: PassportStrategyStorageWhereInput! = {}): Int keystone: KeystoneMeta! + countries: [JSON]! + cities(countryId: Int): [JSON]! statistics(year: Int!): String } diff --git a/server/schema.prisma b/server/schema.prisma index 13faab0..de6b0bb 100644 --- a/server/schema.prisma +++ b/server/schema.prisma @@ -86,7 +86,7 @@ model Registrant { mlhCodeOfConductAgreement Boolean @default(false) mlhPrivacyPolicyAgreement Boolean @default(false) mlhEmailAgreement Boolean @default(false) - registrationYear Int? @default(2025) + registrationYear Int? @default(2026) createdAt DateTime? @default(now()) verified Boolean @default(false) discordVerified Boolean @default(false) diff --git a/server/src/graphql/helpers/geography.ts b/server/src/graphql/helpers/geography.ts index f0651fe..f811a0e 100644 --- a/server/src/graphql/helpers/geography.ts +++ b/server/src/graphql/helpers/geography.ts @@ -105,10 +105,19 @@ export const initializeGeographyState = async (): Promise // First pass: Initialize countries for (const country of countriesData) { - countries.set(country.id, { - ...country, - states: country.hasStates ? new Map() : undefined, - }); + if (country.hasStates) { + countries.set(country.id, { + ...country, + hasStates: true, + states: new Map(), + }); + } else { + countries.set(country.id, { + ...country, + hasStates: false, + cities: new Map(), + }); + } } // Second pass: Link states to countries diff --git a/server/src/graphql/index.ts b/server/src/graphql/index.ts index 7bbe981..fa61bdd 100644 --- a/server/src/graphql/index.ts +++ b/server/src/graphql/index.ts @@ -3,15 +3,15 @@ import { graphql } from "@keystone-6/core"; import { sendEmailToRegistrant, sendRegistrantConfirmationEmail, sendRegistrantEmail } from "../schema/registrant"; import { getSchoolIndiaData } from "../scripts/seed/schoolIndia"; -import type { Context } from ".keystone/types"; -/*import { +import { initializeGeographyState, } from "./helpers/geography"; import type { GeographyState, } from "./helpers/geography"; +import type { Context } from ".keystone/types"; // Initialize the geography state const initializeState = async () => { @@ -26,16 +26,20 @@ const initializeState = async () => { let state: GeographyState | null = null; initializeState().then(result => { state = result; -});*/ +}); export const extendGraphqlSchema = graphql.extend(base => ({ query: { - /* countries: graphql.field({ type: graphql.nonNull(graphql.list(graphql.JSON)), - async resolve() { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + async resolve(): Promise { if (!state) return []; - return Array.from(state.countries.values()).map(country => ({ ...country })); + return Array.from(state.countries.values()).map(country => { + // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any + const { states, cities, ...rest } = country as any; + return rest; + }); }, }), cities: graphql.field({ @@ -68,7 +72,7 @@ export const extendGraphqlSchema = graphql.extend(base => ({ return []; }, - }),*/ + }), // Fill in statistics statistics: graphql.field({ type: graphql.String, //Undefined --> Change in the future @@ -140,7 +144,7 @@ export const extendGraphqlSchema = graphql.extend(base => ({ async resolve(_source, _, context: Context) { if (!context.session) return null; - await context.prisma.school.createMany({ data: await getSchoolIndiaData() }); + await context.prisma.school.createMany({ data: await getSchoolIndiaData(new Set()) }); return true; }, }), From 82309fcbf7713c6a8cf654e3195c5c916fdb7c23 Mon Sep 17 00:00:00 2001 From: Jasmine-Mogadam <47947909+Jasmine-Mogadam@users.noreply.github.com> Date: Mon, 9 Mar 2026 16:24:13 -0400 Subject: [PATCH 4/5] dummy commit --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5e74b0e..a99568c 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,7 @@ For a container engine, one of the following is recommended: Here are the steps to contributing to the MakeUC Website: 1. Clone the repository + 2. Open the repository in VSCode 3. Run `Dev Containers: Reopen in Container` in the command pallet in VSCode (`CTRL+SHIFT+P` by default) 4. Using the terminal inside of VSCode, run `yarn dev` From 292607c4dc239ef25a9ccc63c28121e287da3bba Mon Sep 17 00:00:00 2001 From: Jasmine-Mogadam <47947909+Jasmine-Mogadam@users.noreply.github.com> Date: Mon, 9 Mar 2026 16:32:29 -0400 Subject: [PATCH 5/5] make mac fix optional for linux os --- server/package.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/server/package.json b/server/package.json index 29c6f87..cbae5fd 100644 --- a/server/package.json +++ b/server/package.json @@ -37,9 +37,11 @@ "typescript": "^4.9.5", "zod": "^3.22.3" }, - "devDependencies": { + "optionalDependencies": { "@esbuild/darwin-arm64": "0.20.2", - "@esbuild/darwin-x64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2" + }, + "devDependencies": { "@types/archiver": "^5.1.1", "@types/express-fileupload": "^1.4.1", "@types/passport": "^1.0.14",