Compétence PortfolioFlow
Transformez une phrase en un site portfolio complet pour designer.
PortfolioFlow est une compétence destinée aux 5 grands domaines du design (paysage / graphisme / intérieur / industrie / UX). L'utilisateur décrit son besoin en une phrase (chinois ou anglais), et cette compétence génère automatiquement :
- Un site portfolio public complet (Hero + grille de projets + page détail + À propos + assistant IA)
- Un back-office pour le designer (connexion + CRUD projets + génération IA de descriptions + tableau de bord statistiques)
- Personnalisation des couleurs (5 thèmes prédéfinis + couleur personnalisée en hex)
- Fonctionnalités full-stack : Edge Functions / KV / Middleware / Authentification JWT
Le tout est déployé en un clic sur EdgeOne Pages via edgeone-pages-deploy.
Processus d'exécution après déclenchement (arbre de décision)
Après avoir reçu une demande correspondant aux critères de déclenchement de cette compétence, exécutez les étapes suivantes :
Étape 1 — Collecte des informations obligatoires
Si la description de l'utilisateur manque d'un des champs suivants, posez-lui une seule question pour tous les champs manquants (ne posez pas de questions répétées) :
| Champ | Obligatoire | Exemple | Valeur par défaut |
|---|---|---|---|
| Nom du designer | ✅ | "Li Bo" / "Alex Chen" | Nom d'utilisateur |
| Domaine de design | ✅ | Paysage / Graphisme / Intérieur / Industrie / UX | Demander |
| Titre du site | ❌ | "Lee · Portfolio design paysage" | "{Nom} Portfolio" |
| Phrase d'accroche | ❌ | "Le design au service de l'humain et du territoire" | Selon le domaine |
| Thème | ❌ | "Forêt nocturne" / couleur hex | "Forêt nocturne" |
| Nombre de projets préremplis | ❌ | 3-6 | 3 exemples |
Exemple de question :
J'ai besoin de quelques informations clés :
- Quel est votre domaine de design ? (Paysage/Graphisme/Intérieur/Industrie/UX)
- Quel est le nom du designer ?
- Quel thème souhaitez-vous ? (Forêt nocturne / Beige aube / Bleu profond océan / Orange soleil couchant / Minimaliste blanc pur, ou donnez une couleur hex)
Étape 2 — Déterminer la structure du projet
Consultez l'un des fichiers de référence suivants, puis chargez la section correspondant au domaine de l'utilisateur :
- Paysage / Intérieur / Industrie → section correspondante dans
references/portfolio-knowledge.md - Graphisme / UX → idem
Étape 3 — Générer le squelette du projet
Créez les fichiers suivants dans /tmp/portfolio-{slug}/ (n'utilisez pas cd pour entrer dans un chemin contenant des caractères spéciaux ; utilisez toujours un chemin absolu ou un chemin propre sous ~/Desktop/) :
portfolio-{slug}/
├── index.html # Page d'accueil (utiliser le modèle templates/index.html)
├── portfolio-detail.html # Détail d'un projet
├── admin.html # Interface d'administration
├── login.html # Page de connexion
├── assets/ # Images (upload utilisateur ou placeholders)
├── functions/
│ ├── api/
│ │ ├── auth.js # Authentification + JWT (réf. references/auth-jwt.md)
│ │ ├── portfolios.js # CRUD projets (réf. references/portfolio-crud.md)
│ │ ├── generate.js # Génération IA de description (réf. references/ai-generate.md)
│ │ └── stats.js # Statistiques de visites (réf. references/stats-kv.md)
│ └── _middleware.js # Validation JWT + CORS
└── README.md
Étape 4 — Injection des couleurs du thème
Les couleurs du thème choisi doivent être injectées simultanément dans :
- les variables CSS de
<style>deindex.html - au même endroit dans
admin.html - au même endroit dans
login.html
Les valeurs CSS des 5 thèmes prédéfinis se trouvent dans references/design-system.md.
Si l'utilisateur donne une couleur hex (ex. #FF6B6B), utilisez l'algorithme de "conversion hex en thème complet" décrit dans references/design-system.md pour générer la palette associée.
Étape 5 — Appel à la compétence de déploiement
Une fois tous les fichiers générés, appelez la compétence edgeone-pages-deploy pour effectuer le déploiement :
Phrase de déclenchement : deploy this portfolio to EdgeOne Pages
Répertoire du projet : ~/Desktop/portfolio-{slug}/
Après un déploiement réussi, vous devez impérativement :
- Guider l'utilisateur dans la console EdgeOne Pages pour lier les namespaces KV suivants (opération manuelle unique) :
- Variable
PORTFOLIO_USERS← base de comptes utilisateurs - Variable
PORTFOLIO_WORKS← base des projets - Variable
PORTFOLIO_STATS← statistiques de visites - Important : Les noms de variables doivent correspondre exactement. Après liaison KV, ils sont accessibles dans Edge Function en tant que variables globales, et non via
env.PORTFOLIO_WORKS(c'est une spécificité d'EdgeOne Pages).
- Variable
- Redéployer une fois pour que les liaisons KV prennent effet.
- Retourner l'URL d'accès + le compte administrateur par défaut (écrit automatiquement dans KV lors du premier déploiement).
Table de routage (references/ chargées à la demande)
Le tableau suivant aide l'IA à décider quel fichier de référence ouvrir selon le contexte :
| Mot-clé du contexte | Référence à charger |
|---|---|
| "couleur de thème / palette / style visuel / hex / couleur personnalisée" | references/design-system.md |
| "connexion / authentification / JWT / mot de passe / token" | references/auth-jwt.md |
| "projet / CRUD / ajouter / éditer / supprimer / créer / modifier" | references/portfolio-crud.md |
| "génération IA / description de projet / description automatique" | references/ai-generate.md |
| "statistiques / vues / PV / projets populaires / tableau de bord" | references/stats-kv.md |
| "déploiement / mise en ligne / EdgeOne / domaine / liaison KV" | references/deploy-workflow.md |
| "paysage / graphisme / intérieur / industrie / UX / vocabulaire métier" | references/portfolio-knowledge.md |
Contraintes fondamentales (à respecter impérativement)
-
Ne dépendre d'aucune clé API externe — par défaut, toutes les fonctionnalités (y compris la génération IA) doivent fonctionner sans configuration. Le fichier
references/ai-generate.mddécrit un mode optionnel avec DeepSeek, mais ce n'est pas le comportement par défaut. -
Ne jamais écrire dans un chemin utilisateur contenant des caractères spéciaux — privilégiez un chemin propre sous
~/Desktop/, sans caractères comme× ' " /. -
Pour les champs image, ne pas faire de vérification de type
startsWith('http')— faites confiance au champimgfourni ; utilisez tel quel un chemin local/assets/xxx.jpgou une URL distantehttps://.... -
Le secret JWT ne doit pas être codé en dur — lisez-le depuis la variable d'environnement
JWT_SECRETd'EdgeOne Pages ; après déploiement, guidez l'utilisateur pour le configurer manuellement dans la console. -
Après le premier déploiement réussi, vous devez retourner :
- L'URL publique
- Le lien vers la console
- Le compte administrateur par défaut (en invitant à changer le mot de passe dès la première connexion)
Améliorations optionnelles (à activer sur demande explicite de l'utilisateur)
| Ce que dit l'utilisateur | Activer |
|---|---|
| "Vrai IA" / "Utilise DeepSeek" / "IA plus puissante" | Plan B de references/ai-generate.md : double moteur DeepSeek |
| "Support bilingue" / "Chinois + Anglais" | Ajouter un dictionnaire i18n et un bouton de bascule dans index.html |
| "Ajouter RSS / abonnement" | Créer functions/api/rss.js |
| "Commentaires sur les projets" | Créer functions/api/comments.js + namespace KV pour les commentaires |
Exemples de demandes qui ne doivent pas déclencher cette compétence
- "Crée un site vitrine pour un projet paysager" (site spécifique, pas un portfolio de designer) → utiliser la compétence
landscapeflow - "Crée une landing page / SaaS / site e-commerce" → pas un portfolio
- "Transforme mon CV existant en page web" → c'est un CV, pas un portfolio
- Simple "Génère une description de projet avec IA" (sans construire le site) → pas besoin de la compétence complète
Contrat de sortie
Une fois l'exécution terminée, présentez le résultat structuré suivant à l'utilisateur :
✅ PortfolioFlow prêt
🌐 URL publique : https://portfolio-{slug}.edgeone.cool
🔐 Interface d'administration : https://portfolio-{slug}.edgeone.cool/admin
- Compte par défaut : [email protected]
- Mot de passe par défaut : PortfolioFlow_{6 caractères aléatoires}
- ⚠️ Veuillez modifier le mot de passe après la première connexion
📊 Capacités déployées :
✅ Page d'accueil du portfolio ({N} projets exemples)
✅ Page de détail des projets
✅ Interface d'administration (connexion / CRUD / génération IA)
✅ Edge Functions × 4
✅ KV Storage × 3
✅ Authentification JWT + Middleware CORS
🎨 Thème actuel : {nom du thème}
📁 Répertoire du projet : {chemin local}
Suggestions pour la suite :
1. Connectez-vous à l'interface d'administration pour ajouter vos vrais projets
2. Téléchargez votre photo de profil et vos images de couverture dans /assets/
3. Modifiez le copyright et les informations de contact dans le footer