Second Post

Bonjour à tous.

Je suis Maxence, alias T3kL, entre autres, la trentaine, développeur amateur depuis une petite moitié de ma vie, notamment sur HTML5, CSS3 et PHP. Le projet que je voudrais vous présenter aujourd'hui se nomme Zest , un moteur de blog Opensource

En savoir plus sur le projet

Genèse

Il y a quelques temps, je cherchais un moteur de blog (CMS) afin de pouvoir causer sur un sujet qui n'a pas de réel intérêt ici. Pour une fois, je n'avais pas envie de repartir sur du WordPress, et me suis donc mis à la recherche d'un système plus léger. Je cherchais un truc assez léger, mais surtout rapide à prendre en main et à installer, et me suis naturellement tourné vers les 'CMS file-based', autrement dit les CMS sans base de données. Je vous dresse rapidement le constat que j'ai pu en faire : Pour les fonctionnalités les plus basiques (écrire des billets, pages statiques, pouvoir rédiger en markdown), il faut compter plusieurs mégaoctets, une installation pas toujours aisée (nécessitant parfois Composer) et une bonne dose de patience. Et une interface back-end n'est pas toujours fournie !

En faisant mes recherches, je suis tombé sur cet article : Quand lightweight signifie fat and no features, qui exprime très bien ma pensée :)

C'est pour cela que je me suis lancé dans la programmation de Zest : Avoir un CMS léger, simple et capable du minimum.

Généralités et avancement

A l'heure où j'écris ces lignes, Zest n'assure que le minimum vital pour un blog. A l'index du site, on retrouve la liste des articles (billets) postés. Selon le nombre d'articles à afficher par page, défini dans le fichier de configuration, une pagination s'affiche. Bien sûr, il est possible d'accèder directement à un article spécifique. Coté administration, la page d'accueil recense la liste des articles existants, avec pour chaque, des liens permettants respectivement de consulter l'article, l'éditer ou le supprimer. Un bouton est également présent afin de créer un nouveau billet. A la création/édition, on trouve 3 zones de texte. Le premier permet de définir le titre du post, le second détermine l'URL par laquelle l'article sera accessible et enfin, le contenu de l'article, avec un onglet permettant de prévisualiser en direct. Coté contenu, le tout est rédigé en Markdown.

Coté technique

Puisque c'est ce qui nous intéresse sur ce forum, je vais à présent parler de l'intérieur de la bestiole.

Une grosse partie a été codée from scratch en PHP, car j'essaye vraiment de créer un script léger, maintenable, et évolutif. Aussi tout ou presque a été codé pour ce projet. Pour l'exemple, j'utilise habituellement Twig pour les templates, mais du fait de ses trop nombreux composants inutiles pour mon usage, j'ai créé mon propre moteur de templates sur lequel je n'implémente que l'essentiel. Le tout tient dans 34 fichiers pour 116Ko, thème par défault inclut.

Comme dit plus haut, Zest est file-based, c'est à dire qu'il n'utilise pas de base de données et stocke tout son contenu dans des fichiers XML. Cela inclut que le CMS est très rapide, puisqu'il ne lit que des fichiers, comme si tout était toujours en cache, ou presque.

Coté templates, je souhaite rendre la création de thèmes assez facile. Aussi j'ai créé un moteur de templates qui utilise la même syntaxe que Twig, avec les fonctionnalités en moins. Il est cependant possible d'assigner des variables et les utiliser, avec un niveau de profondeur infini, quelque soit le type de variable (objets avec ses attributs et méthodes également). Il gère également les boucles foreach et les tests de condition.

La configuration du site, qui se résume au titre du site, l'URL du site, le nombre d'articles à afficher par page et le mot de passe administrateur est stockée dans un fichier ini.

Enfin, Zest utilise 3 librairies externes en tout et pour tout :

  • Parsedown pour parser le markdown, avec son extension qui permet de gérer le Markdown extra
  • Un Router très simple qui me permet de rediriger la requête sur un controller selon les routes définies
  • jQuery utilisé pour le moment uniquement pour des requêtes Ajax

Objectifs

Dans un premier temps, mon objectif à court terme est d'implémenter les fonctions indispensables à un CMS. Je pense particulièrement à la création de pages statiques, qui permettrait d'avoir une page d'accueil digne de ce nom, une sidebar et/ou un menu dynamique, mais aussi à la possibilité d'uploader et d'insérer des images dans les articles.

Par la suite, j'aimerai que ce projet réussisse à attirer des utilisateurs. Pour cela, je tâcherai de continuer à l'améliorer afin de le rendre complet, sans pour autant en faire un mastodonte, afin de répondre à un besoin. Zest restera quoi qu'il soit un CMS léger, facile à prendre en main et à installer, sans pour autant le rendre ardu à personnaliser.

Coté pécuniaire, ce projet n'a pas vocation à me faire gagner d'argent.

Le projet et son originalité

Coté originalité, on repassera. Zest n'est qu'un CMS parmi tant d'autres. Cependant, j'espère pouvoir le démarquer par sa facilité d'utilisation et sa simplicité. Ce projet, tout d'abord pensé personnel avant de m'être décidé à la rendre public, est destiné aux utilisateurs qui souhaitent ouvrir un blog perso. Ce type de CMS existe, mais ils ne répondent pas selon moi au réel problème : Ils se disent lightweight et facile d'accès quand ils pèsent plus de 5 Mo pour parser un fichier MD, sans avoir un backend et nécessitant une installation par Composer.

Voilà le gros de ce projet, merci de m'avoir lu. Je répondrai volontiers à toutes vos remarques et questions constructives.

Merci !

First Post

Congraculations, your Zest Blog is well configurated !