2026 website redesign - #70
Merged
Merged
Conversation
Full rebuild of the ACM at UTA site from the ground up: - Static public site: homepage, committees, projects, events, gallery, HackUTA, officers, about, apply, contact - Live data via Supabase (committees, events, news, sponsors, stats); all pages fall back to static data when DB is unreachable - Member portal: auth (email + Google OAuth), onboarding, profile, notifications, leaderboard, QR check-in - Admin panel: events, applications (form builder), members, teams, mentorship, news CRUD, HackUTA toggle, roster, audit log - Design system: hand-written CSS with CSS custom property tokens, dark/light mode, Archivo + JetBrains Mono typography - Gallery reworked to text cards linking to Google Photos (no thumbnails) - Events page: Google Calendar + Apple iCal save from picker modal - Supabase migrations 001-005 + seed data - .env.example added; supabase/.temp excluded from version control
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Pull request overview
Merges the 2026 site redesign into main, including a Supabase-backed member portal/admin area plus refreshed public pages and updated content/data models.
Changes:
- Adds Supabase schema utilities and migrations for new site content/features (HackUTA settings, news items) plus dev SQL helpers.
- Introduces authentication flows, onboarding gating, member portal pages, and a new admin section with applications/members/mentorship/audit features.
- Refactors public committee pages to a shared
CommitteePageand updates content datasets (events, projects, sponsors, news, committees, gallery, alumni).
Reviewed changes
Copilot reviewed 94 out of 106 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| supabase/teardown.sql | Dev-only teardown script to wipe project-owned DB objects for re-running migrations. |
| supabase/migrations/005_news_items.sql | Adds news_items table + RLS and seeds initial homepage news. |
| supabase/migrations/004_hackuta_settings.sql | Adds single-row HackUTA configuration table + RLS and seed row. |
| supabase/dev_test_data.sql | Dev-only SQL snippets to create realistic test data and role setups. |
| supabase/config.toml | Adds Supabase CLI local config for running the stack. |
| supabase/check_state.sql | One-off SQL diagnostic to check seed/application-builder state. |
| src/pages/SignUp.tsx | Adds signup route wrapper for AuthScreen. |
| src/pages/SignIn.tsx | Adds signin route wrapper for AuthScreen. |
| src/pages/ResetPassword.tsx | Adds password reset UI/flow using useAuth.updatePassword. |
| src/pages/Research.tsx | Refactors committee page to CommitteePage(slug="research"). |
| src/pages/Projects.tsx | Rewrites projects page to load projects from API and render ProjectCards. |
| src/pages/Outreach.tsx | Refactors committee page to CommitteePage(slug="outreach"). |
| src/pages/Notifications.tsx | Adds portal notifications list + read/mark-all-read actions. |
| src/pages/NotFound.tsx | Replaces basic 404 with redesigned “node field” themed 404. |
| src/pages/Marketing.tsx | Refactors committee page to CommitteePage(slug="marketing"). |
| src/pages/Leaderboard.tsx | Adds portal leaderboard page with scope/board toggles. |
| src/pages/Educate.tsx | Refactors committee page to CommitteePage(slug="educate"). |
| src/pages/Create.tsx | Refactors committee page to CommitteePage(slug="create"). |
| src/pages/Community.tsx | Refactors committee page to CommitteePage(slug="community"). |
| src/pages/CheckIn.tsx | Adds QR check-in flow UI calling callCheckIn. |
| src/pages/AuthCallback.tsx | Adds Supabase auth callback handler for signup confirmation + recovery flow. |
| src/pages/ApplyForm.tsx | Adds applicant form-fill page with autofill + resume upload + submission flow. |
| src/pages/ApplyDetail.tsx | Adds apply track detail page showing forms for a committee/track. |
| src/pages/Album.tsx | Removes the old gallery album detail page implementation. |
| src/pages/admin/useCommitteeOptions.ts | Adds shared hook to compute committee options for admins vs directors. |
| src/pages/admin/auditLabels.ts | Adds audit log labeling/grouping + metadata formatting helpers. |
| src/pages/admin/AdminRoster.tsx | Adds admin-only roster table with member details modal. |
| src/pages/admin/AdminMentorship.tsx | Adds mentorship pairing management UI (admin + Educate director). |
| src/pages/admin/AdminMembers.tsx | Adds committee member/role management UI (admin/director scoped). |
| src/pages/admin/AdminLayout.tsx | Adds admin area layout + nav gating based on admin/director roles. |
| src/pages/admin/AdminHackUTA.tsx | Adds admin UI to manage HackUTA settings. |
| src/pages/admin/AdminDashboard.tsx | Adds admin/dashboard summary + recent activity panel. |
| src/pages/admin/AdminAuditLog.tsx | Adds admin audit log page with filtering + pagination. |
| src/pages/admin/AdminApplicationForms.tsx | Adds admin applications index page to create/edit forms and view submissions. |
| src/lib/validation.ts | Adds shared validators (Mavs email, student ID, URLs). |
| src/lib/supabase.ts | Adds Supabase client initialization from Vite env vars. |
| src/lib/onboardingOptions.ts | Adds onboarding dropdown options + helpers for “Other/Custom” splitting. |
| src/lib/download.ts | Adds downloadBlob helper used by admin exports. |
| src/lib/auth.tsx | Adds AuthProvider and useAuth wrapping Supabase auth + profile fetch. |
| src/data/stats.ts | Adds redesigned homepage stats dataset. |
| src/data/sponsors.ts | Updates sponsors dataset structure + legacy compat export. |
| src/data/projects.ts | Updates projects dataset structure + legacy compat export. |
| src/data/news.ts | Updates news dataset structure + legacy compat export. |
| src/data/hackuta.ts | Adds HackUTA config dataset and interface. |
| src/data/gallery.ts | Reworks gallery dataset into PhotoAlbum entries (google photos URLs). |
| src/data/events.ts | Adds events dataset (upcoming + past) with ISO datetime fields. |
| src/data/committees.ts | Reworks committees dataset into richer, typed structure + legacy compat export. |
| src/data/alumni.ts | Reworks alumni dataset structure + legacy compat export. |
| src/components/ThemeToggle.tsx | Adds theme toggle that sets data-theme + persists to localStorage. |
| src/components/Reveal.tsx | Adds IntersectionObserver-based reveal/stagger reveal utilities. |
| src/components/ProjectCard.tsx | Adds redesigned project card component. |
| src/components/Placeholder.tsx | Adds placeholder image component that can render real images when present. |
| src/components/PageTop.tsx | Adds standardized “page top” section component. |
| src/components/NodeField.tsx | Adds animated canvas node background (used on 404). |
| src/components/Modal.tsx | Adds modal component with ESC handling and click-outside close. |
| src/components/Loading.tsx | Adds loading components for inline + full-page loading states. |
| src/components/Layout/PortalLayout.tsx | Adds portal layout wrapper with scroll-to-top behavior. |
| src/components/Layout/PortalHeader.tsx | Adds portal header with theme toggle, notifications bell, and profile link. |
| src/components/Layout/NotificationBell.tsx | Adds polling unread notification bell for the portal header. |
| src/components/Layout/Layout.tsx | Refactors main layout to use Outlet + route transitions + scroll-to-top. |
| src/components/Layout/Footer.tsx | Rewrites footer to match redesigned CTA + navigation + social links. |
| src/components/Layout/ChromelessLayout.tsx | Adds layout wrapper for auth/onboarding routes (no header/footer). |
| src/components/CommitteePage.tsx | Adds shared dynamic committee detail page implementation. |
| src/components/CommitteeLogo.tsx | Adds committee logo helpers (image map + SVG fallback marks). |
| src/components/Avatar.tsx | Adds initials-based avatar component. |
| src/components/applications/SubmissionView.tsx | Adds readonly submission viewer with resume viewing support. |
| src/components/applications/QuestionRenderer.tsx | Adds form question rendering for multiple question types. |
| src/components/applications/QuestionForm.tsx | Adds form state/validation + conditional visibility for questions. |
| src/components/admin/MemberInfoModal.tsx | Adds admin modal to view member profile and award points. |
| src/App.tsx | Rebuilds router with auth provider, onboarding gate, portal/admin layouts, and new routes. |
| quick-check.ts | Removes a one-off Google Calendar script from the repo root. |
| package.json | Adds dependencies for Supabase client, zipping, and QR code rendering. |
| index.html | Updates metadata + adds theme bootstrapping script to prevent flash. |
| .gitignore | Adds env and Supabase temp ignores. |
| .env.example | Adds example env vars required for Supabase client config. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
+6
to
+20
| drop table if exists news_items; | ||
|
|
||
| create table news_items ( | ||
| id uuid primary key default gen_random_uuid(), | ||
| tag text not null default '', | ||
| title text not null, | ||
| blurb text not null default '', | ||
| link text not null default '/', | ||
| item_date date not null default current_date, | ||
| is_published boolean not null default true, | ||
| sort_order integer not null default 0, | ||
| created_at timestamptz not null default now(), | ||
| created_by uuid references profiles(id), | ||
| updated_at timestamptz not null default now() | ||
| ); |
Comment on lines
+2
to
+11
| export function downloadBlob(blob: Blob, filename: string): void { | ||
| const url = URL.createObjectURL(blob); | ||
| const a = document.createElement("a"); | ||
| a.href = url; | ||
| a.download = filename; | ||
| document.body.appendChild(a); | ||
| a.click(); | ||
| a.remove(); | ||
| URL.revokeObjectURL(url); | ||
| } |
Comment on lines
+36
to
+40
| const host = kind ? URL_KIND_HOST[kind] : undefined; | ||
| if (host && !url.hostname.toLowerCase().endsWith(host)) { | ||
| return `Enter a valid ${URL_KIND_NAME[kind!]} URL.`; | ||
| } | ||
| return null; |
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
merge muhammed's site redesign into main as it's alr deployed