diff --git a/.env.example b/.env.example deleted file mode 100644 index ece81426..00000000 --- a/.env.example +++ /dev/null @@ -1,43 +0,0 @@ -AWS_ACCESS_KEY_ID="43242s387fg44638s244fh24" -AWS_REGION="us-east-2" -AWS_S3_BUCKET="hackathon-backups" -AWS_S3_ENDPOINT="https://dfh7346398578dhgsds.r2.cloudflarestorage.com" -AWS_S3_REGION="auto" -AWS_SECRET_ACCESS_KEY="4258722gyrgejw78gfg2u20974fhihdfs02" -AWS_SES_ACCESS_KEY="ADEIAFHJ3HKFU48FHJK" -AWS_SES_EMAIL_FROM="no-reply@[your_organization].org" -AWS_SES_SECRET_ACCESS_KEY="AfBHKrDFh/Q03u+37iyGrwjFJ" -BACKUP_CRON_SCHEDULE="0 */6 * * *" -BACKUP_DATABASE_URL="postgres://default:RtN4q5qefsTO@ui-painted-hills-e5ddlb.us-east-2.aws.neon.tech:4576/verceldb?sslmode=require" -BLOB_READ_WRITE_TOKEN="vercel_blob_rw_fhb9DH2kOEIO3EOI_3dBKKFHBGDLNSjnjDOIJHF" -BOT_API_URL="https://hackkit-actions-bots.up.railway.app" -CLERK_SECRET_KEY="sk_test_AFNJKABF2uhkbDBUKAFAKBAHBj3r" -CLOUDFLARE_ACCOUNT_ID="cdcdJB3453KKJFBDSBHA54546UIBF" -DISCORD_CLIENT_ID="5287285627805029718188890" -DISCORD_DEV_SERVER_ID="5287285361905029718188890" -DISCORD_DEV_VERIFY_CHANNEL_ID="52872856278050172988890" -DISCORD_PROD_SERVER_ID="528728562780501729853789" -DISCORD_PROD_VERIFY_CHANNEL_ID="5287378262780501729853789" -DISCORD_SECRET_TOKEN="FHBAHJABDhbHSUeyi7398.S72ljd.HKBVAfug73gifa-74gfwiyB-BHJBDHV07hAJf83" -HK_ENV="development" -INTERNAL_AUTH_KEY="bwgybgidbsi-4784gyfgs-475hhkdsbfs-bwgybgidbsi-4784gyfgs-475hhkdsbfs-bwgybgidbsi-4784gyfgs-475hhkdsbfs-fbnauib4783-bhfbsjfbs" -NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY="pk_test_YRGIBHSBIbabffjdhvbuYGI7BK" -NEXT_PUBLIC_CLERK_SIGN_IN_URL="/sign-in" -NEXT_PUBLIC_CLERK_SIGN_UP_URL="/sign-up" -PLUNK_API_KEY="sk_279y482gibfai7g74gikbga345" -PLUNK_API_URL="https://plunk.[your_org_name].org/api/[version_number]" -POSTGRES_DATABASE="verceldb" -POSTGRES_HOST="ep-rising-sky-adbkfahbeke-spooler.us-east-2.aws.neon.tech" -POSTGRES_PASSWORD="dkhjbIYBFABUI" -POSTGRES_PRISMA_URL="postgres://default:dkhjbIYBFABUI@ep-rising-sky-adbkfahbeke-spooler.us-east-2.aws.neon.tech/verceldb?pgbouncer=true&connect_timeout=15&sslmode=require" -POSTGRES_URL="postgres://default:dkhjbIYBFABUI@ep-rising-sky-adbkfahbeke-spooler.us-east-2.aws.neon.tech/verceldb?sslmode=require" -POSTGRES_URL_NO_SSL="postgres://default:dkhjbIYBFABUI@ep-rising-sky-adbkfahbeke-spooler.us-east-2.aws.neon.tech/verceldb" -POSTGRES_URL_NON_POOLING="postgres://default:dkhjbIYBFABUI@ep-rising-sky-adbkfahbeke-spooler.us-east-2.aws.neon.tech/verceldb?sslmode=require" -POSTGRES_USER="default" -R2_ACCESS_KEY_ID="1bfkhbfyiayi38uhidfis" -R2_BUCKET_NAME="your-org-name-userdata" -R2_SECRET_ACCESS_KEY="279y45g79tgbjsbfhbsiufhbs89hg487hsiufs" -TURSO_AUTH_TOKEN="dhbBDSUGFBSUYGBSIUGRBIGBSIYBS7495w8y97w.bivsb7478wGYIFGDSUGFS48y39975y3gtyugysjgs7ugu.BHFBSYUFBSV476guysfuw78gfuy3buybfshbfYUFSGVBYFIBVEIUSBVJSBANIBA74y597bvs6gfusg&gsyjgbfshgbyIGBYUS" -TURSO_DATABASE_URL="libsql:hackkit-orgname.turso.io" -UPSTASH_REDIS_REST_TOKEN="BKFSHBSIY7g9347385gBJFDBSJYFGBSIYFUSIBISUYHGOSHIYtusvufdbsfiubfsibYBG" -UPSTASH_REDIS_REST_URL="https://giant-worm-78102.upstash.io" diff --git a/README.md b/README.md index 1e62cc23..d2040e40 100644 --- a/README.md +++ b/README.md @@ -24,3 +24,10 @@ Want to help us build HackKit? Please reach out to us at `tech@acmutsa.org` or j + + +pnpm dlx shadcn@latest add @react-bits/Hyperspeed-JS-CSS + +npm install gsap + +pnpm add @radix-ui/react-portal @radix-ui/react-menu diff --git a/apps/backups/src/env.ts b/apps/backups/src/env.ts index 0adfe7b1..f6708c0a 100644 --- a/apps/backups/src/env.ts +++ b/apps/backups/src/env.ts @@ -1,12 +1,14 @@ import { createEnv } from "@t3-oss/env-core"; import { z } from "zod"; + export const env = createEnv({ server: { + /* BACKUPS_SECRET_KEY: z.string({ description: "This is a secret key used to sign and verify requests. It should be kept secret and not shared with anyone.", }), - BACKUPS_DATABSE_NAME: z.string(), + BACKUPS_DATABASE_NAME: z.string(), BACKUPS_ORGANIZATION_SLUG: z.string(), BACKUPS_CLOUDFLARE_ACCOUNT_ID: z.string({ description: @@ -19,6 +21,7 @@ export const env = createEnv({ "This is a bearer token to access the databases. If serverless DB provider allows, try to make this token read-only.", }), BACKUPS_BUCKET_NAME: z.string(), + */ }, onValidationError: (issues) => { console.log("all process variables:", process.env); diff --git a/apps/web/package.json b/apps/web/package.json index 00f634f2..ec2371a2 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -25,7 +25,9 @@ "@radix-ui/react-dialog": "^1.0.4", "@radix-ui/react-dropdown-menu": "^2.0.5", "@radix-ui/react-label": "^2.0.2", + "@radix-ui/react-menu": "^2.1.16", "@radix-ui/react-popover": "^1.0.6", + "@radix-ui/react-portal": "^1.1.10", "@radix-ui/react-select": "^1.2.2", "@radix-ui/react-slot": "^1.0.2", "@radix-ui/react-switch": "^1.0.3", @@ -68,11 +70,12 @@ "nanoid": "^5.0.7", "next": "14.2.25", "next-safe-action": "^7.9.3", - "nextjs@4": "link:clerk/nextjs@4", + "@clerk/nextjs": "^6.12.12", "no-profanity": "^1.5.1", "pg": "^8.12.0", "postcss": "8.4.39", "postgres": "^3.4.4", + "postprocessing": "^6.36.0", "pusher-js": "8.4.0-rc2", "react": "18.3.1", "react-aria": "^3.33.1", @@ -94,6 +97,7 @@ "tailwind-merge": "^2.4.0", "tailwindcss": "3.4.6", "tailwindcss-animate": "^1.0.7", + "three": "^0.167.1", "typescript": "5.5.3", "use-debounce": "^10.0.1", "usehooks-ts": "^3.1.0", @@ -103,5 +107,7 @@ "devDependencies": { "@cloudflare/next-on-pages": "^1.13.10", "esbuild-register": "^3.5.0" + } + } diff --git a/apps/web/public/img/logo/cq26.png b/apps/web/public/img/logo/cq26.png new file mode 100644 index 00000000..b1bf34d2 Binary files /dev/null and b/apps/web/public/img/logo/cq26.png differ diff --git a/apps/web/public/img/logo/helmet.png b/apps/web/public/img/logo/helmet.png new file mode 100644 index 00000000..fe11dccb Binary files /dev/null and b/apps/web/public/img/logo/helmet.png differ diff --git a/apps/web/public/img/logo/topdown.png b/apps/web/public/img/logo/topdown.png new file mode 100644 index 00000000..8d93b552 Binary files /dev/null and b/apps/web/public/img/logo/topdown.png differ diff --git a/apps/web/src/app/favicon.ico b/apps/web/src/app/favicon.ico index 4246b4ca..b293bb09 100644 Binary files a/apps/web/src/app/favicon.ico and b/apps/web/src/app/favicon.ico differ diff --git a/apps/web/src/app/globals.css b/apps/web/src/app/globals.css index 8494cab5..25b52f33 100644 --- a/apps/web/src/app/globals.css +++ b/apps/web/src/app/globals.css @@ -4,11 +4,11 @@ @layer base { :root { - --background: 0 0% 100%; + --background: 240 18% 10%; --foreground: 240 10% 3.9%; --nav: 255, 255, 255; - --hackathon-primary: 206 86% 52%; + --hackathon-primary: 6 61.7% 41%; --muted: 240 4.8% 95.9%; --muted-foreground: 240 3.8% 46.1%; @@ -38,14 +38,14 @@ --radius: 0.5rem; - --gradient-color-1: #668cff; - --gradient-color-2: #3366ff; - --gradient-color-3: #002db3; - --gradient-color-4: #1952cc; + --gradient-color-1: #ff6666; + --gradient-color-2: #ff3333; + --gradient-color-3: #b30000; + --gradient-color-4: #cc1919; } .dark { - --background: 240 10% 3.9%; + --background: 240 18% 10%; --foreground: 0 0% 98%; --nav: 240 10% 3.9%; @@ -148,3 +148,24 @@ transform: scale(1.1); } } + +.boxed{ + display: inline-block; + margin: 0; + padding: 10px 14px; /* tighter horizontal padding */ + background: rgba(0, 0, 0, 0.86); + border: 2px solid rgba(255, 255, 255, 0.14); + border-radius: 0px; + line-height: 1.02; + } + + .boxed-fullscreen { + display: inline-block; + margin: 0; + padding: 10px 14px; /* tighter horizontal padding */ + background: rgba(0, 0, 0, 0.86); + border: 2px solid rgba(255, 255, 255, 0.14); + border-radius: 0px; + line-height: 1.02; + } + \ No newline at end of file diff --git a/apps/web/src/app/layout.tsx b/apps/web/src/app/layout.tsx index bb38418d..4f0f295d 100644 --- a/apps/web/src/app/layout.tsx +++ b/apps/web/src/app/layout.tsx @@ -3,6 +3,14 @@ import { ClerkProvider } from "@clerk/nextjs"; import { cookies } from "next/headers"; import { Analytics } from "@vercel/analytics/react"; import { defaultTheme } from "config"; +import { Racing_Sans_One } from "next/font/google"; +import "@/components/shadcn/Hyperspeed.css"; + +const racing = Racing_Sans_One({ + subsets: ["latin"], + weight: "400", + variable: "--font-racing", +}); export default function RootLayout({ children, @@ -13,7 +21,11 @@ export default function RootLayout({ return ( - + {children} diff --git a/apps/web/src/app/page.tsx b/apps/web/src/app/page.tsx index 365329e7..425ff051 100644 --- a/apps/web/src/app/page.tsx +++ b/apps/web/src/app/page.tsx @@ -6,22 +6,22 @@ import Partners from "@/components/landing/Partners"; import Footer from "@/components/landing/Footer"; import MLHBadge from "@/components/landing/MLHBadge"; -import { Oswald } from "next/font/google"; +import { Racing_Sans_One } from "next/font/google"; import WorkWithUs from "@/components/landing/WorkWithUs"; -const oswald = Oswald({ - variable: "--font-oswald", +const racingSansOne = Racing_Sans_One({ subsets: ["latin"], + weight: "400", + variable: "--font-racing", }); export default function Home() { return ( -
+
- diff --git a/apps/web/src/components/landing/About.tsx b/apps/web/src/components/landing/About.tsx index 407df687..99577b81 100644 --- a/apps/web/src/components/landing/About.tsx +++ b/apps/web/src/components/landing/About.tsx @@ -1,30 +1,917 @@ +"use client"; + +import { useEffect, useRef, useState } from "react"; import Balancer from "react-wrap-balancer"; -import Image from "next/image"; -import D1 from "../../../public/img/landing/d1.svg"; -import D2 from "../../../public/img/landing/d2.svg"; -import D3 from "../../../public/img/landing/d3.svg"; -import D4 from "../../../public/img/landing/d4.svg"; -import Dino_Coding from "../../../public/img/landing/dinos_coding.png"; +import { cn } from "@/lib/utils/client/cn"; + + export default function About() { - const d1_stylesheet = { - width: "25rem", - height: "auto", - sm: "width: 30rem", - }; - return ( -
-
-

- About Section -

-

- Introduce the hackathon and its purpose! Make it sound - enticing -

-
-
- ); + const ref = useRef(null); + const [p, setP] = useState(0); + const [welcomeDone, setWelcomeDone] = useState(false); + + + useEffect(() => { + const el = ref.current; + if (!el) return; + + const onScroll = () => { + const el = ref.current; + if (!el) return; + + const r = el.getBoundingClientRect(); + const vh = window.innerHeight; + + // progress starts when the section's top hits 80% of viewport + // progress ends when the section's bottom hits 20% of viewport + const start = vh * 0.8; + const end = vh * 0.2; + + const raw = (start - r.top) / (start - end); + setP(clamp01(raw)); + }; + + + onScroll(); + window.addEventListener("scroll", onScroll, { passive: true }); + window.addEventListener("resize", onScroll); + return () => { + window.removeEventListener("scroll", onScroll); + window.removeEventListener("resize", onScroll); + }; + }, []); + + return ( +
+ + +
+ +
+ setWelcomeDone(true)} /> + + + + + + {/* tracks and stick */} +
+ + + + +
+ +
+
+ ); + } + +function InfoHub({ progress }: { progress: number }) { + const baseDelay = 0.34; + + return ( +
+
+ {/* helmet sticker */} + Helmet + +
+ +
+ + {/* red top edge glow */} +
+ + + +
+ +
+ {/* location box */} + +
+
+
+
+ LOCATION + +
+ +

+ UTSA Buisness Building +

+ +
+ John Peace Library, 1 UTSA Circle, San Antonio, TX 78249 +
+ + + View Building Map + +
+ +
+