Collections
Le builder de SaaS par workspace: types de contenu, schémas, entrées, membres et abonnements.
La couche builder de Freelance OS. Tu définis un type de contenu, tu lui donnes un schéma, tu remplis des entrées. Le site public les affiche en listes et en pages de détail. Avec comptes end-users et abonnements Stripe par-dessus.
Ce que ça fait pour toi
Une Collection est un type de contenu que tu définis toi-même dans ton workspace. Un article, un bien immobilier, un membre d'annuaire, un produit, une offre d'emploi, ce que tu veux. Tu lui donnes un schéma (une liste de champs typés), puis tu stockes des entrées. C'est la primitive qui transforme Freelance OS en builder d'app, pas juste en outil de contenu figé.
Le schéma couvre 20 types de champs: texte, texte long, rich text, nombre, booléen, date, date et heure, url, email, téléphone, image, galerie d'images, sélection, multi-sélection, couleur, devise, pourcentage, référence vers une autre collection, lookup (suit une référence et affiche un champ de l'entrée liée) et rollup (agrège les entrées d'une autre collection qui pointent vers celle-ci). Chaque champ peut être requis, servir de titre, porter une liste d'options, et être traduit par locale.
Par-dessus la donnée, une couche d'accès. Une collection peut accepter des soumissions publiques depuis un formulaire du site. Elle peut être owner-scoped: chaque entrée est privée pour l'end-user qui l'a créée, avec email vérifié en option. Et le workspace peut vendre l'accès: tu crées des plans, tu fixes un prix Stripe, les end-users s'abonnent, tu suis le MRR par devise dans un tableau de bord dédié.
Comment ça marche
Schéma et types de champs
Tu construis le schéma dans l'éditeur de champs. Chaque champ a une clé, un label, un type, un ordre, une contrainte requis, et une config (aide, placeholder, min/max). Un champ est marqué comme titre: il sert de H1 sur la page de détail, de nom sur les cartes de liste, et de base pour le SEO.
- Référence: un champ qui pointe vers une entrée d'une autre collection
- Lookup: affiche un champ de l'entrée référencée, sans stocker de valeur
- Rollup: compte, somme, moyenne, min ou max sur les entrées liées
- Multi-sélection, devise, pourcentage, galerie d'images, couleur, téléphone
Entrées et statut
Chaque entrée (record) a un statut: brouillon, publié, archivé. Seules les entrées publiées sortent sur le site public. Tu édites en grille ou en formulaire, tu réordonnes, tu dupliques, tu supprimes en masse. Chaque entrée garde son historique de versions: tu peux relire une version passée et la restaurer.
Traduction par locale
Une entrée porte une donnée par défaut plus des surcharges par locale (data_i18n). Les champs traduisibles (texte, texte long, rich text, url, email) peuvent avoir une valeur différente par langue. Le rendu public choisit la bonne locale et retombe sur la valeur par défaut si la traduction manque.
Soumissions publiques et comptes end-users
Une collection peut accepter des entrées créées depuis un formulaire du site, avec un statut forcé (brouillon ou publié). En mode owner-scoped, chaque end-user ne voit que ses propres entrées, et tu peux exiger un email vérifié. L'annuaire des end-users est géré depuis l'admin: liste, comptage par utilisateur, export CSV, renvoi de l'email de vérification, retrait d'un compte.
Plans et abonnements
Le workspace peut vendre l'accès à son app. Tu crées des plans avec un prix mensuel ou annuel, dans la devise de ton choix. Le prix Stripe est immuable: changer le montant crée un nouveau prix et y branche le plan, les abonnements en cours gardent leur tarif d'origine. Les end-users passent au checkout via Stripe Connect, se désabonnent, et le tableau de bord facturation montre le MRR normalisé par devise. Cette partie reste inerte tant que le workspace n'a pas connecté Stripe.
Connecté à
Essaie Collections dans Freelance OS.
Plan Free, sans carte. Tu testes le module en conditions réelles.