Use when choosing or connecting a third-party service — hosting, database, Redis, email, file storage, error tracking, analytics, real-time, video conferencing, payments — or when setting up Google properties (Cloud Console OAuth credentials, Search Console, Merchant Center, Tag Manager, Analytics, Ads), DNS and email authentication. Also use when asked "what should I use for X", when something works locally but not on serverless, or when planning the order in which to open accounts.
Scanned 10/1/2026
npx -y skills add Giovannyengamba/Otopcy-Softstart --skill otopcy-outils --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Otopcy Outils?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/giovannyengamba-otopcy-outils)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
name: otopcy-outils
description: Use when choosing or connecting a third-party service — hosting, database, Redis, email, file storage, error tracking, analytics, real-time, video conferencing, payments — or when setting up Google properties (Cloud Console OAuth credentials, Search Console, Merchant Center, Tag Manager, Analytics, Ads), DNS and email authentication. Also use when asked "what should I use for X", when something works locally but not on serverless, or when planning the order in which to open accounts.
---
# Comptes et outils — Otopcy SoftStart
Par Giovanny Engamba (giovannyengamba.com) · Otopcy (otopcy.com).
## La contrainte serverless commande tout
Une fonction démarre pour une requête et s'arrête. Le code ne lève pas
d'erreur — il **ne s'exécute pas**, ou diffère selon l'instance.
| Réflexe | À la place |
|---|---|
| `setInterval` | Cron externe + route signée par `CRON_SECRET` |
| WebSocket / Socket.IO / SSE depuis une route | **Ably** (jetons de capacité, présence, historique) |
| File en mémoire | **QStash**, ou boîte d'envoi en base |
| Cache en mémoire | **Redis** — et par accès HTTP (Upstash), un client TCP classique ne survit pas |
Déclencheurs à repérer : « temps réel », « live », « websocket »,
« notifications push navigateur », « au lieu de sonder », « chat »,
« présence », « collaboration », « tableau de bord live ».
## Pile de référence
Hébergement **Vercel** · base **PostgreSQL géré** (transactions
sérialisables et verrous consultatifs : tout le module paiements en
dépend) · **Upstash Redis** · e-mail **Resend** · fichiers **Cloudinary** ·
erreurs **Sentry** · mesure **PostHog** · temps réel **Ably** · carte
monde **Stripe** · Afrique : agrégateur local (PayPal ne fait ni XAF ni
XOF) · visio **Zoom** (OAuth serveur-à-serveur).
**Aucun n'est obligatoire** : clé absente ⇒ fonctionnalité inerte, jamais
l'application.
## Ordre d'ouverture
**Avant le code** : dépôt, base, hébergement.
**Avant la mise en ligne** : domaine + DNS, e-mail (*la vérification de
domaine prend du temps, lance-la tôt*), Sentry, mesure produit (*installée
avant le lancement, sinon les données du lancement sont perdues*).
**Avant d'encaisser** : prestataire de paiement (*validation marchande :
des jours à des semaines*), Redis.
**Après** : Search Console, Merchant Center, gestionnaire de balises,
Analytics, Ads.
## Google — cinq produits distincts
| Produit | Pour quoi |
|---|---|
| Cloud Console | Identifiants OAuth « Se connecter avec Google » |
| Search Console | Ce que le moteur comprend, plan de site |
| Merchant Center | Onglet Shopping |
| Tag Manager | Poser des balises sans redéployer |
| Analytics / Ads | Mesure et campagnes |
**Piège du profil de navigateur** : une propriété créée avec le mauvais
compte Google est invisible depuis l'autre. Décide une fois quel compte
possède quoi, écris-le, ouvre toujours depuis ce profil. Ajoute les autres
en utilisateurs plutôt que de recréer les propriétés.
### Connexion Google — l'invariant critique
```ts
if (claims.email_verified !== true) return refus('GOOGLE_EMAIL_NOT_VERIFIED');
```
Sans cette ligne : un attaquant crée un compte Google portant l'adresse de
sa victime sans la vérifier, clique « Se connecter avec Google », ton code
relie par e-mail et lui ouvre la session. Il n'a jamais eu accès à la boîte
mail. Rien n'a l'air anormal dans les journaux.
Aussi : **PKCE** en plus du `state` · cookies `state`/`verifier` à 5 min et
portés sur `/api/auth/oauth` · `state` supprimé après usage · erreurs vers
une page avec un **code**, pas un message.
⚠️ URI de redirection **identique** au caractère près entre le code et
Cloud Console — protocole et barre oblique finale compris. Première cause
de `redirect_uri_mismatch`, et le message ne dit pas ce qui diffère.
### Search Console
Vérifie par **DNS** (couvre les sous-domaines, survit aux redéploiements).
« Page explorée, actuellement non indexée » n'est pas une erreur technique.
Et si une organisation plus ancienne occupe déjà ton nom, aucun réglage ne
renverse ça.
### Gestionnaire de balises
Un script qui en **injecte d'autres**. Une campagne branchée depuis son
interface tire un domaine absent de ton dépôt ⇒ bloqué par la CSP **en
silence** ⇒ conversions à zéro sans explication. Liste ses domaines.
Chargement **après consentement** uniquement.
## DNS et e-mail
`A`/`CNAME` · **SPF** · **DKIM** · **DMARC** · `TXT` de vérification.
Un seul domaine canonique, l'autre en 301.
Vérifie un envoi réel vers une vraie boîte avant de considérer que c'est
fait — un domaine non vérifié n'envoie **rien**, sans erreur.
## Visio, si tu vends du direct
Une réunion par événement · **un lien par personne**, jamais partagé · le
droit d'assister se déduit des **commandes payées**, jamais de la table
d'inscription · webhook vérifié sur corps brut · sans clés, repli sur un
lien commun, et on le dit.
## Coût — les trois qui surprennent
Base : facturée aux **connexions**, pas à la taille (d'où le répartiteur).
Images : transformation et bande passante coûtent plus que le stockage.
Appels à un modèle d'IA : la seule ligne qui explose sans prévenir —
plafonne et journalise **avant** d'ouvrir au public.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!