01
Postgres, et les droits dans la base
Une vraie base relationnelle, pas un tableur déguisé : contraintes, clés étrangères, transactions. Et surtout, les règles d'accès vivent dans la base elle-même, pas dans l'application. Un employé ne peut pas lire la fiche d'un autre parce que la base refuse, pas parce qu'un écran a caché un bouton. Sur mon propre portail client, ça fait 54 politiques d'accès pour 12 tables — c'est la différence entre « on a oublié de vérifier à cet endroit-là » et « ce n'est pas possible ».
- PostgreSQL
- Row-level security
- Transactions
02
Le temps réel, sans interroger le serveur
La base publie ses changements, les écrans ouverts les reçoivent par WebSocket. Aucun écran ne redemande « du nouveau ? » toutes les cinq secondes : c'est ce qui vide une batterie de téléphone et ce qui fait grimper une facture d'hébergement pour rien. Un changement, un message, à ceux que ça regarde.
- WebSocket
- Postgres publications
03
Le hors-ligne, et ce qui arrive aux conflits
L'appareil écrit d'abord chez lui et garde une file d'attente des changements à envoyer. Au retour du réseau, la file part dans l'ordre. Quand deux personnes ont touché la même chose pendant la coupure, le logiciel ne choisit pas en silence : la règle est décidée champ par champ avec vous au moment du cadrage, et ce qui ne peut pas se trancher automatiquement remonte à quelqu'un. Un système qui « gère les conflits tout seul » gère surtout la perte de données de quelqu'un.
- File d'attente locale
- Resynchronisation
- Résolution par champ
04
Qui est qui, et qui a le droit
Authentification par courriel, et les rôles dans une table séparée du profil — jamais un champ « admin » sur la fiche de l'utilisateur, parce que la fiche, l'utilisateur peut la modifier. C'est une des erreurs les plus courantes et une des plus chères.
- Auth
- Table de rôles
- Sessions
05
Les fichiers et les photos
Photos de chantier, PDF signés, pièces jointes : dans un espace de stockage avec ses propres règles d'accès, pas dans un dossier public dont l'adresse finit par circuler. Un lien de photo de chantier qui traîne, c'est l'adresse d'un client chez un concurrent.
- Stockage privé
- Liens signés
06
Une base de code, trois cibles
Le web, l'iPhone et Android à partir du même code. Développeur certifié Apple et Google Play : c'est moi qui publie sur les deux boutiques, sous votre compte d'entreprise, et le compte reste le vôtre.
- React
- TypeScript
- App Store
- Google Play
07
Le code vous appartient
Dépôt Git à votre nom, l'historique complet, les scripts de base de données et la procédure de déploiement. Vous pouvez partir avec et le confier à quelqu'un d'autre, n'importe quand, sans me demander la permission ni un fichier.
- Git
- Migrations SQL
- Aucun verrou