YouEyeSea is a modern web application built on the Next.js App Router, backed by a PostgreSQL database through Prisma, and deployed on Vercel. This page documents every major dependency and explains how the pieces fit together architecturally.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/alexjohntomy/you-eye-sea/llms.txt
Use this file to discover all available pages before exploring further.
Architecture
YouEyeSea uses the Next.js App Router with React Server Components as the default rendering mode. Server components fetch data directly from the database using Prisma Client — there is no separate API layer for most queries. Prisma Accelerate provides connection pooling so the serverless deployment on Vercel can handle concurrent requests without exhausting database connections. Static assets and fonts are served through Next.js’s built-in asset pipeline. Client-side interactivity is handled by client components where needed, including the fuzzy search (MiniSearch), data tables (TanStack Table), and charts (Recharts).Framework and language
Next.js 16 (App Router)
Next.js 16 (App Router)
Next.js is the core framework. YouEyeSea uses the App Router exclusively — no
pages/ directory. Server components handle data fetching, and the next build pipeline produces an optimized output for Vercel deployment.- Package:
next@^16.2.6 - Dev server:
npm run dev - Production build:
npm run build
TypeScript 6
TypeScript 6
All source files are written in TypeScript. The project targets strict type safety — v1.5.0 replaced all remaining
any type annotations with proper types.- Package:
typescript@^6.0.3 - Types:
@types/react,@types/react-dom,@types/node,@types/papaparse
React 19
React 19
YouEyeSea runs React 19 (
react@19.2.6). Server and client components are used together following Next.js App Router conventions.Styling
Tailwind CSS 4
Tailwind CSS 4
Utility-first CSS framework. YouEyeSea uses Tailwind 4 with the PostCSS plugin (
@tailwindcss/postcss@^4) and the tw-animate-css plugin for animation utilities. Class merging is handled by tailwind-merge and clsx.shadcn/ui
shadcn/ui
Component primitives built on Radix UI. YouEyeSea uses shadcn-style components with custom theming. The following Radix UI packages are installed directly:
@radix-ui/react-dialog@radix-ui/react-dropdown-menu@radix-ui/react-navigation-menu@radix-ui/react-popover@radix-ui/react-separator@radix-ui/react-slot@radix-ui/react-tabs
class-variance-authority.Fonts
Fonts
YouEyeSea uses four custom typefaces loaded via
@fontsource and Next.js font optimization:- Manrope — primary UI font (
@fontsource/manrope) - Sora — heading variant
- Reddit Sans Condensed — tabular / data display
- Sofia Sans Condensed — accent display
Database and ORM
Prisma 7 + PostgreSQL
Prisma 7 + PostgreSQL
Prisma is the ORM for all database access. The Prisma Client is auto-generated from
prisma/schema.prisma and output to src/generated/prisma. The database provider is PostgreSQL.- ORM package:
prisma@^7.8.0,@prisma/client@^7.8.0 - Client is regenerated on install via the
postinstallscript (prisma generate). - Seeding is handled by
prisma/seed.ts, executed withts-node.
Prisma Accelerate
Prisma Accelerate
@prisma/extension-accelerate@^3.0.1 provides connection pooling and query caching for Prisma Client. This is required for serverless deployments where each function invocation cannot maintain a persistent database connection.UI components and data display
Recharts
Recharts
recharts@^3.8.1 renders the grade distribution bar charts and other visualizations. Charts are client components that receive pre-aggregated data from server components.TanStack Table
TanStack Table
@tanstack/react-table@^8.21.3 powers the sortable, filterable data tables used across the dashboard.cmdk (command palette)
cmdk (command palette)
cmdk@^1.1.1 provides the command palette triggered by cmd+k (added in v1.5.1). It enables keyboard-driven navigation across the entire app.Lucide React
Lucide React
lucide-react@^1.16.0 provides the icon set used throughout the UI.Motion
Motion
motion@^12.38.0 (the Framer Motion successor) handles page transitions and micro-animations introduced in v1.2.0.Vaul (bottom drawers)
Vaul (bottom drawers)
vaul@^1.1.2 provides the bottom drawer component used on mobile, replacing dropdown menus for touch-friendly navigation (introduced in v1.3.0).@smastrom/react-rating
@smastrom/react-rating
@smastrom/react-rating@^1.5.0 renders the star rating UI for professor and course reviews.Search and data parsing
MiniSearch
MiniSearch
minisearch@^7.2.0 provides client-side fuzzy full-text search over course and professor data. It runs entirely in the browser with no additional server requests.PapaParse
PapaParse
papaparse@^5.5.3 parses the raw CSV files from UIC’s grade distribution data into JavaScript objects during database seeding.Deployment and analytics
Vercel
Vercel
YouEyeSea is deployed on Vercel. The
next build output is deployed automatically on push. Two Vercel packages are included:@vercel/analytics@^2.0.1— page view and event analytics@vercel/speed-insights@^2.0.0— Core Web Vitals monitoring
Code quality
ESLint
ESLint
eslint@^10.3.0 with eslint-config-next and eslint-config-prettier. Run linting with npm run lint.Prettier
Prettier
prettier@^3.8.3 with prettier-plugin-tailwindcss@^0.8.0 for automatic Tailwind class sorting.External documentation
Next.js docs
App Router, server components, deployment configuration, and more.
Prisma docs
Schema definition, migrations, Prisma Client API, and Accelerate.
Vercel docs
Deployment, environment variables, and serverless function configuration.
shadcn/ui docs
Component library built on Radix UI primitives.
