Conversation
* chore(frontend): add theme provider dependency for dark mode and locked node to v20 * feat(frontend): add dark mode support using next-themes - preparing to add toggle * feat(frontend): add light/dark mode toggle in sidebar * feat(frontend): change dark mode button a toggle and fix toolbar * feat(frontend): fix meal card text for dark mode * chore: 🔧 pull workflow workarounds from dev * chore: 🔧 merge dev * chore: 🔧 reegn lockfile * chore: 🔧 remerge lockfile again * chore: 🔧 merge dev AGAIN * chore: add better auth secret on GitHub * fix(ui): fix nested button in theme toggle * chore: replace React import with named imports --------- Co-authored-by: Jacob Moy <apixelatedpug@gmail.com> Co-authored-by: Lex Truong <lext@uci.edu>
* chore: remove verification from pull request template * chore: add testing instructions * feat: ✨ date selection restriction (#545) * wip: event images * feat(api): add image fetching logic to weeklyJob * fix(api): uncomment contributors and weekly job * perf(api/weekly): add batch updates for menus and dishes in weekly * feat(api): get date range trpc query * chore(api): getDateRange test * feat(frontend): restrict pickable dates on calendar * fix(api): convert Y-M-D date string to local time * fix(frontend): date picker button fits date * fix(frontend): cannot select already selected date * feat(api): get list instead of range of pickable dates * feat(frontend): user selects from list of enabled dates * feat(frontend): restrict calendar navigation to pickable dates * fix(api): error msg and db sorting logic * chore(frontend): removed dup DateList type definition --------- Co-authored-by: LexTruong <82004296+LexTruong@users.noreply.github.com> * feat: deploy to sst (#561) * feat: remove db certs (#565) * fix: db nonsense (#566) * fix: misc sst * chore(lint): 🔧 add lint config and packages (#569) * chore(lint): 🔧 add lint config and packages * chore: 🔧 pull the cool looking logo into README * ci: deploy button * feat: sst more (#571) * fix: 🐛 re-gen pnpm-lock * fix: 🐛 import schema properly * fix: 🐛 update graphql schema * fix: 🐛 add DATABASE_URL secret to environment of root SST config * fix: 🐛 remove hyphen from auth route directory * fix: 🐛 daily no longer requires non-null period data * feat: ✨ change deployment invocation cron from daily to weekly * chore: 🔧 update next to latest version * chore: 🔧 upgrade node version for deployment action * fix: migrations (#578) * fix: migrations (#579) * ci: trigger * fix: await upsert in weekly (#581) * fix: pulumi * fix: 🐛 pickable dates * chore: 🔧 regen pnpm-lock * fix: 🐛 date mismatch * fix: 🐛 remove merge heads from json file * removed extra sidebar content and migrated to MUI * refactor: replace mobile Sheet sidebar with permanent drawer component - Remove SheetClose wrapper from SidebarButton to support always-visible drawer - Replace SheetContent with plain div container in SidebarContent - Add @mui/icons-material dependency for Material-UI icon components - Rename Toolbar component to Header for better semantic clarity - Remove @emotion/react direct dependency (retained as peer dependency via @mui/material) * fix(ui): migrate sidebar from shadcn to MUI components - Move Drawer management from Header to SidebarContent component - Replace shadcn Button with MUI ButtonBase in SidebarButton - Add onClose callback prop to SidebarButton for drawer dismissal - Remove unused Drawer import from Header component - Maintain existing styling and functionality while aligning with MUI design system * fix: Route for meal tracker corrected * fix: replace Header with Toolbar * fix: change Toolbar back to Header * fix(frontend): header; converted some styling to tailwind; clean up imports and comments * changed styling to tailwind * removed unnecessary comments * fix: no switch inside button * chore: ghost commit after unlocking sst instance --------- Co-authored-by: Jacob Moy <79670488+EightBitByte@users.noreply.github.com> Co-authored-by: LexTruong <82004296+LexTruong@users.noreply.github.com> Co-authored-by: Kevin Wu <kevinwu098@gmail.com> Co-authored-by: Jacob Moy <apixelatedpug@gmail.com> Co-authored-by: Pranav Batra <batrap1@uci.edu> Co-authored-by: William <wilyan090@gmail.com> Co-authored-by: Lex Truong <lext@uci.edu>
* update packages * feat(frontend): integrated MUI with event card + testing ui (just card, not drawer yet) * feat(frontend): edited sx prop to match prev. styles * feat(frontend): updated food + rating card to MUI styles. todo: migrate dialog+drawer components to render clicks * feat(frontend): updated event-dialog, food-dialog, ratings-card to render clicks, integrate MUI and match figma styles * feat(frontend): integrated MUI styles in event and food drawer * feat: updated event card and food card to be seen through on the sides * feat: left aligned nutrition label on food card * fix!: 💥 🐛 merge pnpm-lock from dev (regen on dev) * fix: 🐛 checkout pnpm-lock from dev * chore: 🔧 regen lockfile * chore: 🔧 remove autogenerated .next directories * chore: 🔧 add .next to gitignore * feat(frontend): edited CSS styles so button matches body font + leaves text as is * chore: 🔧 regen lockfile * fix: remove duplicate migration files --------- Co-authored-by: SAMIKA BHAVESH BHATKAR <samikabhatkar@gmail.com> Co-authored-by: Jacob Moy <apixelatedpug@gmail.com> Co-authored-by: Lex Truong <lext@uci.edu>
* Add stale time and selective refreshing to tRPC * Use multi-threading to speed up wwekly cron job * Optimize data-derivation with zustand Deriving display data from what was in the database was a costly operation, so zustand helps prevent needlessly re-computing the display data. * chore: 🔧 pull dev CI changes --------- Co-authored-by: Jacob Moy <apixelatedpug@gmail.com> Co-authored-by: Lex Truong <lext@uci.edu>
Co-authored by: Dante Dam <laggycomputer@yahoo.com>
* fix: drizzle config includes new tables * fix: auth uses env base url var * fix: regenerated 0002_snapshot with new tables * feat: meal planner integrated with auth * refactor: removed unnecessary useFavorites hook on home page * feat: favorites integrated with auth * refactor: lifted useSession hook from meal card * feat: sidebar user feature tabs disabled if not logged in * feat: integrate ratings with auth * feat: ratings card uses drawer on mobile * feat: can log same meal many times * fix: favorites page passes userid to cards * fix: meal tracker page padding and meal card star fill * chore: replace social provider with genericOAuth plugin * fix: set pkce in auth config * fix: get user's profile image from icssc auth * fix: add betterauth secret and base url to sst config * chore: set client id in sst config * chore: todo snackbar comments Co-authored-by: Jacob Moy <79670488+EightBitByte@users.noreply.github.com> * fix: rename meal-tracker page to nutrition * refactor: move hall store to context folder * feat: get session and store/clear userid in root layout component * feat: use stored userId instead of prop drilling in interactive star rating * chore: get userId with store instead of auth session --------- Co-authored-by: Jacob Moy <79670488+EightBitByte@users.noreply.github.com>
* fixed image properties to fit event dialog/drawer * feat(frontend): edited food dialog/drawer to match figma styles * feat(frontend): fixed event card img to be centered on mobile * feat:frontend(minor styling fixes on event card) * feat(frontend): overwrote inter font w/ poppins * removed pin from food drawer
* chore: 🔧 add mui icons as a dependency * chore: 🔧 icon replacement in progress * chore: 🔧 remove dupes, regen lockfile * chore: 🔧 switched from lucide icons to MUI icons in food-card.tsx * chore: 🔧 switched from lucide icons to MUI icons in event-card.tsx * chore: switched from lucide icons to MUI icons in ratings-card.tsx (HAS ERRORS) * chore: 🔧 removed Lucide dependency * chore: changed from Lucide to MUI icon components for all components in ui (HAS ERRORS) * chore: changed from Lucide to MUI icon components in /utils/types.ts (HAS ERRORS) * chore: merge dev * chore: merge dev * chore: 🔧 merge dev AGAIN * chore: 🔧 merge dev (hopefully the last time) * chore: 🔧 merge, merge, merge... * chore: 🔧 regen lockfile * fix: 🐛 remove double import of tRPC --------- Co-authored-by: Jacob Moy <apixelatedpug@gmail.com> Co-authored-by: Yitong Liu <yitonl21@uci.edu>
* feat: redesign toolbar to follow figma design * fix(front): match toolbar to figma * chore: merge with dev * fix: gradient added to images for toolbar visability, added google image to nextjs config remote pattern * fix: marked gradient as important for tailwind * chore: merge dev * merge dev? --------- Co-authored-by: Lex Truong <lext@uci.edu> Co-authored-by: Jacob Moy <apixelatedpug@gmail.com> Co-authored-by: Jacob Moy <79670488+EightBitByte@users.noreply.github.com>
* chore(db): update test data to not use dish.menuId usage * feat(db): modernize restaurant ids, indexes, and number fields * chore(db): add migration, docs, and constraint fix * refactor(db): remove dishes menu_id and use join table * chore(db): fix journal.json merge conflict * chore(db): fix journal.json merge conflict time for idx 3 * chore(db): fix zotmeal.sql merge conflict * chore(db): fix snapshot.json merge conflict * fix(db): change test period restaurant id --------- Co-authored-by: elmallaa <elmallaa@uci.edu>
* added simplified property * make the isSimplified property default to false * added simplified property * make the isSimplified property default to false * feat: simplified food card * feat: organize food cards to be placed horizontally when multiple exists * feat: added plus button to the simplified food card * fix: added back user feedback button onClick functionality * feat: updated ui for the nonsimplified food card * feat: made the regular food card a smaller width so two can fit in a row consistent with the simplified food card * chore: maintain consistent width for simplified card * chore: reduced duplicated code in div styling for non simpified food card * fix: vertically centered food icon and make it smaller * fix: make the average rating a more apparent gray * fix: favorite button works when clicked * fix: added gap for spacing between text description and favorite button * feat: added card view and compact view buttons * chore: revert back to previous FoodCardContent style * fix: remove food tracker button * chore: 🔧 fix merge conflicts * chore: 🔧 fix another merge conflict * fix: 🐛 remove duplicate DishesInfo --------- Co-authored-by: Jacob Moy <apixelatedpug@gmail.com>
* chore!: update literals * chore: 🔧 update all sql files * fix: 🐛 update logo path * fix: 🐛 await async in test * fix: 🐛 remove redundancies from snapshot * fix!: 💥 🐛 generate migration * fix: 🐛 add manual changes to migration * chore: 🔧 remove turbo usage in graphql script * fix: 🐛 add 15s timeout to AdobeECommerce Parsing * fix: 🐛 legacy restaurant id enum now casts * fix: 🐛 migrate unknown prices to 0 * fix: 🐛 nutrition infos now default to zero when empty string * chore: 🔧 merge dev * fix: 🐛 update some literals changed in the merge
* fix: 🐛 dev account no longer visible on mobile * fix: 🐛 incorrect capitalization gone * fix: 🐛 doesn't show previous meal tracker days, only current * fix: 🐛 removed temp test account for both mobile and desktop * fix: 🐛 no meals logged message
* feat: ✨ increase content width to match figma * feat: ✨ make links open in new tab * fix: 🐛 dark mode improvements * fix: attempt merge fix Replaced Typography component with a heading for the about section and added buttons for GitHub and ICSSC links.
Co-authored-by: Jacob Moy <apixelatedpug@gmail.com>
* chore: 🔧 add css type declaration * fix: 🐛 re-add poppins google import
* chore: 🔧 run posthog wizard * chore: 🔧 update packages * fix: 🐛 unsorted deps * chore: 🔧 update github actions with posthog tokens * fix(analytics): 🐛 replace next config rewrite with custom route handler for posthog proxy * fix(analytics): 🐛 replace next config rewrite with custom route handler for posthog proxy * fix: 🐛 maybe fix the route? * fix: 🐛 exclude ingest route from service worker interception * fix: 🐛 remove content-encoding headers for gzip/br * fix!: 💥 🐛 disable gzip compression for posthog events temporarily * style: 🎨 clean up posthog route * style: 🎨 remove auto-gen docs
…ant components (#731) * refactor: ♻️ extract useRestaurantPage hook and fix any types in restaurant components - Extract useRestaurantPage hook from RestaurantPage component - Moves all useState, useMemo, useEffect, and tRPC calls out of the component into a dedicated hook (hooks/useRestaurantPage.ts) - Relocates the getCurrentPeriod helper into the hook file with a JSDoc - RestaurantPage is now a pure layout/render component (~160 lines vs 326) - Fix any[] types across restaurant sub-components - restaurant-controls.tsx: stations: Station[], hallEvents: Event[] - desktop-tabs.tsx: stations: Station[] - mobile-actions.tsx: dishes: DishWithRating[], stations: Station[], hallEvents: Event[] - Additional fixes surfaced by stricter typing - dishes-view.tsx: relax activeStation to Station | undefined (can be undefined while data is loading) - mobile-actions.tsx: fix event.shortDescription → event.description to match the actual Event type from @peterplate/validators - restaurant-controls.tsx: remove misleading //...props comments; improve inline comments for clarity - Remove unnecessary hallData useMemo wrapper in restaurant-page.tsx; replace with a plain derived value * refactor: ♻️ eliminate prop drilling via useRestaurantUIStore Add useRestaurantUIStore (Zustand) to hold all interactive UI state for the restaurant page: period/station selection, isCompactView, showPreferencesOnly, isDatePickerOpen, and popover anchors. Sub-components now consume state directly from the store instead of receiving it as props through RestaurantPage → RestaurantControls: RestaurantFilters: selectedPeriod, isDatePickerOpen, showPreferencesOnly DesktopTabs: selectedStation, isCompactView MobileActions: menuAnchor, scheduleAnchor, isCompactView, setSelectedStation DishesView: isCompactView, showPreferencesOnly Prop count reductions: RestaurantControls: 22 → 13 props RestaurantFilters: 12 → 6 props DesktopTabs: 8 → 4 props MobileActions: 13 → 6 props DishesView: 8 → 6 props useRestaurantPage hook is updated to read selectedPeriod/selectedStation from the store (for auto-selection effects) rather than managing local useState. calendarRange remains local as it is query-derived config, not interactive state. * style: 🎨 cleanup * fix: 🐛 show prefs flipped * perf: ⚡️ memoize filtered dishes to prevent recompute on rerender
* feat(chore): ✨ 🔧 removed shadow from meal card * fix(chore): 🐛 🔧 desktop restaurant food cards have 2 cards per row * Update apps/next/src/components/ui/card/food-card.tsx Co-authored-by: Jacob Moy <79670488+EightBitByte@users.noreply.github.com> --------- Co-authored-by: Yitong Liu <yitonl21@uci.edu> Co-authored-by: Jacob Moy <79670488+EightBitByte@users.noreply.github.com>
* fix: 🐛 add better_auth_url to auth server trusted origins * fix: 🐛 remove posthog references to customAllergies
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.
Summary
All of the lovely changes from Spring 2026.
Changes
[NEW]Dark mode and further MUI integration[NEW]AAPI backend integration + cleanup[NEW]PostHog Analytics