Accueil » Portfolio » Plateforme de contenu pour un réseau d’applications Android
CRM Applications mobiles / Produit interne

Plateforme de contenu pour un réseau d’applications Android

Seganiko
Client Seganiko
Secteur Applications mobiles / Produit interne
Type CRM
Technologies utilisées Laravel, administration Filament, API REST en lecture seule, clés et limitation de débit, étiquettes de version, conversion WebP, synchronisation store et régie
Contexte

Le défi

Gérer le contenu de vingt-quatre applications sans transformer chaque correction de texte en nouvelle version sur le store — et faire tenir le tout sur un hébergement mutualisé, sans root ni conteneurs.
Notre approche

Ce que nous avons réalisé

L’application ne fait que lire : elle récupère un manifeste et un jeu d’éléments dans sa langue, et n’écrit que des événements anonymes. Une étiquette de version sur la réponse évite de retélécharger ce qui n’a pas bougé — il a fallu accepter ses trois formes, un proxy compressant réécrivant l’étiquette. Les images sont converties en WebP à l’envoi, et les chiffres du store et de la régie sont rapatriés à côté du contenu.
Détail du projet

Un seul back-office pour tout un réseau d’applications

Avec deux applications, on peut garder le contenu dans des fichiers à l’intérieur de chacune. Avec vingt-quatre, la moindre correction de texte devient une nouvelle version sur Google Play et une semaine d’attente.

Nous avons bâti une plateforme où le contenu vit à part des applications : un rédacteur le modifie dans l’administration, et les téléphones récupèrent le nouveau jeu tout seuls — sans mise à jour de l’application.

Tableau de bord de la plateforme : nombre d’éléments et version de contenu par application

Chaque tuile est une application : combien d’éléments elle contient et quelle version de contenu est publiée.

De quoi il s’agit

  • Produit : développement interne de Seganiko
  • Objet : plateforme de contenu pour un réseau d’applications Android
  • Échelle : 24 applications, des centaines de milliers d’éléments
  • Environnement : hébergement ordinaire, sans root ni conteneurs

Objectifs

  • Modifier le contenu sans publier de version de l’application.
  • Monter une nouvelle application en minutes, pas en une semaine.
  • Cesser de payer en bande passante ce qui n’a pas changé.
  • Recueillir des statistiques sans recueillir de données personnelles.

Ce qu’il y a dedans

  • Une administration avec un type d’élément par format.
  • Une API en lecture seule, avec clé et limitation de débit.
  • Une chaîne média : original et vignette en WebP.
  • Les chiffres du store et de la régie réunis au même endroit.

L’application ne fait que lire

La décision d’architecture centrale est simple : le téléphone n’écrit rien dans la plateforme, sauf des événements anonymes. Il récupère le manifeste, récupère le jeu d’éléments dans sa langue, et c’est tout. Pas de comptes, pas de synchronisation, pas de conflits.

De ce fait, une nouvelle application se monte presque sans code : on crée une fiche dans l’administration, une clé est générée, on remplit rubriques et éléments, on appuie sur Publier — et la version de contenu augmente d’une unité. La clé et l’adresse sont inscrites dans l’application, qui fonctionne ensuite seule.

Les stades sont visibles dans la liste : idée, concept prêt, en développement, publiée. La plateforme tient non seulement ce qui est déjà en boutique, mais aussi ce qui reste en attente — avec les rubriques et les éléments qu’on lui prépare.

Vingt-quatre applications dans un seul tableau

Chacune a sa clé d’accès, son jeu de langues, sa version de contenu et son état. On voit ce qui est publié, ce qui est en cours et ce qui n’est encore qu’une idée. Ce n’est pas une vitrine : c’est la liste de travail depuis laquelle tout le réseau est piloté.

Liste des applications avec stades, catégories, clés d’API et versions de contenu

Des éléments de formes différentes

Une recette, un guide, une question de quiz, une carte de jeu, un code d’erreur, une devinette, un fait — chaque format a son propre formulaire d’édition, pas un unique champ « texte ». Cent éléments s’ajoutent par import : on colle un tableau, on choisit le type et la langue, et le système rend compte ligne par ligne — ce qui est passé, ce qui ne l’est pas et pourquoi.

Section éléments : recettes, quiz, cartes et fiches de référence par application

Ne pas payer ce qui n’a pas changé

Le jeu d’éléments d’une application pèse des centaines de kilooctets. Le télécharger à chaque lancement n’a pas de sens : la réponse porte donc une étiquette de version, et si le téléphone a déjà le jeu à jour, le serveur répond « rien n’a changé » et n’envoie rien.

C’est là que se cachait le piège qui annulait l’économie : un proxy qui compresse les réponses réécrit l’étiquette dans sa forme « faible », et la comparaison stricte cesse de correspondre. Le téléphone retéléchargeait tout, à chaque fois. Il a fallu apprendre à la comparaison à accepter les trois formes de l’étiquette — stricte, faible et séparée par des virgules.

Des médias qui n’alourdissent pas l’application

Chaque image est convertie en WebP au téléversement et conservée en deux tailles : complète jusqu’à 1200 pixels et vignette jusqu’à 400. Le serveur les diffuse avec un cache long, et l’application reçoit des adresses prêtes — aucune conversion sur le téléphone.

Médiathèque de la plateforme avec conversion WebP et vignettes

Des statistiques sans données personnelles

Les applications envoient des événements anonymes — une ouverture, une navigation, une action. Aucun identifiant de personne, aucun contact. Cinquante événements au maximum par requête, et les lignes mal formées sont simplement écartées plutôt que de faire échouer l’appel entier.

À côté, la plateforme rassemble les chiffres du magasin d’applications et de la régie publicitaire — pour lire installations et revenus là où se trouve le contenu, et non dans trois consoles différentes.

Déroulé du projet

1
Étape 1
Modèle de contenu
Application, rubrique, élément, langue. Un type d’élément par format, chacun avec son formulaire d’édition.
2
Étape 2
API
Lecture seule, une clé par application, limitation de débit, étiquette de version sur la réponse et une action Publier qui incrémente la version de contenu.
3
Étape 3
Médias et import
Conversion WebP avec vignettes, cache long, import par tableau avec compte rendu ligne par ligne.
4
Étape 4
Chiffres
Événements anonymes venus des applications, plus installations et revenus rapatriés du store et de la régie.

Sous le capot

Plateforme

Laravel avec une administration Filament. Elle vit sur un hébergement ordinaire : sans root, sans conteneurs, file et cache en base, images converties dès le téléversement.

API

Quatre points de lecture, une clé dans l’en-tête, des limites par clé et par adresse, une étiquette de version avec la réponse « rien n’a changé ». Les erreurs sont du JSON simple avec un code.

Coffre

Un espace distinct pour les builds et le matériel de boutique : icônes, captures, descriptions. Plus les renvois croisés entre les applications du réseau.

Le résultat

Un réseau de vingt-quatre applications où une correction de texte atteint l’utilisateur en minutes et non en une semaine. Une nouvelle application se monte dans l’administration en quelques minutes : créer, remplir, publier, coller la clé.

Et tout cela tourne sur un hébergement ordinaire — sans serveur dédié, sans files en mémoire et sans conteneurs, qu’on n’aurait de toute façon nulle part où lancer.


Un projet similaire ?

Discutons de vos objectifs et voyons comment nous pouvons vous aider.

Demander un devis gratuit →
Des questions ?

Discutons de
votre projet.

Premier échange gratuit, sans engagement.