← Guides
Playbook Dans Construire des produits intermediate · 38 min de lecture · Mis à jour 22 avr. 2026
Fait partie de la série De zéro au revenu · Partie 1

Livrer une Mini App Telegram en 48 heures

Un parcours pratique de bout en bout — de BotFather au déploiement — pour livrer votre première Mini App Telegram avec authentification, paiements et un vrai plan de distribution.

Les Mini Apps sont ce qui ressemble le plus à un “moment App Store” pour le web mobile. Ce sont des apps HTML5 qui tournent dans Telegram avec un chrome natif, une authentification profonde de l’identité utilisateur et un rail de paiement qui se câble en minutes — pas en semaines.

Ce guide vous mène de zéro à une Mini App déployée, prête à encaisser, en deux jours.

Qu’est-ce qu’une Mini App Telegram ?

Une Mini App est une page web que Telegram embarque dans son propre chrome. Votre code reste du HTML/JS classique — React, Vue, vanilla, n’importe quel framework qui tourne dans un navigateur. Telegram injecte un pont JavaScript (window.Telegram.WebApp) qui vous donne :

  • Identité : un payload signé (initData) que vous vérifiez côté serveur.
  • Thème : les tokens du thème actuel de l’utilisateur, pour matcher light/dark.
  • Primitives UI natives : MainButton, BackButton, haptics, scanner, lien de partage.
  • Paiements : flux de facture qui débite en Stars (digital) ou en fiat (physique).

La surface officielle est l’API Bot, qui expose les Mini Apps via les boutons web_app. La spec complète vit sur core.telegram.org core.telegram.org/bots/webapps .

User device Telegram client WebView window.Telegram.WebApp initData (signed) themeParams Mini App (frontend) React / Vue / etc. Cloudflare / Vercel HTTPS only Your backend verify initData issue session JWT handle payments Bot API api.telegram.org
Les cinq pièces que vous câblez ensemble — seul le frontend va sur Cloudflare/Vercel ; le reste est géré par Telegram ou votre backend existant.

Prérequis

  • Un compte Telegram (un vrai, pas un numéro virtuel).
  • Un laptop avec Node 20+ (ou Bun 1.1+).
  • Un domaine ou sous-domaine gratuit chez Cloudflare/Vercel/Fly. Les Mini Apps doivent être servies en HTTPS.
  • 30 minutes d’installation, puis ~10 heures de code étalées sur 2 jours.
01

Créer le bot avec BotFather

Ouvrez Telegram, cherchez @BotFather, envoyez /newbot. Choisissez un nom et un username suffixé _bot. Sauvegardez le token API — vous en aurez besoin côté serveur.

Puis attachez une Mini App :

/newapp                 → choisir votre bot
Title:                  Telegram Bible Demo
Description:            Construire sur Telegram, vite.
Photo:                  PNG 640×360
GIF:                    optionnel
Web App URL:            https://votre-app.example.com
Short name:             demo

Votre Mini App est désormais accessible via t.me/your_bot/demo et via les boutons inline.

core.telegram.org Référence BotFather
02

Bootstrap du frontend

Utilisez Vite + React (ou votre stack). Installez le SDK Telegram :

npm create vite@latest mini-app -- --template react-ts
cd mini-app
npm install @telegram-apps/sdk-react

Dans main.tsx, initialisez le pont :

import { init, miniApp, viewport } from "@telegram-apps/sdk-react";

init();
miniApp.mount();
viewport.mount();
miniApp.ready();

miniApp.ready() indique à Telegram que votre app a fini de charger — Telegram cache son loader et révèle votre UI.

03

Authentifier l'utilisateur, proprement

Telegram passe une chaîne initData signée. Ne lui faites jamais confiance côté client. Envoyez-la au backend et vérifiez le HMAC.

import crypto from "node:crypto";

export function verifyInitData(initData: string, botToken: string): boolean {
  const params = new URLSearchParams(initData);
  const hash = params.get("hash")!;
  params.delete("hash");

  const dataCheck = [...params.entries()]
    .sort(([a], [b]) => a.localeCompare(b))
    .map(([k, v]) => `${k}=${v}`)
    .join("\n");

  const secret = crypto
    .createHmac("sha256", "WebAppData")
    .update(botToken)
    .digest();

  return crypto
    .createHmac("sha256", secret)
    .update(dataCheck)
    .digest("hex") === hash;
}

Une fois vérifiée, parsez initData.user — c’est votre user de confiance. Émettez votre propre JWT de session à partir de là.

core.telegram.org Validation initData
04

Encaisser en Stars en deux appels API

Les Stars sont la monnaie in-app de Telegram pour les biens digitaux. Parfait pour : déblocage premium, tips, templates payants, crédits IA.

Côté backend, créez un lien de facture via l’API Bot :

const res = await fetch(`https://api.telegram.org/bot${TOKEN}/createInvoiceLink`, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    title: "Plan Pro",
    description: "Accès illimité à la bibliothèque",
    payload: `user_${userId}_pro_2026_04`,
    currency: "XTR",
    prices: [{ label: "Pro", amount: 250 }],
  }),
});
const { result: invoiceUrl } = await res.json();

Passez invoiceUrl au client et appelez openInvoice(invoiceUrl). Gérez ensuite pre_checkout_query et successful_payment côté serveur.

05

Déployer et distribuer

Cloudflare Pages ou Vercel — HTTPS gratuit dans les deux cas. Mettez à jour l’URL chez BotFather.

Pour la distribution :

  • Lien direct : t.me/your_bot/demo.
  • Paramètre de démarrage : ?startapp=ref_alex → tracking referral via initData.start_param.
  • Mode inline : @your_bot dans n’importe quel chat partage votre app.
  • Channels : message avec bouton Mini App.
  • Stories : CTR étonnamment élevé.

Pièges courants

  • initData vide dans les devtools — c’est attendu. Telegram l’injecte uniquement dans son client. Utilisez un tunnel.
  • Flicker de thème — lisez themeParams au mount, appliquez via variables CSS.
  • Saut de viewport iOS — appelez viewport.expand() tôt.
  • Remboursements Stars — entièrement manuels. Prévoyez une commande /refund admin dès le J1.

Suite

  • Ajoutez Cloud Storage pour la persistance multi-device sans DB.
  • Construisez un leaderboard de parrainage avec badges payés en Stars.
  • Soumettez au Telegram App Center une fois live.

C’est livré. Maintenant, croître.

Pour aller plus loin

Cette tutorial tierce de 2025 montre l’implémentation complète d’un Mini App avec paiement Stars en code:

Tutorial indépendant en anglais. Code complet de createInvoiceLink, openInvoice, et du handler successful_payment.

Restez dans la boucle

Un email court quand quelque chose d'utile sort. Pas de pixels de tracking, pas d'upsell.