name: strapi
category: cms
public: false
database: required
hosting_hints:
- vps
- docker
- render
- railway
- strapi-cloud
audit_stack:
- analyze
- code-clean
- cso
- perf
- doc
plugins:
context7: yes
ui-ux-pro-max: no
gstack: no
---
Strapi (headless CMS, Node.js)
CMS headless Node.js, API REST + GraphQL. Admin panel React intégré. Consomé par frontend séparé (Next/Nuxt/Astro/React/etc.).
Detection signals
Strong signals (×3)
- DEP:
package.json contient "@strapi/strapi" OR "strapi"
- FILE:
config/server.js OR config/server.ts
- FILE:
config/admin.js OR config/admin.ts
- FILE:
config/database.js OR config/database.ts
Medium signals (×2)
- DIR:
src/api/
- DIR:
src/components/
- DIR:
config/env/
- FILE:
.strapi-updater.json
- DEP:
@strapi/plugin-*
Weak signals (×1)
- DIR:
public/uploads/
- FILE:
database/migrations/
- FILE:
favicon.png (admin panel favicon)
- DEP: "sqlite3" OR "pg" OR "mysql2" (DB adapter)
Implications
- Hébergement : VPS, Docker (Render, Railway, Fly), Strapi Cloud
- Base de données : REQUISE — SQLite (dev), PostgreSQL/MySQL (prod)
- SEO/GEO : N/A (admin panel non indexé) — mais le frontend qui consomme peut être public
- Surface sécurité : GRANDE — API publique, permissions par type de contenu, tokens API
- UI/UX : admin panel built-in (rarement customisé)
Typical pain points
- Permissions roles & users mal configurées (Public peut lire/écrire par défaut)
- API tokens permanents (non expirants) en dur dans frontend
- JWT_SECRET en dur ou faible
- ADMIN_JWT_SECRET non rotaté
- SQLite en production (verrouillage, pas scalable)
uploads/ non délégué à CDN/S3 → storage serveur plein
- Content types modifiés en prod sans migration (données perdues)
- Plugins marketplace obsolètes
- Pas de CI (schema.json versionné mais pas de tests API)
- Strapi v3 → v4 migration non effectuée (v3 EOL)
- Webhook secrets en dur
- CORS config mal restrictive
- Rate limiting absent (DDOS admin trivial)
config/database.js committé avec credentials
Interview questions (adaptive)
En plus du set minimum business :
- Version Strapi ? (v3 / v4 / v5)
- Base de données prod : PostgreSQL / MySQL / SQLite (warn si SQLite) ?
- Plugins marketplace utilisés ? (top 5)
- API consommateurs : frontend(s) propre(s) ? tierces parties ?
- Tokens API : permanents ou revocables ?
- Content-types count et profondeur (nested components) ?
- Uploads : local / S3 / Cloudinary / autre ?
- Déploiement : VPS / Docker / Strapi Cloud ?
- Webhooks configurés ? (revalidate frontend après changement content)
- GraphQL activé ?
- Rate limiting + CORS correctement configurés ?
- Environnement staging ?
Plugin recommendations
- context7 : ON — Strapi évolue (v4 → v5 breaking changes fréquents)
- ui-ux-pro-max : OFF (admin panel built-in, rarement customisé)
- gstack : OFF
Example project layout
package.json
config/
server.ts
admin.ts
database.ts
plugins.ts
env/
production/
database.ts
src/
api/
article/
controllers/
routes/
services/
content-types/
article/
schema.json
components/
seo/
metadata.json
extensions/
public/
uploads/
database/
migrations/