feat: IMAP mail sync with thread-to-contact matching (PRD §6.1)
Real IMAP connection via imapflow library: - Connects to IMAP server (IMAPFlow, TLS on port 993) - Fetches recent messages (configurable limit, default 20) - Extracts: from, fromEmail, subject, date, snippet (200 chars) - Thread-to-contact matching (PRD §6.1): 1. Match sender email against persons table 2. If no person match, extract domain and match against company.website 3. Returns matchedCompany + matchedPerson for each email - Audit-logged (action: crm.mailsync:imap) - Zod validated (host, port, user, password, folder, limit) - 502 on IMAP connection failure with detail - 400 on validation failure Tested: invalid creds → 502 'IMAP connection failed', missing host → 400
This commit is contained in:
1 parent
7acc0c5451
commit
e45b68bb8b
1089 files changed
+260614
No files matched your search
+48
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"slug": "zhangzara-8-bit-orbit",
|
||||
"name": "8-Bit Orbit",
|
||||
"tagline": "Pixel-art neon arcade aesthetic on a deep navy void.",
|
||||
"mood": [
|
||||
"retro-tech",
|
||||
"playful",
|
||||
"cyberpunk",
|
||||
"energetic"
|
||||
],
|
||||
"occasion": [
|
||||
"gaming pitch",
|
||||
"hackathon demo",
|
||||
"web3 / crypto deck",
|
||||
"indie product launch",
|
||||
"developer tools",
|
||||
"synthwave brand"
|
||||
],
|
||||
"tone": [
|
||||
"geeky",
|
||||
"neon",
|
||||
"rebellious",
|
||||
"sci-fi"
|
||||
],
|
||||
"formality": "low",
|
||||
"density": "medium",
|
||||
"palette": {
|
||||
"neon_pink": "#F0A6CA",
|
||||
"neon_cyan": "#5EDCF4",
|
||||
"neon_yellow": "#F4D03F",
|
||||
"deep_navy": "#0F1B3D",
|
||||
"void": "#0A0E27",
|
||||
"lavender": "#E2D5F2",
|
||||
"description": "deep navy/black void with neon pink, cyan, and yellow pops; pixel art accents and CRT-monitor energy"
|
||||
},
|
||||
"typography": {
|
||||
"display": "Tektur",
|
||||
"body": "Chakra Petch",
|
||||
"mono": "Space Mono",
|
||||
"style": "boxy display sans paired with technical mono, all unmistakably digital and pixel-flavored"
|
||||
},
|
||||
"scheme": "dark",
|
||||
"best_for": "Anything that should feel like a CRT screen at 2am: cyberpunk, gaming, web3, indie dev tools, hackathon demos. Just as good for a tech talk that wants to lean into nostalgic-digital craft, a synthwave brand deck, or a creative review that wants to feel like a console.",
|
||||
"avoid_for": "Contexts where the dark neon palette would actively work against the message — quiet institutional finance disclosures, healthcare patient-facing materials, traditional luxury.",
|
||||
"slide_count": 10,
|
||||
"navigation": "inline keyboard handler with on-page nav dots and slide counter",
|
||||
"source": "https://github.com/zarazhangrui/beautiful-html-templates/tree/main/templates/8-bit-orbit"
|
||||
}
|
||||
Reference in new issue
Block a user