Skip to content

Dependencies Inventory

From package.json (clean, modern, no spurious squatter packages — a notable contrast to the backends).

Production dependencies (~55)

Framework

Package Version Notes
react ^18.3.1
react-dom ^18.3.1
react-router-dom ^6.26.2 Routing

Server-state / fetch

Package Version Notes
@tanstack/react-query ^5.56.2 Mounted in App.tsx; adoption partial

Form & validation

Package Version Notes
react-hook-form ^7.53.0
@hookform/resolvers ^3.9.0 Bridges zod to react-hook-form
zod ^3.23.8 Schema validation
input-otp ^1.2.4 OTP input UI component

shadcn/ui dependencies (all Radix UI primitives)

Package Version
@radix-ui/react-accordion ^1.2.0
@radix-ui/react-alert-dialog ^1.1.1
@radix-ui/react-aspect-ratio ^1.1.0
@radix-ui/react-avatar ^1.1.0
@radix-ui/react-checkbox ^1.1.1
@radix-ui/react-collapsible ^1.1.0
@radix-ui/react-context-menu ^2.2.1
@radix-ui/react-dialog ^1.1.2
@radix-ui/react-dropdown-menu ^2.1.1
@radix-ui/react-hover-card ^1.1.1
@radix-ui/react-label ^2.1.0
@radix-ui/react-menubar ^1.1.1
@radix-ui/react-navigation-menu ^1.2.0
@radix-ui/react-popover ^1.1.1
@radix-ui/react-progress ^1.1.0
@radix-ui/react-radio-group ^1.2.0
@radix-ui/react-scroll-area ^1.1.0
@radix-ui/react-select ^2.1.1
@radix-ui/react-separator ^1.1.0
@radix-ui/react-slider ^1.2.0
@radix-ui/react-slot ^1.1.0
@radix-ui/react-switch ^1.1.0
@radix-ui/react-tabs ^1.1.0
@radix-ui/react-toast ^1.2.1
@radix-ui/react-toggle ^1.1.0
@radix-ui/react-toggle-group ^1.1.0
@radix-ui/react-tooltip ^1.1.4

Styling utilities

Package Version Notes
class-variance-authority ^0.7.1 cva for variant APIs
clsx ^2.1.1 conditional className
tailwind-merge ^2.5.2 dedupe tailwind classes; wrapped by cn()
tailwindcss-animate ^1.0.7 (Tailwind plugin; also needs to be listed in devDependencies — verify)

UX widgets

Package Version Notes
cmdk ^1.0.0 Command palette (used in shadcn command)
embla-carousel-react ^8.3.0 Carousel
react-day-picker ^8.10.1 Date picker
react-resizable-panels ^2.1.3 Resizable layouts
recharts ^2.12.7 Charts
vaul ^0.9.3 Drawer component
sonner ^1.5.0 Toast (alternative to shadcn toast)
next-themes ^0.3.0 Theme switching — declared, not yet used
lucide-react ^0.462.0 Icon set

Utilities

Package Version Notes
date-fns ^3.6.0 Date helpers

Dev dependencies (~17)

Package Version Notes
@eslint/js ^9.9.0
@tailwindcss/typography ^0.5.15 Tailwind prose plugin
@types/node ^22.5.5
@types/react ^18.3.3
@types/react-dom ^18.3.0
@vitejs/plugin-react-swc ^3.5.0 SWC for React build
autoprefixer ^10.4.20
eslint ^9.9.0
eslint-plugin-react-hooks ^5.1.0-rc.0 RC version — flag for replacement when stable
eslint-plugin-react-refresh ^0.4.9
globals ^15.9.0
lovable-tagger ^1.1.7 Dev-only plugin from Lovable.dev — tags components in dev mode for the Lovable editor. See security.md.
postcss ^8.4.47
tailwindcss ^3.4.11
tsconfig-paths (transitively)
typescript ^5.5.3
typescript-eslint ^8.0.1
vite ^5.4.1

Three lockfiles

The repo contains three lockfiles simultaneously: - package-lock.json (npm) - yarn.lock (yarn classic) - bun.lockb (bun)

This is a smell — different engineers run different package managers, producing inconsistent installs. Pick one (the README suggests npm; the size of bun.lockb suggests bun has been used too). Delete the other two.

Notable absences

Capability Missing
Tests no Vitest / Jest / Playwright / Cypress
Code formatter no Prettier
Pre-commit no Husky / lint-staged
Type-checked CI no tsc --noEmit in any script
Bundle analyser no rollup-plugin-visualizer
HTTP client no axios — uses fetch directly
State machine no XState / Zustand / Redux

Health summary

Modern, healthy dependency tree. No deprecated packages. No squatter packages. Versions are recent. The shadcn/Radix combination is well-supported. Notable improvements would be:

  1. Remove the two unused lockfiles
  2. Add Prettier (prettier + eslint-config-prettier + a script format)
  3. Add tsc --noEmit as a CI gate
  4. Decide whether next-themes will be used; remove if not
  5. Decide whether sonner and shadcn toast are both needed; consolidate
  6. Audit whether lovable-tagger is a runtime dependency in production (per vite.config.ts it's only loaded mode === 'development', so it's dev-only — good)