| app | ||
| components | ||
| hooks | ||
| lib | ||
| node_modules | ||
| prisma | ||
| public | ||
| scripts | ||
| styles | ||
| types | ||
| .DS_Store | ||
| .env | ||
| .gitignore | ||
| components.json | ||
| DEPRECATED_FUNCTIONS.md | ||
| docker-compose.yml | ||
| Dockerfile | ||
| global.d.ts | ||
| keycloak-user-creation-workflow.json | ||
| next-env.d.ts | ||
| next.config.js | ||
| next.config.mjs | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.mjs | ||
| README.md | ||
| tailwind.config.ts | ||
| tsconfig.json | ||
| yarn.lock | ||
Neah Email Application
A modern email client built with Next.js, featuring email composition, viewing, and management capabilities.
Email Processing Workflow
The application handles email processing through a centralized workflow:
-
Email Fetching: Emails are fetched through the
/api/courrierendpoints using user credentials stored in the database. -
Email Parsing: Raw email content is parsed using:
- Server-side:
parseEmailfunction fromlib/server/email-parser.ts(which usessimpleParserfrom themailparserlibrary) - API route:
/api/parse-emailprovides a REST interface to the parser
- Server-side:
-
HTML Sanitization: Email HTML content is sanitized and processed using:
sanitizeHtmlfunction inlib/utils/email-formatter.ts(centralized implementation)- Text direction (RTL/LTR) is preserved automatically during sanitization
-
Email Display: Sanitized content is rendered in the UI with proper styling and security measures
-
Email Composition: The
ComposeEmailcomponent handles email creation, replying, and forwarding- Uses the centralized formatter functions to prepare content
- Email is sent through the
/api/courrier/sendendpoint
Deprecated Functions
Several functions have been deprecated and removed in favor of centralized implementations:
- Check the
DEPRECATED_FUNCTIONS.mdfile for a complete list of deprecated functions and their replacements.
Project Structure
/app- Main application routes and API endpoints/components- Reusable React components/lib- Utility functions and services/services- Domain-specific services, including email service/server- Server-side utilities/utils- Utility functions including the centralized email formatter
Dependencies
- Next.js 15
- React 18
- ImapFlow for IMAP interactions
- Mailparser for email parsing
- Prisma for database interactions
- Tailwind CSS for styling
Development
# Install dependencies
npm install
# Start the development server
npm run dev
# Build for production
npm run build
Email Formatting
Centralized Email Formatter
All email formatting is now handled by a centralized formatter in lib/utils/email-formatter.ts. This ensures consistent handling of:
- Text direction (RTL/LTR)
- HTML sanitization
- Content formatting for forwards and replies
- MIME encoding and decoding for email composition
Key Functions
formatForwardedEmail: Format emails for forwardingformatReplyEmail: Format emails for replyingsanitizeHtml: Sanitize HTML while preserving direction attributesformatEmailForReplyOrForward: Compatibility function for bothdecodeComposeContent: Parse MIME content for email compositionencodeComposeContent: Create MIME-formatted content for sending emails
This centralized approach prevents formatting inconsistencies and direction problems when dealing with emails in different languages.