Skip to main content

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.

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.

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 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
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
YouEyeSea runs React 19 (react@19.2.6). Server and client components are used together following Next.js App Router conventions.

Styling

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.
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
Component variants are managed with class-variance-authority.
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 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 postinstall script (prisma generate).
  • Seeding is handled by prisma/seed.ts, executed with ts-node.
@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@^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/react-table@^8.21.3 powers the sortable, filterable data tables used across the dashboard.
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@^1.16.0 provides the icon set used throughout the UI.
motion@^12.38.0 (the Framer Motion successor) handles page transitions and micro-animations introduced in v1.2.0.
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@^1.5.0 renders the star rating UI for professor and course reviews.

Search and data parsing

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@^5.5.3 parses the raw CSV files from UIC’s grade distribution data into JavaScript objects during database seeding.

Deployment and analytics

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@^10.3.0 with eslint-config-next and eslint-config-prettier. Run linting with npm run lint.
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.

Build docs developers (and LLMs) love