Aller au contenu
Atlas IA
Ouvrir l'assistant

Comment ce site est construit

Un site de contenu et un assistant conversationnel, sur des paliers gratuits, déployés sur un seul compte. Les arbitrages sont documentés parce qu'ils sont plus intéressants que le résultat.

Architecture

Next.js en App Router, déployé sur Cloudflare Workers via OpenNext. Les pages de contenu sont des Server Components rendus statiquement avec revalidation, servies depuis le cache incrémental sur R2. L'assistant est une route séparée : le widget de conversation n'est jamais monté dans le chemin critique d'une page de contenu, ce qui est la raison pour laquelle un site dont le produit est un assistant vocal peut tenir son budget de performance.

Quatre briques de données vivent dans la même runtime : D1 pour le relationnel et l'index plein texte FTS5, Vectorize pour les embeddings, R2 pour les fichiers, KV pour les compteurs de quota. L'indexation ne se fait jamais dans une requête utilisateur : un message part dans une file Cloudflare Queues, et un Worker séparé fait l'extraction, le découpage et le calcul des embeddings avec un budget CPU adapté.

L'arbitrage d'hébergement, les alternatives écartées et la porte de sortie assumée sont détaillés dans les décisions d'architecture du dépôt.

Modèles et quotas

Aucun réglage fin : aucun palier gratuit ne le propose, et ce n'est pas nécessaire. La spécialisation passe par le prompt système, les exemples et la récupération documentaire. Les noms de modèles ne sont écrits nulle part ailleurs que dans un fichier de configuration, parce qu'ils changent.

UsageModèleFournisseurQuota gratuit
chat, visionGemini 3.5 FlashGoogle AI Studio10/min · 250/jour
fast, utility, rerank, visionGemini 3.5 Flash LiteGoogle AI Studio15/min · 1000/jour
chat, fast, vision, rerank, utilityGemini Flash (alias courant)Google AI Studio10/min · 250/jour
chat, fast, rerankGPT-OSS 120B (Groq)Groq30/min · 1000/jour
fast, utilityLlama 3.1 8B Instant (Groq)Groq30/min · 14400/jour
chat, fastGPT-OSS 120B (Cerebras)Cerebras30/min · 14400/jour
fast, utilityLlama 3.1 8B (Cerebras)Cerebras30/min · 14400/jour
chat, fast, utilityLlama 3.3 70B (OpenRouter, gratuit)OpenRouter50/jour
chatDeepSeek V3 (OpenRouter, gratuit)OpenRouter50/jour
embeddingsBGE-M3 (Workers AI)Cloudflare Workers AI1024 dimensions
transcriptionWhisper Large v3 Turbo (Groq)Groqrepli Safari et Firefox

L'état de disponibilité en temps réel est sur la page de statut.

Accessibilité

Navigation entièrement au clavier, y compris la palette de commandes, le panneau de passages et le contrôle du microphone. Le focus est toujours visible et n'est jamais supprimé. Les contrastes respectent le niveau AA dans les deux thèmes.

Les réponses en cours de génération sont annoncées poliment aux lecteurs d'écran sans que chaque token ne provoque une relecture complète du fil. Toute sortie vocale est doublée de son texte, systématiquement : une interface vocale sans transcription est une interface qui exclut. La description d'image lue à voix haute est traitée comme une fonctionnalité d'accessibilité réelle, pas comme une démonstration.

La préférence système de réduction des animations est respectée sans exception : l'orbe vocale cesse d'être animée et devient un indicateur statique de niveau, les transitions sont supprimées, et rien de fonctionnel ne dépend d'un mouvement.

Données et vie privée

Pas de compte, pas de mot de passe, pas d'adresse e-mail. Une session est une valeur aléatoire dans un cookie, qui identifie un navigateur et rien d'autre. Les journaux ne contiennent ni adresse IP, ni question, ni transcription : les compteurs de quota utilisent une empreinte non réversible de l'adresse, et le texte libre est réduit à une longueur.

Quand la reconnaissance vocale du navigateur est disponible, aucun audio ne quitte l'appareil. Sur Safari et Firefox, l'enregistrement est transmis pour une transcription unique, puis abandonné : il n'est écrit ni en base, ni sur le stockage objet.