• # plop

    Posté par (site web personnel) . En réponse au journal S’il vous plaît... architecture-moi un Kanboard !. Évalué à 5.

    S’ensuit alors une discussion sur la merditude de PHP qui ne peut mener nul part

    Faut dire aussi que ces derniers temps la réaction au troll est de plus en plus pathétique icitte...

    Disons que je suis curieux et que j’aimerais connaître vos choix sur les briques logicielles que vous affectionnez.
    Et vous, si vous deviez écrire ce Kanboard de zéro, quels seraient vos choix en matière de langage, framework ou architecture en général ?

    Pour ce cas précis j'en sais trop rien. Mais je peux raconter un poil la stack de deux de mes derniers projets (l'un pro, l'autre perso).

    Projet pro :

    Serveur

    • clojure avec compojure (en gros un DSL au dessus de ring) et liberator : parce que c'est un langage fonctionnel, dont la manière de gérer les données est vraiment sympa. Pour réaliser des traitements sur des ensembles, des listes de listes, etc c'est vraiment sympa. Le langage est expressif, concis et c'est d'autant plus agréable au jour le jour. Et ça tourne sur jvm donc le déploiement est plutôt facile (déployé sur heroku dans ce cas précis).
    • leiningen pour gérer les dépendances, le build, les tests, ... en clojure
    • postgresql comme base de données parce qu'elle fonctionne vraiment bien, qu'elle est dispo partout ou presque et parce que j'avais l'habitude de travailler avec (par exemple sur des données carto). Ha oui et on peut aller assez loin avec les possibilités de stockage et d'accès à des données json. On utilise korma pour l'accès à la DB depuis clojure.

    Client

    • angularjs pour architecturer le front (qui consomme des services REST fournis par le serveur). Plutôt bien, puissant mais assez complexe et contraignant.
    • sass et compass pour la partie css. Pourquoi lui et pas un autre ? Parce qu'on est plutôt orienté ruby et que c'est un meilleur choix dans ce cas que less qui est en js.
    • bower pour gérer les dépendances js et css
    • grunt pour builder, minifier, ...
    • karma, ng-scenario, phantomjs, jasmine pour les tests
    • yeoman pour gérer la stack front
    • node.js pour le serveur frontal et fournir tout cet ensemble

    Je pense que je n'ai pas du oublier grand chose.

    Projet perso (plus petit) : sinatra avec sprockets, sass, haml, bower et simplement jquery pour l'interactivité côté client.