Une Telegram Mini App est une application web qui s’ouvre dans Telegram, avec l’utilisateur déjà connecté et dans la bonne conversation. Toute sa promesse tient là : pas de nouveau compte, aucun téléchargement, pas de réinitialisation de mot de passe. Je la construis comme tout produit web de production : Next.js et TypeScript côté frontend, Node.js côté backend, plus quelques règles propres à Telegram. La dernière que j’ai livrée, sous NDA, était une Web App et Mini App fintech avec cartes virtuelles et physiques, développée sur Next.js, Express et MongoDB.
Tout commence par le bot. BotFather crée le bot et la Mini App. L’utilisateur peut l’ouvrir depuis le bouton de menu, un bouton de clavier inline ou un lien direct t.me comportant le paramètre startapp — ce qui permet de transmettre un code de parrainage ou de renvoyer vers un écran précis. L’application est servie en HTTPS depuis un hébergement classique ; en développement, un tunnel relie Telegram à localhost, afin que je teste sur un vrai téléphone et pas seulement dans un navigateur de bureau.
Je ne fais jamais de compromis sur l’authentification. Telegram fournit à l’application initData : identifiant et nom de l’utilisateur, auth_date et hash. initDataUnsafe porte bien son nom : utile pour afficher un nom, jamais fiable pour prendre une décision. Le backend valide les initData brutes avec une signature HMAC dérivée du token du bot, vérifie que auth_date est récente et n’émet sa propre session qu’ensuite. Le token du bot ne quitte jamais le serveur. Dans un produit fintech, cette vérification distingue « connecté via Telegram » de « toute personne avec les outils de développement peut prendre n’importe quelle identité ».
La Mini App doit ensuite sembler native, pas être un site collé dans une webview. Je lis themeParams et les variables CSS de Telegram pour suivre le thème clair ou sombre de l’application, j’utilise MainButton et BackButton plutôt que de redessiner ces commandes, j’ajoute un retour haptique aux actions importantes et je respecte le viewport et les marges de la safe area pour que rien ne passe sous l’en-tête ou l’indicateur d’accueil. Ici, mobile-first n’est pas un slogan : la plupart des sessions se font avec un pouce sur le téléphone.
Le bot et la Mini App forment un duo. Le bot envoie notifications, confirmations et reçus ; la Mini App gère les écrans qui nécessitent un formulaire, une liste ou un paiement. Les webhooks arrivent au backend Node.js, qui reste la source de vérité unique pour les paiements et l’état — le client demande, il ne décide jamais. Les biens numériques dans Telegram se paient en Stars ; les biens physiques et les services peuvent passer par des prestataires de paiement. J’en parle au client dès le début, car ce choix détermine tout le parcours.
Je refuse de faire confiance à initDataUnsafe, de compresser un site de bureau dans une webview, de laisser un paiement dépendre uniquement du frontend ou de créer une Mini App sans accès web lorsque l’entreprise a aussi besoin de SEO ou d’un tableau de bord interne. Si vous souhaitez lancer un produit dans Telegram, envoyez-moi l’action précise que l’utilisateur doit accomplir dans le chat. Je vous répondrai avec le parcours du bot, les écrans de la Mini App et les éléments qui restent côté serveur.
Donnez à votre prochain produit quelqu’un qui reste.
Prêt à commencer ? Écrivez-moi — je peux démarrer immédiatement et rester dans la durée. Des collaborations à long terme, pas une passation après deux semaines. Discutons de votre projet, de vos exigences et de la meilleure façon d’avancer.