Core framework
Next.js 16
Why Next.js: Full-stack React framework with built-in optimizations- App Router: File-based routing with nested layouts
- Server Components: Zero-JavaScript-by-default rendering
- Image optimization: Automatic image optimization
- Font optimization: Built-in font loading (Geist)
- TypeScript: First-class TypeScript support
16.1.1
Configuration: next.config.ts
React 19
Why React 19: Latest React with improved performance and DX- Concurrent features: Improved rendering performance
- Server Components: Native server component support
- Actions: Built-in form handling
- Suspense: Better async component handling
19.2.3
TypeScript 5
Why TypeScript: Type safety and better IDE support Configuration:tsconfig.json:3-7
any types, required null checks
Styling and UI
Tailwind CSS 4
Why Tailwind: Utility-first CSS framework for rapid UI development- JIT mode: Just-in-time compilation
- Custom theme: Configured for dark mode
- PostCSS integration:
@tailwindcss/postcss
^4 (latest)
Key utilities used:
- Responsive design:
md:,lg:breakpoints - Dark mode: Built-in dark mode support
- Custom colors: Primary green theme
- Spacing system: Consistent spacing scale
Radix UI
Why Radix: Unstyled, accessible UI primitives Packages used:@radix-ui/react-dialog: Modal dialogs@radix-ui/react-dropdown-menu: Dropdown menus@radix-ui/react-select: Select inputs@radix-ui/react-tabs: Tab navigation@radix-ui/react-avatar: User avatars@radix-ui/react-progress: Progress bars@radix-ui/react-switch: Toggle switches@radix-ui/react-radio-group: Radio buttons@radix-ui/react-separator: Dividers@radix-ui/react-label: Form labels@radix-ui/react-slot: Component composition
- WCAG compliant accessibility
- Keyboard navigation support
- Screen reader support
- Full styling control
Shadcn/ui
Why Shadcn/ui: Pre-built components built on Radix UI Location:components/ui/
Components used:
button.tsx: Button variantscard.tsx: Card containerstable.tsx: Data tablesinput.tsx: Form inputsselect.tsx: Select dropdownsdialog.tsx: Modal dialogstabs.tsx: Tab navigationbadge.tsx: Status badgesprogress.tsx: Progress barssonner.tsx: Toast notifications
components.json
Lucide React
Why Lucide: Lightweight, customizable icons Version:^0.562.0
Usage: Over 50 icons used throughout the app
Motion
Why Motion: Animation library for React Version:^12.27.1
Used for: Smooth transitions and micro-interactions
Data fetching and state
TanStack Query (React Query) 5
Why TanStack Query: Powerful data synchronization for React Version:^5.90.19
Configuration: components/providers/ReactQueryProvider.tsx:11-24
- Query caching and invalidation
- Automatic background refetching
- Optimistic updates
- Request deduplication
- Loading and error states
React Hook Form
Why React Hook Form: Performant form handling Features:- Minimal re-renders
- Built-in validation
- TypeScript support
- Easy integration with UI libraries
Zod
Why Zod: TypeScript-first schema validation Usage: Form validation with React Hook FormData visualization
Recharts
Why Recharts: React charting library Version:^3.6.0
Used for: Financial trend charts in dashboard
Components used:
LineChart: Cash flow trendsBarChart: Monthly comparisonsAreaChart: Revenue visualization
app/dashboard/components/FlowTrendChart.tsx
File processing and export
ExcelJS
Why ExcelJS: Excel file generation Version:^4.4.0
Usage: Export financial reports to Excel format
Implementation: lib/excel/
jsPDF
Why jsPDF: PDF generation in the browser Version:^4.0.0
Usage: Export financial reports to PDF
Implementation: lib/pdf/
jspdf-autotable
Plugin: Table generation for jsPDF Version:^5.0.7
html2canvas-pro
Why html2canvas-pro: Convert HTML to canvas for PDF export Version:^1.6.6
Utilities
Class Variance Authority (CVA)
Why CVA: Type-safe component variants Version:^0.7.1
Used in: UI components for variant management
clsx
Why clsx: Conditional className construction Version:^2.1.1
tailwind-merge
Why tailwind-merge: Merge Tailwind classes without conflicts Version:^3.4.0
Combined with clsx in lib/utils.ts:4-6:
Sonner
Why Sonner: Toast notifications for React Version:^2.0.7
Usage: User feedback for actions
Backend integration
Firebase
Why Firebase: Authentication and cloud services Version:^12.9.0
Configuration: lib/firebase/config.ts
Services used:
- Authentication
- Cloud Storage
- Analytics
Logging
Pino
Why Pino: Fast JSON logger for Node.js Version:^10.2.0
Configuration: lib/utils/logger.ts
pino-pretty
Dev tool: Pretty print Pino logs Version:^13.1.3
Development tools
ESLint
Version:^9
Configuration: eslint.config.mjs
Extends:
eslint-config-next: Next.js recommended ruleseslint-config-prettier: Disable conflicting rules
Prettier
Version:^3.8.1
Plugins:
prettier-plugin-tailwindcss: Sort Tailwind classes
Sharp
Image optimization: Next.js image processing Version:^0.34.5
Package manager
pnpm
Why pnpm: Fast, disk-efficient package manager Required version: 8 or higher Workspace: Configured withpnpm-workspace.yaml
Benefits:
- Faster installs than npm/yarn
- Saves disk space
- Strict dependency resolution
Runtime requirements
Node.js
Required version: 20 or higher Why Node 20:- Native fetch support
- Improved performance
- Long-term support (LTS)
Environment variables
Required variables (.env.local):
Build output
Production build:.next/
Bundle analysis:
- Server Components: No client JavaScript
- Client Components: Code-split automatically
- Images: WebP/AVIF with responsive srcset