Skip to Content
GeneratedArchitecture

Architecture

Project Structure

[dir] app [dir] (auth) [dir] (dashboard) [dir] (user-firms) [dir] api [file] client-layout.tsx [file] favicon.ico [dir] features [dir] frequently-asked-questions [file] globals.css [file] layout.tsx [file] page.tsx [dir] pricing [dir] privacy-policy [dir] Terms&Conditions [dir] components [file] add-button.tsx [dir] attachments [file] button-group.tsx [dir] charts [file] circular-progress-bar.tsx [dir] clientDetails [file] conflict-check.tsx [dir] crm [dir] dashboard [file] dashboard-page-container.tsx [file] dashboard-page-header.tsx [file] dashboard-page-ui.tsx [file] empty-state.tsx [file] fetching-indicator.tsx [file] firm-card.tsx [file] form-dashboard-page-header.tsx [dir] forms [file] horizontal-progress-bar.tsx [file] icons.tsx [file] individual-advancements.tsx [file] individual-dashboard-content.tsx [dir] landing [dir] leave [file] loader.tsx [dir] matters [file] mobile-nav.tsx [dir] modals [file] nav.tsx [file] NetworkStatus.tsx [file] numbers-card.tsx [dir] pagination [file] practice-area-card-view.tsx [file] retainer-allocation-section.tsx [file] see-more-button.tsx [file] sign-out-card.tsx [file] sub-practice-area-card-view.tsx [file] subStageAttachments.tsx [file] table-search-input.tsx [dir] tables [dir] ui [file] user-avatar.tsx [file] user-profile-card.tsx [dir] userSettings [file] components.json [dir] config [file] dashboard.ts [file] site.ts [dir] context [file] LawFirmContext.tsx [file] NotificationContext.tsx [file] SocketContext.tsx [file] Dockerfile [dir] helpers [file] useFirmId.ts [file] useUserData.ts [dir] hooks [file] use-export-excel.ts [file] use-export-pdf.ts [file] use-lock-body.ts [file] use-password-visibility.ts [file] use-persist-data.ts [file] useSoketsUpdates.ts [dir] lib [file] attachment-preview.ts [file] constants.ts [dir] crm [file] expense-dashboard.ts [file] firm-timezones.ts [dir] hooks [file] interfaces.ts [file] leave-utils.ts [file] leaveCalendarColors.ts [file] permissions.ts [file] queries.ts [file] roles_and_permissions.ts [dir] upload [dir] utils [file] utils.ts [file] LICENSE [file] middleware.ts [file] next-env.d.ts [file] next.config.js [file] NOVA_LEGAL_APP_OVERVIEW.md [file] package-lock.json [file] package.json [file] postcss.config.js [dir] public [dir] images [file] next.svg [file] vercel.svg [file] README.md [file] tailwind.config.ts [file] tsconfig.json [file] tsconfig.tsbuildinfo [dir] types [file] index.ts [file] next-auth.d.ts [file] yarn.lock

Core Dependencies

Runtime

  • @dnd-kit/core
  • @dnd-kit/sortable
  • @emailjs/browser
  • @hookform/resolvers
  • @radix-ui/react-accordion
  • @radix-ui/react-alert-dialog
  • @radix-ui/react-avatar
  • @radix-ui/react-checkbox
  • @radix-ui/react-collapsible
  • @radix-ui/react-context-menu
  • @radix-ui/react-dialog
  • @radix-ui/react-dropdown-menu
  • @radix-ui/react-hover-card
  • @radix-ui/react-label
  • @radix-ui/react-popover
  • @radix-ui/react-progress
  • @radix-ui/react-radio-group
  • @radix-ui/react-scroll-area
  • @radix-ui/react-select
  • @radix-ui/react-separator
  • @radix-ui/react-slot
  • @radix-ui/react-switch
  • @radix-ui/react-tabs
  • @radix-ui/react-toast
  • @radix-ui/react-toggle
  • @radix-ui/react-tooltip
  • @react-pdf-viewer/core
  • @react-pdf-viewer/default-layout
  • @react-pdf/renderer
  • @tanstack/react-query
  • @tanstack/react-query-devtools
  • @tanstack/react-table
  • @tanstack/react-virtual
  • @tiptap/pm
  • @tiptap/react
  • @tiptap/starter-kit
  • @types/node
  • @types/react
  • @types/react-dom
  • @vercel/analytics
  • @vercel/speed-insights
  • autoprefixer
  • axios
  • class-variance-authority
  • clsx
  • cmdk
  • date-fns
  • dotenv
  • embla-carousel-react
  • eslint
  • eslint-config-next
  • html2canvas
  • jspdf
  • jspdf-autotable
  • jwt-decode
  • lint-staged
  • lodash
  • lucide-react
  • mammoth
  • moment
  • next
  • next-auth
  • nextjs-toploader
  • or
  • pdfjs-dist
  • postcss
  • react
  • react-color
  • react-day-picker
  • react-dnd
  • react-dnd-html5-backend
  • react-dom
  • react-google-recaptcha
  • react-hook-form
  • react-icons
  • react-intersection-observer
  • react-modal
  • react-phone-number-input
  • react-resizable-panels
  • react-responsive
  • react-time-picker
  • react-to-print
  • recharts
  • socket.io-client
  • tailwind-merge
  • tailwindcss
  • tailwindcss-animate
  • typescript
  • xlsx
  • zod

Development

  • @babel/preset-env
  • @babel/preset-react
  • @ianvs/prettier-plugin-sort-imports
  • @next/eslint-plugin-next
  • @testing-library/dom
  • @testing-library/jest-dom
  • @testing-library/react
  • @testing-library/user-event
  • @types/jest
  • @types/js-cookie
  • @types/lodash
  • @types/react-color
  • @types/react-google-recaptcha
  • @types/react-modal
  • autoprefixer
  • babel-jest
  • eslint
  • eslint-config-prettier
  • eslint-plugin-react
  • husky
  • jest
  • jest-environment-jsdom
  • lint-staged
  • postcss
  • prettier
  • react-test-renderer
  • tailwindcss
  • ts-jest

Authentication Middleware

The webapp uses NextAuth middleware to protect authenticated routes.

Protected route patterns

  • /user-firms
  • /dashboard
  • /clients
  • /create-client
  • /edit-client/:path*
  • /conflict-check
  • /matters/:path*
  • /add-matter
  • /billing/:path*
  • /add-invoice/:path*
  • /requisitions/:path*
  • /disbursement-requisition/:path*
  • /create-requisition
  • /notifications
  • /practice-areas/:path*
  • /team
  • /profile
  • /settings
  • /notifications
  • /expenses/:path*
  • /events/:path*
  • /tasks/:path*
  • /hr/:path*

Key Directories

DirectoryPurpose
app/Next.js App Router pages and layouts
components/Reusable UI components, forms, modals, tables
lib/Utilities, permissions, CRM helpers
hooks/Custom React hooks
context/React context providers (e.g. Socket)
app/api/API client functions and HTTP utilities
Last updated on