feat(mail): add complete Mail app with backend, web, mobile, and landing

- Backend (NestJS): Complete API with accounts, folders, emails, labels, compose, attachments, sync providers (IMAP, Gmail, Outlook), AI features (summarize, smart replies, categorization), and OAuth support
- Web (SvelteKit): Full email client UI with Svelte 5 runes, sidebar navigation, email list/detail views, compose modal, and theme support
- Mobile (Expo): React Native app with drawer navigation, email list/detail, compose screen, account management, and theme provider
- Landing (Astro): Marketing page with features, pricing, FAQ sections using shared-landing-ui components
- Storage: Added mail bucket and createMailStorage to shared-storage package
- Branding: Added MailLogo component

Note: Run `pnpm install` to install new dependencies (mailparser)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Till-JS 2025-12-03 16:06:32 +01:00
parent 79dd56403e
commit 604727c8f9
127 changed files with 15653 additions and 0 deletions

View file

@ -129,3 +129,10 @@ export function createStorageStorage(publicUrl?: string): StorageClient {
publicUrl: publicUrl ?? process.env.STORAGE_S3_PUBLIC_URL,
});
}
/**
* Create a storage client for the Mail project
*/
export function createMailStorage(): StorageClient {
return createStorageClient({ name: BUCKETS.MAIL });
}

View file

@ -13,6 +13,7 @@ export {
createCalendarStorage,
createContactsStorage,
createStorageStorage,
createMailStorage,
} from './factory';
// Utilities

View file

@ -84,6 +84,7 @@ export const BUCKETS = {
CALENDAR: 'calendar-storage',
CONTACTS: 'contacts-storage',
STORAGE: 'storage-storage',
MAIL: 'mail-storage',
} as const;
export type BucketName = (typeof BUCKETS)[keyof typeof BUCKETS];