# Config Decap CMS — backend Gitea/Forgejo (PKCE public, auth_endpoint explicite). # Aperçus « page-like » définis dans index.html (registerPreviewTemplate + preview.css). backend: name: gitea repo: florian/fonfontulipe branch: main base_url: https://git.fonfonlatulipe.com api_root: https://git.fonfonlatulipe.com/api/v1 auth_endpoint: https://git.fonfonlatulipe.com/login/oauth/authorize app_id: 8fa19961-d7ca-41d1-be8d-2111c8feafc1 media_folder: public/uploads public_folder: /uploads locale: fr site_url: https://fonfonlatulipe.com display_url: https://fonfonlatulipe.com logo_url: https://fonfonlatulipe.com/brand/favicon.png collections: - name: flash label: Flashs label_singular: Flash description: "Tes dessins de flash — l'encre sur fond blanc, et la photo du tatouage une fois adopté." folder: src/content/flash create: true format: frontmatter extension: md identifier_field: title summary: "{{title}}" sortable_fields: [order, title] view_filters: - { label: "À adopter", field: available, pattern: true } - { label: "Adoptés", field: available, pattern: false } view_groups: - { label: "Catégorie", field: category } fields: - { name: title, label: "Titre (option)", widget: string, required: false, hint: "Laisse vide si le flash n'a pas de nom." } - { name: image, label: "Image (l'encre, fond blanc)", widget: image, hint: "Le dessin sur fond blanc — le blanc se fond dans la carte." } - { name: tattoo, label: "Photo du tatouage réalisé (si adopté)", widget: image, required: false } - { name: category, label: "Catégorie", widget: select, default: crânes, options: [crânes, oiseaux, papillons, animaux, autres] } - { name: desc, label: "Détails (taille, placement…)", widget: text, required: false } - { name: price, label: "Prix (option)", widget: string, required: false } - { name: available, label: "À adopter (dispo)", widget: boolean, default: true } - { name: order, label: "Ordre", widget: number, default: 0, value_type: int } - name: shop label: Shop label_singular: Produit description: "Prints, tapis tuftés, tee-shirts et pièces uniques." folder: src/content/shop create: true format: frontmatter extension: md identifier_field: title summary: "{{title}}" sortable_fields: [order, title, cat] view_filters: - { label: "Prints", field: cat, pattern: print } - { label: "Tapis", field: cat, pattern: tapis } - { label: "Tee-shirts", field: cat, pattern: tee-shirt } - { label: "Pièces uniques", field: cat, pattern: original } - { label: "Épuisés", field: soldout, pattern: true } fields: - { name: title, label: "Titre", widget: string } - { name: cat, label: "Catégorie", widget: select, options: [print, tapis, tee-shirt, original] } - { name: image, label: "Image", widget: image } - { name: desc, label: "Description", widget: text, required: false } - { name: letter, label: "Envoyable en lettre (plat/léger)", widget: boolean, default: false } - { name: soldout, label: "Épuisé", widget: boolean, default: false } - { name: available, label: "Disponible", widget: boolean, default: true } - { name: order, label: "Ordre", widget: number, default: 0, value_type: int } - { name: price, label: "Prix (€)", widget: number, required: false, value_type: float, hint: "Le prix affiché. Vide seulement si variantes ci-dessous." } - { name: variant_label, label: "Étiquette des variantes", widget: string, required: false, hint: "Ex : « format », « taille »." } - name: variants label: "Variantes (nom + prix)" widget: list required: false label_singular: "Variante" summary: "{{name}} — {{price}} €" fields: - { name: name, label: "Nom (ex : A4, M)", widget: string } - { name: price, label: "Prix (€)", widget: number, value_type: float } - name: cv label: CV description: "Ton parcours : intro, compétences, films, expériences, formation, langues." files: - name: cv label: "Mon CV" file: src/content/cv/cv.json fields: - { name: lead, label: "Intro (chapeau)", widget: text } - { name: tools, label: "Outils maîtrisés", widget: list, field: { name: tool, widget: string } } - { name: soft, label: "Soft skills", widget: list, field: { name: skill, widget: string } } - { name: langs, label: "Langues", widget: list, field: { name: lang, widget: string } } - name: films label: "Films & séries" widget: list label_singular: "Film" summary: "{{fields.title}}" fields: - { name: title, label: "Titre", widget: string } - { name: role, label: "Rôle", widget: string } - { name: studio, label: "Studio", widget: string } - { name: tech, label: "Technique", widget: string } - { name: image, label: "Vignette", widget: image } - name: xp label: "Parcours" widget: list label_singular: "Expérience" summary: "{{fields.org}} — {{fields.when}}" fields: - { name: org, label: "Structure", widget: string } - { name: role, label: "Poste", widget: string } - { name: when, label: "Période", widget: string } - { name: place, label: "Lieu", widget: string, required: false } - { name: note, label: "Note", widget: text, required: false } - name: edu label: "Formation" widget: list label_singular: "Diplôme" summary: "{{fields.school}} — {{fields.when}}" fields: - { name: school, label: "École", widget: string } - { name: deg, label: "Diplôme", widget: string } - { name: when, label: "Période", widget: string } - name: settings label: Réglages description: "Ville, bio, infos RDV, réseaux, email de contact." files: - name: site label: "Site" file: src/content/settings/site.json fields: - { name: city, label: "Ville", widget: string } - { name: intro, label: "Intro (accueil)", widget: text, required: false } - { name: about, label: "À propos (bio)", widget: text, required: false } - { name: rdv_info, label: "Infos RDV tatouage", widget: text, required: false } - { name: available_for_motion, label: "Dispo missions motion", widget: boolean, default: false } - { name: instagram, label: "Instagram", widget: string } - { name: email, label: "Email de contact", widget: string }