import { ULTICAL_APP_NAME } from "@/lib/suite/page-metadata" import { suitePublicAsset } from "@/lib/suite/suite-public-asset" export type LandingApp = { name: string tagline: string description: string icon: string iconDark?: string href?: string /** Application annoncée, pas encore disponible. */ soon?: boolean accent: string } /** Onglet démo (#demo) associé à une app (dock hero, visiteur non connecté). */ export const LANDING_APP_DEMO_TAB: Partial> = { "/mail": "mail", "/drive": "drive", "/contacts": "contacts", "/agenda": "agenda", } export const LANDING_APPS: LandingApp[] = [ { name: "Ultimail", tagline: "Messagerie", description: "Boîte unifiée multi-comptes, libellés intelligents, règles, envoi programmé et tri IA.", icon: suitePublicAsset("/ultimail-mark.svg"), href: "/mail", accent: "#EA4335", }, { name: "UltiDrive", tagline: "Fichiers & docs", description: "Stockage, partage par lien, documents texte, dessins et co-édition en temps réel.", icon: suitePublicAsset("/ultidrive-mark.svg"), href: "/drive", accent: "#4285F4", }, { name: "Contacts", tagline: "Carnet d'adresses", description: "Contacts unifiés sur toute la suite, synchronisés avec la messagerie et le partage.", icon: suitePublicAsset("/contacts-mark.svg"), href: "/contacts", accent: "#4285F4", }, { name: "UltiAI", tagline: "Assistant IA", description: "Assistant connecté à vos mails et fichiers, fournisseurs OpenAI-compatibles, quotas maîtrisés.", icon: suitePublicAsset("/ultiai-mark.svg"), href: "/chat", accent: "#f2783c", }, { name: "Administration", tagline: "Console d'admin", description: "Gestion de l'organisation, SSO, déploiement, quotas IA et réglages centralisés.", icon: suitePublicAsset("/admin-mark.svg"), href: "/admin/settings", accent: "#5a6172", }, { name: ULTICAL_APP_NAME, tagline: "Calendrier", description: "Calendrier partagé, invitations et disponibilités, connecté au mail et aux contacts.", icon: suitePublicAsset("/agenda-mark.svg"), iconDark: suitePublicAsset("/agenda-mark-dark.svg"), href: "/agenda", accent: "#34c77b", }, { name: "UltiMeet", tagline: "Visio", description: "Réunions vidéo chiffrées dans le navigateur, auto-hébergées via Jitsi et liées à UltiCal.", icon: suitePublicAsset("/ultimeet-mark.svg"), href: "/meet", accent: "#34A853", }, { name: "Photos", tagline: "Galerie", description: "Vos photos sauvegardées et organisées, hébergées chez vous — bientôt disponible.", icon: suitePublicAsset("/photos-mark.svg"), soon: true, accent: "#FBBC04", }, ] export type LandingFeature = { title: string description: string icon: string /** Carte large dans la grille bento. */ wide?: boolean } export const LANDING_FEATURES: LandingFeature[] = [ { title: "Souveraineté totale", description: "Auto-hébergée sur votre infrastructure : vos mails, fichiers et identités restent chez vous. Aucun tracker, aucune télémétrie, aucune dépendance à un cloud étranger.", icon: "mdi:shield-lock-outline", wide: true, }, { title: "100 % open source", description: "Code ouvert et auditable de bout en bout. Pas de boîte noire, pas de verrou propriétaire : vous gardez le contrôle, pour toujours.", icon: "mdi:source-branch", }, { title: "SSO unifié", description: "Une seule identité (OIDC / Authentik) pour toute la suite. Connexion unique, sessions sécurisées, déconnexion centralisée.", icon: "mdi:key-chain-variant", }, { title: "IA intégrée, maîtrisée", description: "Assistant UltiAI, tri de mails par LLM et agents connectés via MCP. Compatible avec tout fournisseur OpenAI-compatible — y compris vos modèles locaux.", icon: "mdi:creation-outline", wide: true, }, { title: "Collaboration temps réel", description: "Documents, feuilles et dessins co-édités en direct, avec curseurs partagés et historique.", icon: "mdi:account-multiple-outline", }, { title: "Automatisations avancées", description: "Règles de tri, webhooks à templates, tokens API à permissions fines pour vos agents et intégrations.", icon: "mdi:webhook", }, { title: "Ergonomie familière", description: "Une interface que vos équipes connaissent déjà : migration depuis Google ou Microsoft sans friction ni formation.", icon: "mdi:gesture-tap-button", }, ] export type LandingIntegration = { label: string icon: string } export const LANDING_INTEGRATIONS: LandingIntegration[] = [ { label: "IMAP / SMTP", icon: "mdi:email-sync-outline" }, { label: "OIDC / Authentik", icon: "mdi:shield-key-outline" }, { label: "OnlyOffice", icon: "mdi:file-document-edit-outline" }, { label: "Excalidraw", icon: "mdi:draw" }, { label: "Yjs temps réel", icon: "mdi:sync" }, { label: "Mistral", icon: "simple-icons:mistralai" }, { label: "OpenAI-compatible", icon: "mdi:robot-outline" }, { label: "MCP Agents", icon: "mdi:connection" }, { label: "Webhooks", icon: "mdi:webhook" }, { label: "Jitsi Meet", icon: "simple-icons:jitsi" }, { label: "PostgreSQL", icon: "simple-icons:postgresql" }, { label: "Docker", icon: "simple-icons:docker" }, { label: "Nextcloud", icon: "simple-icons:nextcloud" }, ]