# System Patterns - Architecture & Design ## Overall Architecture - **Framework**: Next.js 15+ with App Router - **Language**: TypeScript for type safety - **Styling**: Tailwind CSS for responsive design - **Deployment**: Docker containerization (dev and production) ## Key Technical Decisions ### Frontend Architecture - **App Router**: Uses Next.js App Router for file-based routing - **Component Structure**: Organized by feature and shared components - **State Management**: React hooks and context providers - **Animations**: Framer Motion for smooth UI transitions - **Icons**: Lucide React and React Icons ### Backend Architecture - **API Routes**: Next.js API routes for server-side functionality - **Email Service**: Nodemailer with Gmail SMTP integration - **Rate Limiting**: Upstash Redis for distributed rate limiting - **Validation**: Custom input validation and sanitization ### Security Patterns - **Input Sanitization**: XSS prevention through input cleaning - **Rate Limiting**: IP-based request limiting to prevent abuse - **Environment Variables**: Sensitive data stored in environment variables - **Validation**: Multi-layer validation (client and server-side) ## Directory Structure Patterns ``` src/ ├── app/ # Next.js App Router pages │ ├── api/ # API route handlers │ ├── [page]/ # Individual page routes ├── components/ # React components │ ├── home/ # Home page specific components │ ├── layout/ # Layout components (Header, Footer, Nav) │ ├── providers/ # Context providers │ ├── shared/ # Reusable components │ └── ui/ # Basic UI components ├── data/ # Static data and configurations ├── lib/ # Utility functions and configurations ├── styles/ # Global styles └── types/ # TypeScript type definitions ``` ## Component Patterns - **Separation of Concerns**: UI components separate from business logic - **Reusability**: Shared components in dedicated directories - **Type Safety**: TypeScript interfaces for all component props - **Responsive Design**: Mobile-first approach with Tailwind CSS ## API Patterns - **RESTful Design**: Standard HTTP methods and status codes - **Error Handling**: Consistent error response format - **Validation**: Input validation before processing - **Rate Limiting**: Applied to all public API endpoints ## Email System Patterns - **Transporter Configuration**: Reusable SMTP configuration - **Template System**: HTML email templates with inline styles - **Error Handling**: Graceful failure handling with user feedback - **Environment Configuration**: SMTP settings via environment variables ## Development Patterns - **Docker**: Containerized development and production environments - **Package Management**: PNPM for efficient dependency management - **Code Quality**: ESLint for code consistency - **Type Safety**: Strict TypeScript configuration