Gestion de contenu
Le CMS de Proyecta est la couche de données principale de ton application — pas seulement des articles de blog et du contenu marketing, mais les véritables enregistrements sur lesquels ton app repose. Les collections sont provisionnées et alimentées avec de vrais exemples de contenu avant que l’interface n’existe, de sorte que ton app est livrée connectée à des données modifiables dès le premier build.
La plupart des apps Proyecta stockent leurs données dans le CMS intégré. Lorsque tu décris ton application, Proyecta conçoit un modèle de données, crée les collections nécessaires et les remplit avec du contenu réaliste — tout cela avant qu’une seule page ne soit construite. Tes pages lisent ensuite ce contenu réel et modifiable par le propriétaire via des hooks typés que l’IA câble pour toi. Pour une vue d’ensemble de la façon dont tout cela s’articule, consulte Comment fonctionnent les données de ton application.
Tu n’as pas besoin de t’en préoccuper pour commencer — tout se passe automatiquement. Cette page explique ce qui se passe en coulisses pour que tu puisses le façonner à ta guise.
Collections et singletons
Section intitulée « Collections et singletons »Le contenu est organisé en collections et singletons :
| Type | Ce que c’est | Exemples |
|---|---|---|
| Collection | Un type de contenu avec de nombreuses entrées — un schéma, plusieurs lignes. | posts, services, testimonials, catalogItems |
| Singleton | Un type de contenu avec exactement une entrée — contenu global, ponctuel. | businessInfo, seoSettings |
Une collection est une structure ; chaque entrée est un élément de cette structure (un article de blog, un service, une FAQ). Un singleton contient un seul enregistrement modifiable — l’identité de ton entreprise, ou le contenu hero/section d’une page.
Types de contenu disponibles
Section intitulée « Types de contenu disponibles »Proyecta propose des designs de collections prêts à l’emploi — des champs pertinents, des indications pour l’administration et du contenu de démarrage — pour les types d’enregistrements que les vraies entreprises gèrent : articles de blog, services, catalogue de produits, menu de restauration, témoignages et avis, membres d’équipe, galerie photos, FAQ, événements, adresses, ressources téléchargeables, offres d’emploi, formations, circuits et hébergements, entre autres.
Tu ne choisis rien dans un menu. Lorsque tu décris ton application, Proyecta sélectionne celles que ton brief requiert — le type de ton entreprise, les fonctionnalités demandées, ta langue — et les crée, pré-remplies avec du contenu réaliste. Si ton application a besoin de quelque chose qu’aucune d’elles ne couvre, Proyecta conçoit une collection personnalisée avec ses propres champs.
De ce fait, ton panneau d’administration affiche les collections de ton application — pas une liste figée. Il se construit à partir du modèle de contenu en direct de ton app, donc quelle que soit la collection créée par Proyecta, intégrée ou personnalisée, c’est exactement ce que tu vois et modifies. Deux apps Proyecta ont rarement le même ensemble de collections, et c’est voulu.
Chaque collection est composée de champs typés. Les types de champs sont appliqués de bout en bout — le panneau d’administration affiche l’éditeur approprié, et tes pages reçoivent des valeurs correctement typées.
| Type de champ | À utiliser pour |
|---|---|
string |
Valeurs courtes sur une ligne — titres, noms, adresses. |
text |
Un paragraphe de texte brut. |
markdown |
Texte enrichi long — corps d’articles, texte « à propos ». |
slug |
Identifiant URL, dérivé automatiquement d’un autre champ (ex. le titre). |
number |
Compteurs, notes, durées. |
money |
Un prix ou un montant en devise — affiché et édité comme une valeur monétaire. |
boolean |
Interrupteurs on/off. |
date |
Dates de calendrier. |
datetime |
Horodatages — dates de publication, heures de début d’événement. |
weeklyHours |
Horaires d’ouverture pour chaque jour de la semaine. |
asset |
Une image, une vidéo ou un PDF (stocké sous forme d’URL publique). |
reference |
Un lien vers une entrée dans une autre collection. |
enum |
Une valeur parmi une liste fixe de choix. |
array |
Une liste de chaînes — tags, numéros de téléphone, zones. |
blocks |
Blocs de contenu empilables — une page construite à partir de sections typées. |
json |
Données structurées qui ne rentrent dans aucun des types ci-dessus. |
Entrées, brouillons et publication
Section intitulée « Entrées, brouillons et publication »Une entrée est un élément dans une collection. Chaque entrée a un statut :
- Brouillon — un travail en cours ; jamais affiché sur ton site en ligne.
- Publié — en ligne et visible par les visiteurs.
- Archivé — retiré, mis de côté.
Tes pages publiques ne voient que les entrées publiées — les brouillons et les éléments archivés sont masqués automatiquement, ce qui te permet de préparer du contenu en toute sécurité avant qu’il ne soit mis en ligne.
Gérer le contenu (sans code)
Section intitulée « Gérer le contenu (sans code) »Il existe deux façons d’ajouter et de modifier du contenu — aucune ne nécessite de toucher au code :
- Demande à l’IA dans le chat. Décris simplement la modification et elle édite le bon contenu pour toi :
"Ajoute un témoignage de María González : 'Meilleur service de la ville', 5 étoiles.""Change le slogan dans Business Info en 'Café de especialidad en la Roma'.""Marque les cinq dernières soumissions du formulaire de contact comme lues."
- Le panneau d’administration de ton application. Chaque app publiée dispose d’un panneau d’administration intégré et protégé par connexion, où toi (et le personnel à qui tu accordes l’accès) gérez le contenu et les soumissions de formulaires directement — un éditeur de type tableur par collection, plus la boîte de réception des soumissions. Il se configure à partir du modèle de contenu en direct de ton application, donc les nouvelles collections y apparaissent automatiquement. Voir Panneau d’administration.
Gère ton contenu CMS via le panneau d’administration de ton application ou l’IA — un éditeur de contenu intégré au builder est prévu (voir Prochainement). Un navigateur d’enregistrements en temps réel pour les applications live est bientôt disponible.
Comment ton application lit le contenu
Section intitulée « Comment ton application lit le contenu »Tes pages lisent le contenu via un ensemble de hooks typés dans @/hooks/useContent — et l’IA écrit ce câblage pour toi. Tu décris la page ; Proyecta génère les composants qui appellent ces hooks sur tes vraies collections. Tu les touches rarement toi-même, mais voici ce qu’ils font :
| Hook | Ce qu’il fait |
|---|---|
useCollection('posts') |
Liste les entrées publiées d’une collection (avec filtre/tri/limite optionnels). |
useEntry('posts', slug) |
Récupère une entrée publiée par slug (pages de détail). |
useSingleton('businessInfo') |
Lit un singleton (informations sur l’entreprise, contenu de page). |
useFormSubmit('contactForm') |
Soumet un formulaire et signale les erreurs de validation. |
// Un index de blog — exactement le type de code que l'IA génère pour toiimport { useCollection } from '@/hooks/useContent';
function BlogList() { const { data: posts, isLoading } = useCollection('posts', { sort: 'published_at:desc' }); if (isLoading) return <Spinner />; return posts?.map((post) => <PostCard key={post._id} post={post} />);}Lorsque Proyecta génère des interfaces typées pour tes collections, les hooks deviennent entièrement typés (useCollection<Post>('posts')), et ton éditeur autocomplète chaque champ. Les lectures sont hydratées au premier rendu à partir d’un snapshot précalculé — les pages s’affichent instantanément et de façon SEO-friendly, puis se rafraîchissent en temps réel en arrière-plan.
Formulaires
Section intitulée « Formulaires »Les formulaires sont une fonctionnalité de premier plan, pas quelque chose que l’IA construit à la main. Intègre un bloc formulaire et il affiche les champs, valide les saisies, soumet et affiche un état de succès :
<FormBlock form="contactForm" />Les formulaires sont également prêts à l’emploi — un formulaire de contact, une demande de devis, un formulaire de réservation, un formulaire de commande, un formulaire d’inscription — et Proyecta câble le bon dans tes pages. Les soumissions arrivent dans la boîte de réception du panneau d’administration de ton application, et le propriétaire reçoit un email à chaque nouvelle soumission. Voir Formulaires pour une vue complète.
Localisation
Section intitulée « Localisation »Le contenu peut être traduit en plusieurs locales. Les champs marqués comme localisés stockent une valeur par langue, et les hooks de lecture les résolvent via une chaîne de repli (langue demandée → replis configurés → défaut) lorsque tu passes la locale active du visiteur :
const { data: posts } = useCollection('posts', { locale: 'es' });Les applications en une seule langue ignorent totalement les locales — il n’y a rien à configurer. Pour une vue d’ensemble de la traduction, voir Internationalisation.
Releases
Section intitulée « Releases »Une release regroupe plusieurs entrées pour qu’elles soient publiées (ou dépubliées) ensemble — prépare une mise en ligne coordonnée (un lancement, une nouvelle page produit, une mise à jour de FAQ) et bascule le tout en une seule fois.
Remarque : La publication automatique programmée n’est pas encore implémentée. Une release avec une date
scheduled_atpasse en statutscheduledmais doit être publiée manuellement. La publication automatique à l’heure programmée est prévue prochainement.
Patterns courants (laisse l’IA s’en charger)
Section intitulée « Patterns courants (laisse l’IA s’en charger) »Tu écris rarement ça à la main — décris ce que tu veux et Proyecta le construit sur tes vraies collections :
"Crée un blog. Chaque article a un titre, une image de couverture, un corps en texte enrichi, une catégorie et des tags. Routes publiques sur /blog et /blog/[slug], du plus récent au plus ancien.""Ajoute une section FAQ que le propriétaire peut modifier, groupée par catégorie.""Ajoute une liste de services réservables avec un formulaire de demande de devis.""Rends le site bilingue — anglais et espagnol — avec un sélecteur de langue.""Alimente les témoignages avec cinq avis réalistes pour un café."
Où vivent les données de ton application
Section intitulée « Où vivent les données de ton application »Le CMS est la maison par défaut du contenu durable et des enregistrements. Quelques types de données résident dans des systèmes dédiés :
| Type de données | Où elles vivent |
|---|---|
| Contenu & enregistrements (articles, services, annonces, FAQ, catalogue, réservations) | Proyecta CMS (cette page) — le défaut |
| État temps réel / comportemental (chat en direct, feeds, présence, état de jeu) | Store temps réel — bientôt disponible |
| Comptes utilisateurs & connexion | Auth |
| Produits, commandes, abonnements, paiements | Commerce |
| Fichiers uploadés & médias | Fichiers & Médias |
| Assets statiques intégrés au build | le répertoire public/ de ton projet |
Le CMS est le choix par défaut. Un store temps réel pour les comportements véritablement temps réel est bientôt disponible ; même alors, le contenu durable et le catalogue commerce resteront dans le CMS.
Prochainement
Section intitulée « Prochainement »- Éditeur de contenu intégré au builder — parcourir et modifier tes collections CMS directement depuis le tableau de bord du builder (aujourd’hui : gère le contenu via le panneau d’administration ou l’IA).
- Éditeur WYSIWYG pour le texte enrichi — édition visuelle pour les champs
markdown(aujourd’hui ils sont édités en markdown). - Publication automatique programmée — des releases qui se mettent en ligne automatiquement à l’heure prévue.
- Aperçu en direct des modifications de contenu dans ton application.
- Rôles de contenu — séparer les permissions des éditeurs de celles des développeurs.