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.lockCore 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-insightsautoprefixeraxiosclass-variance-authorityclsxcmdkdate-fnsdotenvembla-carousel-reacteslinteslint-config-nexthtml2canvasjspdfjspdf-autotablejwt-decodelint-stagedlodashlucide-reactmammothmomentnextnext-authnextjs-toploaderorpdfjs-distpostcssreactreact-colorreact-day-pickerreact-dndreact-dnd-html5-backendreact-domreact-google-recaptchareact-hook-formreact-iconsreact-intersection-observerreact-modalreact-phone-number-inputreact-resizable-panelsreact-responsivereact-time-pickerreact-to-printrechartssocket.io-clienttailwind-mergetailwindcsstailwindcss-animatetypescriptxlsxzod
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-modalautoprefixerbabel-jesteslinteslint-config-prettiereslint-plugin-reacthuskyjestjest-environment-jsdomlint-stagedpostcssprettierreact-test-renderertailwindcssts-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
| Directory | Purpose |
|---|---|
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