Timothy Bastow2–3 jours / semaine · mandats2–3 j / sem.
Toutes les réalisations

Subline — plateforme complète

Projet propre

Application de découverte mode : les catalogues de marques indépendantes réunis en une seule expérience d'achat.

Une plateforme entière, construite seul.

11

Composants, 5 couches

14

Services déployés

3

Interfaces : mobile, web, back-office

1

Base Postgres, 7 schémas

Approuvée · Shopify App Store

Le projet

Application de découverte mode pour femmes, conçue et développée de bout en bout : design system, application Flutter, vitrine web rendue côté serveur, back-office opérationnel et intégration Shopify. Onze composants, six services back-end, une base unique — un produit propre, porté de l'architecture à la production par une seule personne.

Décisions d'architecture

Trois décisions structurantes, prises avant la première ligne de code et tenues jusqu'à la mise en production.

Un point d'entrée unique
Les clients — application mobile et site web — n'adressent que la passerelle applicative et le fournisseur d'identité. Les cinq autres services back-end restent invisibles depuis le client : les faire évoluer, ou en ajouter, n'implique aucune publication sur les stores.
Propriété des schémas plutôt que contrats inter-services
Les six services back-end partagent une instance PostgreSQL, avec un propriétaire et un rôle de base dédiés par schéma, plutôt qu'un maillage d'API internes. À l'échelle d'un exploitant unique, une matrice de permissions se vérifie d'un coup d'œil ; un réseau de contrats entre services se maintient.
Un moteur de recommandation conçu par phases
Cinq architectures évaluées contre trois types de signal avant d'en retenir une : plus proches voisins sur embeddings, factorisation hybride, récupération à deux tours, transformeur séquentiel, hybride par phases. C'est la dernière qui l'emporte. La totalité des interactions est journalisée dès la mise en service, bien au-delà de ce que la première phase exploite, pour que les suivantes s'entraînent sans reprise de données.

Déroulé

Douze mois, du premier composant à la vitrine publique.

  1. 01

    Socle client et passerelle

    La passerelle applicative et l'application mobile ouvrent le projet à quinze jours d'écart. Le contrat entre client et serveur est fixé là, et n'a pas changé depuis.

  2. 02

    Chaîne marchande

    L'intégration Shopify arrive quatre mois plus tard. Cet ordre permet de dessiner le schéma du catalogue d'après ce que le flux doit afficher, et non d'après ce que l'API marchande émet. Elle alimente le catalogue par une API de synchronisation et ne partage aucun code avec le chemin client.

  3. 03

    Enrichissement et recommandation

    Étiquetage automatique et moteur de recommandation entrent en service au premier trimestre 2026. Le filtrage par catégorie s'appuie sur une taxonomie générée : les catégories renseignées par les marchands sont trop inégales d'une boutique à l'autre pour servir de critère.

  4. 04

    Exploitation, puis vitrine publique

    La console interne devient la surface d'exploitation — contrôle du catalogue, admission des marques, finances. La vitrine publique est livrée en dernier, son modèle de cache écrit comme contrainte avant la phase de design : non cachable par défaut, les routes s'y inscrivent explicitement, et les routes cachées n'exposent ni état de session ni fiche produit.

Exploitation et conformité

Le produit est instrumenté et soumis à une certification externe ; les deux ont pesé sur la conception.

Observabilité
Journalisation, alertes et triage automatique sur l'ensemble des services. Les temps de réponse de production sont mesurés par sondes dans les conteneurs plutôt que déduits des journaux applicatifs — c'est la seule façon d'attribuer une latence à la liaison entre un service et sa base plutôt qu'au code.
Attribution des commandes
L'attribution repose sur trois signaux indépendants plutôt qu'un seul : attribut de panier privé, paramètre de campagne porté par l'URL de paiement, et parcours client reconstitué par Shopify. Un signal suffit ; l'étiquette enregistrée conserve tout ce qui a concordé. Le mécanisme a été vérifié en conditions réelles sur trois boutiques.
Conformité canal de vente
Shopify classe Subline comme canal de vente, catégorie qui ajoute dix-huit exigences à la revue ordinaire : autorisations réduites au strict nécessaire et justifiées une à une, webhooks de confidentialité qui notifient effectivement le marchand, stock filtré au grain de la déclinaison, commission affichée à trois points du parcours marchand, déconnexion en autonomie.
Architecture Subline
1
2
3
4
5
Cliquez une couche pour déplier les onze composants et les huit parcours.
1
2
3
4
5

1 · Clients acheteurs

2

2 · Backends

2

3 · Base partagée

1

4 · Services

5

5 · Console interne

1
Au bord du système

Cinq couches

Onze composants répartis sur cinq couches, du client acheteur à la console interne. Dépliez le schéma pour ouvrir chaque composant, ses dépendances et huit parcours suivis de bout en bout.

Onze composants, quatorze services

Douze dépôts, quatorze services déployés, un seul Postgres à sept schémas, quatre usages distincts de l'IA. Sélectionnez un composant pour ses dépendances, un parcours pour suivre un chemin de bout en bout, ou un fournisseur pour voir qui l'appelle.

La plateforme

Capture de l'application mobile Subline : fiche produit en plein écran avec tailles, prix et mise en liste d'envies
Application mobileiOS et Android, une seule base de code.
Capture du site web Subline : page d'accueil de la boutique avec sélections éditoriales
Site webBoutique et pages de marque, rendues côté serveur.
Capture de la console interne Subline : supervision des services, commissions, pipeline d'étiquetage et tâches ML
Back-officeContrôle qualité du catalogue, admission des marques, finances, exploitation.

Stack

Flutter (iOS et Android) · React Router en rendu côté serveur · Python / FastAPI · Node · PostgreSQL, sept schémas · Supabase Auth et Storage · Redis · Google Gemini pour l'étiquetage et la prospection · Shopify Storefront et Admin · Firebase Cloud Messaging · Resend · Sentry · Better Stack · PostHog · Railway.

06

Contact

Écrivez-moi

Dites-moi ce que vous devez livrer et pour quand.

Base
Canton de Vaud. Disponible sur place pour les réunions à Lausanne et Genève.
Langues
Français et anglais courants, espagnol conversationnel