[{"data":1,"prerenderedAt":704},["ShallowReactive",2],{"projects-list":3},[4,35,680],{"id":5,"title":6,"body":7,"category":18,"date":19,"description":20,"extension":21,"images":22,"meta":24,"navigation":25,"path":26,"seo":27,"slug":28,"stem":29,"tags":30,"__hash__":34},"projects\u002Fprojects\u002Fhomieseeds.md","HomieSeeds, une conception originale entre un média et un shop en ligne",{"type":8,"value":9,"toc":14},"minimark",[10],[11,12,13],"p",{},"Décrivez ici le contexte, les objectifs et les résultats du projet.",{"title":15,"searchDepth":16,"depth":16,"links":17},"",2,[],"E-Commerce","2026-05-18","La fusion entre un média avancé et une boutique en ligne 100% originale conçu pour HomieSeeds. Née d'une expertise SEO de Loomedia, cette disposition avancée permet de bénéficier du référencement naturel à son plein potentiel par une structure solide et un maillage fort.","md",[23],"\u002Fimages\u002Fprojects\u002Fhomieseeds\u002Fcover.png",{},true,"\u002Fprojects\u002Fhomieseeds",{"title":6,"description":20},"homieseeds","projects\u002Fhomieseeds",[31,32,33],"Sylius","Shop","Custom","b7bRjgt0VjYQ76OLV4ZEZ7Q8F9waiLgZ9xjUJrTwhX0",{"id":36,"title":37,"body":38,"category":662,"date":663,"description":664,"extension":21,"images":665,"meta":671,"navigation":25,"path":672,"seo":673,"slug":674,"stem":675,"tags":676,"__hash__":679},"projects\u002Fprojects\u002Fcmp-loomedia.md","Loomedia, vers une plateforme centralisée de contenus multi-sites",{"type":8,"value":39,"toc":660},[40,78,84,87,109,116,119,145,168,187,513,524,538,574,581,588,617,623,656],[11,41,42,49,50,54,55,60,61,60,66,71,72,77],{},[43,44,48],"a",{"href":45,"rel":46},"https:\u002F\u002Floomedia.fr",[47],"nofollow","Loomedia",", c'est une agence SEO & Web qui souhaite ",[51,52,53],"strong",{},"développer son activité en ligne"," en déployant une flotte de sites et de services. Dans sa démarche, le patron de Loomedia veut mettre en ligne plusieurs sites de blogging, pages marketing et applications web, tous ces sites peuvent être construits avec des systèmes différents ; ",[43,56,59],{"href":57,"rel":58},"https:\u002F\u002Fwordpress.com\u002Ffr\u002F",[47],"WordPress",", ",[43,62,65],{"href":63,"rel":64},"https:\u002F\u002Fwebstudio.is\u002F",[47],"Webstudio",[43,67,70],{"href":68,"rel":69},"https:\u002F\u002Fprestashop.fr\u002F",[47],"Prestashop"," ou une ",[43,73,76],{"href":74,"rel":75},"https:\u002F\u002Floomedia.fr\u002Fservice\u002Fweb\u002Fwebsite",[47],"solution personnalisée",".",[79,80,81],"blockquote",{},[11,82,83],{},"Quelle que soit la solution finale, un contenu de qualité, c'est la clé d'un site qui fait du traffic.",[11,85,86],{},"Nous avons donc besoin d'un système capable de distribuer du contenu :",[88,89,90,94,97,100,103,106],"ul",{},[91,92,93],"li",{},"qui peut différer dans sa structure (article de blog, produit de boutique...)",[91,95,96],{},"à plusieurs sites",[91,98,99],{},"utilisant chacun des technologies différentes",[91,101,102],{},"depuis une même interface",[91,104,105],{},"rédigé par des journalistes indépendants partout dans le monde",[91,107,108],{},"travaillant sur un ou plusieurs de ces sites",[110,111],"flow-diagram",{":hub":112,":nodes":113,":sources":114,"caption":115},"{\"label\":\"CMP\",\"sub\":\"Payload\",\"icon\":\"solar-server-square-line-duotone\"}","[{\"label\":\"CMS\",\"sub\":\"Blog\",\"icon\":\"simple-icons-wordpress\",\"color\":\"yale\",\"desc\":\"Articles et contenus éditoriaux poussés vers un constructeur de site existant.\"},{\"label\":\"Marketing\",\"sub\":\"Landing et offres\",\"icon\":\"solar-window-frame-line-duotone\",\"color\":\"violet\",\"desc\":\"Landing pages et contenus marketing servis à un frontend.\"},{\"label\":\"Légal\",\"sub\":\"Obligations légales\",\"icon\":\"simple-icons-prestashop\",\"color\":\"mint\",\"desc\":\"Mentions légales, modalités, formulaires sont gérés.\"},{\"label\":\"Sur-mesure\",\"sub\":\"Solutions personnalisés\",\"icon\":\"solar-code-square-line-duotone\",\"color\":\"orange\",\"desc\":\"Une API envoie des données qui sont consommée par un front personnalisé, sans contrainte de technologie, opérateur...\"}]","[{\"label\":\"Rédacteurs\",\"sub\":\"partout dans le monde\",\"icon\":\"solar-users-group-rounded-line-duotone\",\"desc\":\"Des journalistes indépendants rédigent depuis une interface unique, sur un ou plusieurs sites.\"}]","Un contenu centralisé, distribué sur toute la toile Loomedia",[117,118],"hr",{},[11,120,121,122,125,126,130,131,134,135,138,139,144],{},"De telles solutions existent ; elles sont souvent ",[51,123,124],{},"payantes",", contiennent des ",[127,128,129],"em",{},"fonctionnalités essentielles en abonnement complémentaire"," (comme un CMS intégré) et vous vous retrouvez ",[51,132,133],{},"dépendant d'un système sur lequel vous n'avez pas la main"," et dont la ",[51,136,137],{},"facture augmente de façon exponentielle"," à mesure que votre entreprise grandit. On peut citer ",[43,140,143],{"href":141,"rel":142},"https:\u002F\u002Fwebflow.com\u002F",[47],"Webflow"," qui est réellement une excellente plateforme professionnelle ayant été envisagée, mais qui coche toutes ces cases contraignantes.",[11,146,147,148,153,154,157,158,161,162,167],{},"Heureusement, il existe aussi des solutions dites ",[43,149,152],{"href":150,"rel":151},"https:\u002F\u002Ffr.wikipedia.org\u002Fwiki\u002FOpen_source",[47],"Open-Source",", qui sont ",[51,155,156],{},"gratuites"," ou ",[127,159,160],{},"partiellement gratuites",", souvent en échange de plus d'effort au niveau de la mise en place et du développement. Celles-ci proposent relativement les mêmes fonctionnalités, mais si mon choix s'est finalement porté sur ",[43,163,166],{"href":164,"rel":165},"https:\u002F\u002Fpayloadcms.com\u002F",[47],"Payload",", c'est pour son évolutivité, son excellence dans la maintenance technique de son produit et principalement, car il répond à tous nos besoins.",[11,169,170,171,174,175,178,179,182,183,186],{},"À sa base, Payload propose de définir directement avec du code les fondations de votre projet et sa configuration. Il vient également avec une ",[51,172,173],{},"gestion basique des utilisateurs",", une ",[51,176,177],{},"librairie de médias"," et un ",[51,180,181],{},"dashboard administrateur",". On peut alors s'attaquer au vif du sujet : définir nos ",[127,184,185],{},"collections",". Un mot de jargon Payload qui défini très simplement la structure de données. Voyons ce que cela donne pour une définition d'article de base.",[188,189,190],"code-collapse",{},[191,192,197],"pre",{"className":193,"code":194,"filename":195,"language":196,"meta":15,"style":15},"language-js shiki shiki-themes github-light-high-contrast","export const HSArticles: CollectionConfig = {\n  slug: 'hs-articles',\n  labels: {\n    singular: 'Article',\n    plural: 'Articles',\n  },\n  fields: [\n    {\n      name: 'title',\n      label: 'Titre',\n      type: 'text',\n      required: true,\n    },\n    {\n      name: 'excerpt',\n      label: 'Extrait',\n      type: 'textarea',\n      admin: {\n        description: \"Résumé court de l'article pour les pages de listing.\",\n      },\n    },\n    {\n      name: 'content',\n      label: 'Contenu',\n      type: 'richText',\n      required: true,\n    },\n    {\n      name: 'coverImage',\n      label: 'Image de couverture',\n      type: 'upload',\n      relationTo: 'media',\n    },\n  ]\n}\n","app\u002Fsrc\u002Fpayload.config.ts","js",[198,199,200,230,242,248,259,270,276,282,288,299,310,321,332,338,343,353,363,373,379,390,396,401,406,416,426,436,445,450,455,465,475,485,496,501,507],"code",{"__ignoreMap":15},[201,202,205,209,212,216,219,223,226],"span",{"class":203,"line":204},"line",1,[201,206,208],{"class":207},"sTJeM","export",[201,210,211],{"class":207}," const",[201,213,215],{"class":214},"sacAq"," HSArticles",[201,217,218],{"class":207},":",[201,220,222],{"class":221},"sV4o_"," CollectionConfig",[201,224,225],{"class":207}," =",[201,227,229],{"class":228},"sigWx"," {\n",[201,231,232,235,239],{"class":203,"line":16},[201,233,234],{"class":228},"  slug: ",[201,236,238],{"class":237},"sYEJz","'hs-articles'",[201,240,241],{"class":228},",\n",[201,243,245],{"class":203,"line":244},3,[201,246,247],{"class":228},"  labels: {\n",[201,249,251,254,257],{"class":203,"line":250},4,[201,252,253],{"class":228},"    singular: ",[201,255,256],{"class":237},"'Article'",[201,258,241],{"class":228},[201,260,262,265,268],{"class":203,"line":261},5,[201,263,264],{"class":228},"    plural: ",[201,266,267],{"class":237},"'Articles'",[201,269,241],{"class":228},[201,271,273],{"class":203,"line":272},6,[201,274,275],{"class":228},"  },\n",[201,277,279],{"class":203,"line":278},7,[201,280,281],{"class":228},"  fields: [\n",[201,283,285],{"class":203,"line":284},8,[201,286,287],{"class":228},"    {\n",[201,289,291,294,297],{"class":203,"line":290},9,[201,292,293],{"class":228},"      name: ",[201,295,296],{"class":237},"'title'",[201,298,241],{"class":228},[201,300,302,305,308],{"class":203,"line":301},10,[201,303,304],{"class":228},"      label: ",[201,306,307],{"class":237},"'Titre'",[201,309,241],{"class":228},[201,311,313,316,319],{"class":203,"line":312},11,[201,314,315],{"class":228},"      type: ",[201,317,318],{"class":237},"'text'",[201,320,241],{"class":228},[201,322,324,327,330],{"class":203,"line":323},12,[201,325,326],{"class":228},"      required: ",[201,328,329],{"class":214},"true",[201,331,241],{"class":228},[201,333,335],{"class":203,"line":334},13,[201,336,337],{"class":228},"    },\n",[201,339,341],{"class":203,"line":340},14,[201,342,287],{"class":228},[201,344,346,348,351],{"class":203,"line":345},15,[201,347,293],{"class":228},[201,349,350],{"class":237},"'excerpt'",[201,352,241],{"class":228},[201,354,356,358,361],{"class":203,"line":355},16,[201,357,304],{"class":228},[201,359,360],{"class":237},"'Extrait'",[201,362,241],{"class":228},[201,364,366,368,371],{"class":203,"line":365},17,[201,367,315],{"class":228},[201,369,370],{"class":237},"'textarea'",[201,372,241],{"class":228},[201,374,376],{"class":203,"line":375},18,[201,377,378],{"class":228},"      admin: {\n",[201,380,382,385,388],{"class":203,"line":381},19,[201,383,384],{"class":228},"        description: ",[201,386,387],{"class":237},"\"Résumé court de l'article pour les pages de listing.\"",[201,389,241],{"class":228},[201,391,393],{"class":203,"line":392},20,[201,394,395],{"class":228},"      },\n",[201,397,399],{"class":203,"line":398},21,[201,400,337],{"class":228},[201,402,404],{"class":203,"line":403},22,[201,405,287],{"class":228},[201,407,409,411,414],{"class":203,"line":408},23,[201,410,293],{"class":228},[201,412,413],{"class":237},"'content'",[201,415,241],{"class":228},[201,417,419,421,424],{"class":203,"line":418},24,[201,420,304],{"class":228},[201,422,423],{"class":237},"'Contenu'",[201,425,241],{"class":228},[201,427,429,431,434],{"class":203,"line":428},25,[201,430,315],{"class":228},[201,432,433],{"class":237},"'richText'",[201,435,241],{"class":228},[201,437,439,441,443],{"class":203,"line":438},26,[201,440,326],{"class":228},[201,442,329],{"class":214},[201,444,241],{"class":228},[201,446,448],{"class":203,"line":447},27,[201,449,337],{"class":228},[201,451,453],{"class":203,"line":452},28,[201,454,287],{"class":228},[201,456,458,460,463],{"class":203,"line":457},29,[201,459,293],{"class":228},[201,461,462],{"class":237},"'coverImage'",[201,464,241],{"class":228},[201,466,468,470,473],{"class":203,"line":467},30,[201,469,304],{"class":228},[201,471,472],{"class":237},"'Image de couverture'",[201,474,241],{"class":228},[201,476,478,480,483],{"class":203,"line":477},31,[201,479,315],{"class":228},[201,481,482],{"class":237},"'upload'",[201,484,241],{"class":228},[201,486,488,491,494],{"class":203,"line":487},32,[201,489,490],{"class":228},"      relationTo: ",[201,492,493],{"class":237},"'media'",[201,495,241],{"class":228},[201,497,499],{"class":203,"line":498},33,[201,500,337],{"class":228},[201,502,504],{"class":203,"line":503},34,[201,505,506],{"class":228},"  ]\n",[201,508,510],{"class":203,"line":509},35,[201,511,512],{"class":228},"}\n",[11,514,515,516,519,520,523],{},"Sans rentrer dans trop de technicité, on peut assez facilement voir que l'ont défini une base : un slug et un label, singulier et pluriel. Également, on peut définir des champs de façon libre et customisable, ici, on part sur une base simple ; titre, extrait, contenu et image de couverture. À noter que l'ont défini aussi le type de données, le champ contenu est défini comme ",[198,517,518],{},"richText",", un éditeur visuel et la couverture, de type ",[198,521,522],{},"upload",", un fichier à télécharger.",[525,526,529],"callout",{"color":527,"icon":528},"info","i-solar-info-square-line-duotone",[11,530,531,532,534,535],{},"Il est possible de définir autant de ",[127,533,185],{}," que voulu, avec autant de champs et de types différents. Rendant cette structure parfaite pour un mélange entre ",[51,536,537],{},"cadre de travail prédéfini et solutions sur-mesure.",[539,540,541,554],"table",{},[542,543,544],"thead",{},[545,546,547,551],"tr",{},[548,549,550],"th",{},"Besoin du client",[548,552,553],{},"Solution déployée via Payload",[555,556,557,566],"tbody",{},[545,558,559,563],{},[560,561,562],"td",{},"Multi-sites",[560,564,565],{},"Payload propose de distribuer le contenu créé sur celui-ci de façon automatique et universelle, dès lors que la collection est définie.",[545,567,568,571],{},[560,569,570],{},"Auteurs & permissions",[560,572,573],{},"Avec un peu de configuration, il a été rapide de définir des rôles pour chaque site géré, ainsi des utilisateur peuvent être créé par le patron, à la volée et avec un accès limité à leur mission.",[11,575,576],{},[577,578],"img",{"alt":579,"src":580},"Dashboard Payload","\u002Fimages\u002Fprojects\u002Fcmp-loomedia\u002Fdashboard.png",[11,582,583,584,587],{},"Enfin, comme mentionné précédemment, Payload applique un excellent niveau de finition à son produit. Donc, avec un minimum d'effort développeur, les ",[51,585,586],{},"rédacteurs bénéficient d'outils améliorant leur productivité",", notamment :",[88,589,590,593,596,599,602,605,608,611],{},[91,591,592],{},"Dashboard unifié",[91,594,595],{},"Prévisualisation live",[91,597,598],{},"Brouillons et versionnage automatique",[91,600,601],{},"Éditeur de texte moderne et professionnel",[91,603,604],{},"Création et distribution de formulaires",[91,606,607],{},"Modèles de pages légales et marketing",[91,609,610],{},"Vérification SEO",[91,612,613,614],{},"Liens croisés entre les données ",[127,615,616],{},"(par exemple, ajouter un produit de la boutique A au milieu du contenu d'un article de blog du site B)",[11,618,619],{},[577,620],{"alt":621,"src":622},"Formulaire article Payload","\u002Fimages\u002Fprojects\u002Fcmp-loomedia\u002Fform.png",[11,624,625,626,631,632,635,636,639,640,643,644,647,648,651,652,655],{},"Plus qu'à ",[43,627,630],{"href":628,"rel":629},"http:\u002F\u002Fportfolio.dalios.xyz\u002Fprojects\u002Fhub-docker",[47],"déployer le site"," et le résultat est sans appel. Nous avons construit en moins de 2 semaines un système qui dépasse le CMS, nous avons une vraie ",[51,633,634],{},"plateforme"," de gestion de contenu. Et le meilleur reste à venir, nous avons une récupération des données ",[51,637,638],{},"2 à 6 fois plus rapide qu'avec WordPress",", la possibilité en ",[51,641,642],{},"quelques minutes"," de rajouter du ",[51,645,646],{},"contenu pour la totalité d'un nouveau site"," ; tout ça pour ",[51,649,650],{},"50 à 100€ par an"," en frais d'hébergement et de noms de domaine, sans ",[51,653,654],{},"jamais être limité techniquement"," ou bloqué par des modules additionnels coûteux. Là où notre exemple, Webflow, peut facilement atteindre les centaines, voire milliers d'euros à mesure que vous agrandissez votre infrastructure.",[657,658,659],"style",{},"html pre.shiki code .sTJeM, html code.shiki .sTJeM{--shiki-default:#A0111F}html pre.shiki code .sacAq, html code.shiki .sacAq{--shiki-default:#023B95}html pre.shiki code .sV4o_, html code.shiki .sV4o_{--shiki-default:#702C00}html pre.shiki code .sigWx, html code.shiki .sigWx{--shiki-default:#0E1116}html pre.shiki code .sYEJz, html code.shiki .sYEJz{--shiki-default:#032563}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":15,"searchDepth":16,"depth":16,"links":661},[],"Application Métier","2026-03-12","Une plateforme de gestion de contenu multi-sites élaborée pour Loomedia ; gérant les contenus, médias et pages marketing et légales de 5+ sites à travers de multiples rédacteurs via une interface moderne, efficace et adaptative à tous les challenges de croissance de Loomedia.",[666,667,668,669,670],"\u002Fimages\u002Fprojects\u002Fcmp-loomedia\u002Fcover.png","\u002Fimages\u002Fprojects\u002Fcmp-loomedia\u002F1.png","\u002Fimages\u002Fprojects\u002Fcmp-loomedia\u002F2.png","\u002Fimages\u002Fprojects\u002Fcmp-loomedia\u002F3.png","\u002Fimages\u002Fprojects\u002Fcmp-loomedia\u002F4.png",{},"\u002Fprojects\u002Fcmp-loomedia",{"title":37,"description":664},"cmp-loomedia","projects\u002Fcmp-loomedia",[677,678,166],"CMS","CMP","MYxu3vwPEzBFaybdRX00fa2m6ECz0SuMocqSuSbxyeA",{"id":681,"title":682,"body":683,"category":689,"date":690,"description":691,"extension":21,"images":692,"meta":694,"navigation":25,"path":695,"seo":696,"slug":697,"stem":698,"tags":699,"__hash__":703},"projects\u002Fprojects\u002Fhub-docker.md","Déployer une flotte de projets sur un même serveur",{"type":8,"value":684,"toc":687},[685],[11,686,13],{},{"title":15,"searchDepth":16,"depth":16,"links":688},[],"Automatisation","2025-12-05","Implémenter une solution efficace de déploiement de sites et d'applications ; résiliente aux erreurs et aux pertes de données, conçue pour accueillir n'importe quelle technologie et système dans un proxy global, réduisant les coûts de déploiement et de maintenance.",[693],"\u002Fimages\u002Fprojects\u002Fhub-docker\u002Fcover.png",{},"\u002Fprojects\u002Fhub-docker",{"title":682,"description":691},"hub-docker","projects\u002Fhub-docker",[700,701,702],"Docker","Proxy","Serveur","mJZM5q9INCbzWnbt5XHe8oHfPXYx6Gd5TxOg2KaCrXg",1782468854882]