Cet article est publié sous licence CC BY-NC-SA
Pour le site nous avons fait le choix du minimalisme. Il était très tentant de partir sur Ruby on Rails 3, mais nous n’avions pas besoin de toutes ses fonctionnalités.
Nous nous sommes ensuite penchés sur jekyll qui permet de convertir des fichiers statiques en page HTML. Mais nous souhaitions conserver un minimum de dynamisme.
Nous avons donc fait le choix de sinatra, qui remplit complètement ces pré-requis.
Pour les vues nous utilisons haml ainsi que sass pour les feuilles de style.
Nous sommes aussi parti sur HTML5 parce que son doctype est plus simple à retenir pour
commencer à utiliser les éléments implémentés par les navigateurs comme la validation de formulaire côté
client avec les nouveaux types d’input (email…) ainsi que les nouveaux attributs (required…).
Concernant CSS3 nous utilisons ses propriétés dans une logique d’amélioration progressive. Nous avons utilisé les media queries et la propriété -webkit-transform-3d (Safari uniquement) pour mettre en place l’effet cube sur la page réalisations.
Pour le blog nous aurions pu passer par des solutions dédiées en Ruby on Rails comme typo mais nos besoins étaient trop modestes pour cela.
De plus nous souhaitions nous baser sur git pour versionner nos billets, afin de pouvoir les rédiger depuis un simple shell.
Dans cette optique nous avons développé notre solution maison. L’idée est simple, nous avons un dépôt git avec deux branches, drafts et master. Lors de l’écriture d’un article nous travaillons dans la branche drafts. Une fois le billet terminé il est rapatrié dans le master avec git cherry-pick, puis pushé.
Chaque article correspond donc à un simple fichier. Pour gérer les tags, l’auteur ou encore les catégories nous avons repris un principe en place dans jekyll, le YAML Front Matter, c’est à dire que les informations relatives au billet sont stockées dans l’entête du fichier et parsées à l’import. Exemple:
--- author: Martin Catty title: Foo tags: - bar - baz ---
Sur le serveur une tâche thor se charge de de récupérer les fichiers écrits en Markdown dans la branche master, de les convertir en html, de récupérer les entêtes et de les importer en base de donnée.
Côté BDD c’est aussi le minimalisme qui prévaut avec sqlite3 et datamapper en guise d’ORM.
Pour le moment les articles sont automatiquement chargés par un cron job mais il serait plus efficace d’utiliser le hook post-receive du dépôt pour invoquer dynamiquement la tâche thor.
L’équipe Synbioz.
Libres d’être ensemble.
Nos conseils et ressources pour vos développements produit.