mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-23 06:46:42 +02:00
feat(mail): add mana-mail service and frontend module (Phase 1 MVP)
Backend: Hono/Bun service on port 3042 with JMAP client for Stalwart, account provisioning (@mana.how addresses on user registration), thread/message/send/label API endpoints, and JWT + service-key auth. Frontend: Mail module with 3-column inbox UI (mailboxes, thread list, detail/compose), local-first encrypted drafts in Dexie, and API-driven thread fetching. Scoped CSS with theme tokens. Integration: Dexie v11 schema, mail pgSchema in mana_platform, mana-auth fire-and-forget hook for account provisioning, getManaMailUrl() in API config, app registry + branding update. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
40e1145e9f
commit
a3de6b3d81
41 changed files with 2908 additions and 1 deletions
|
|
@ -10,6 +10,7 @@ export interface Config {
|
|||
manaNotifyUrl: string;
|
||||
manaCreditsUrl: string;
|
||||
manaSubscriptionsUrl: string;
|
||||
manaMailUrl: string;
|
||||
/** Base64-encoded 32-byte AES-256 key encryption key (KEK). Wraps each
|
||||
* user's master key in auth.encryption_vaults. Required in production
|
||||
* — in development a deterministic dev KEK is auto-generated so the
|
||||
|
|
@ -54,6 +55,7 @@ export function loadConfig(): Config {
|
|||
manaNotifyUrl: env('MANA_NOTIFY_URL', 'http://localhost:3013'),
|
||||
manaCreditsUrl: env('MANA_CREDITS_URL', 'http://localhost:3061'),
|
||||
manaSubscriptionsUrl: env('MANA_SUBSCRIPTIONS_URL', 'http://localhost:3063'),
|
||||
manaMailUrl: env('MANA_MAIL_URL', 'http://localhost:3042'),
|
||||
encryptionKek,
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -87,6 +87,16 @@ export function createAuthRoutes(
|
|||
headers: { 'Content-Type': 'application/json', 'X-Service-Key': config.serviceKey },
|
||||
body: JSON.stringify({ userId: response.user.id, email: body.email }),
|
||||
}).catch(() => {});
|
||||
// Provision mail account (fire-and-forget)
|
||||
fetch(`${config.manaMailUrl}/api/v1/internal/mail/on-user-created`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json', 'X-Service-Key': config.serviceKey },
|
||||
body: JSON.stringify({
|
||||
userId: response.user.id,
|
||||
email: body.email,
|
||||
name: body.name || body.email.split('@')[0],
|
||||
}),
|
||||
}).catch(() => {});
|
||||
}
|
||||
|
||||
return c.json(response);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue