0.0.2 • Published 2 years ago

oklm v0.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

oklm

"au calme": Un code sain pour un dev serein.

Hello !

Nous sommes un groupe de développeurs actuellement en mission chez betagouv, et nous mettons notre énergie en commun pour identifier les pratiques utiles pour développer sereinement des produits durables (robustes et maintenables).

Tu trouveras ici, un chantier d'application réaliste en typescript/nodejs, mettant en oeuvres ces pratiques, ainsi que les discussions autour des différents choix que nous faisons.

N'hésite pas à rejoindre les discussions via une issue ou encore une PR !

A très vite !


Quelles pratiques pour être oklm ?

  • Découplage métier / infra
    • "Je change de lib sans toucher au code métier."
    • pour limiter notre dépendance à des libs tiers (API, base de données, ...)
    • isoler le métier pour mieux le concevoir
  • Découplage des domaines métiers entre eux
    • "Je change les règles d'un contexte métier sans toucher aux autres."
    • séparer les responsabilités indépendantes pour mieux les concevoir
  • Découpler les données du modèle de données
    • "Je pousse un nouveau schéma de BDD en prod, sans avoir à concevoir une migration."
    • pour se sentir libre de changer de modèle de données, même avec un système en production

Mais aussi

  • Ne pas être dépendant d'un framework
    • les frameworks introduisent des patterns utiles mais au coût d'une inversion du contrôle (le framework appelle mon code, je ne peux pas le contourner)
    • l'alternative proposée est d'introduire les patterns via des conventions, sans contraintes fortes (ie sans API)
  • S'outiller pour améliorer l'expérience de développement
    • intégration continue et déploiement continu (CI/CD)
    • analyse de code (typage, linters, autoformattage, visualisation, ...)
    • tests pour aider à la conception et aussi éviter les régressions
    • éventuellement, un peu de génération de code (si boilerplate répétitif)

Pourquoi adopter ces pratiques ?

  • Livrer vite et souvent
  • Pouvoir être responsable de la prod sans perdre sa sérennité
  • Créer un produit qui sera facile à reprendre par les contributeurs futurs
  • Un outil pour toute l'équipe
    • l'application répond aux besoins métier et en épouse les contours
    • le développement comme une conversation entre toutes les parties prenantes

Comment est-ce que je me servirais d'oklm ?

  • Comme starter pour mon nouveau projet typescript/node
  • Pour avoir des exemples fonctionnels concrets de certaines pratiques et d'usage de certaines libs
  • Comme support de discussion
    • partir d'un fork pour proposer un changement, une intégration, etc.

Oklm n'est pas...

  • une solution universelle et parfaite pour tous les projets
    • des choix ont été fait selon l'opinion des auteurs
  • un démonstrateur de technos dernier cri
  • fini et n'est pas destiné à l'être
    • mais nous visons que le "coeur" du code puisse être suffisamment stable pour être utilisé dans des situations réelles dans le futur.

Utilisation

Open in Gitpod

Prérequis

Node
Yarn

Technos utilisées

Languages & Frameworks

  • TypeScript is an open-source language which builds on JavaScript
  • React (mais ça pourrait être intéressant de donner des exemples de vue en Angular, Vue, Svelte, Vanilla, ...)

Tools

Cli

CI

Deploiement

Nous recommandons de déployer sur un PaaS.

Installation

yarn install

Lancer en local

yarn run watch

Licence

Voir le fichier LICENSE du dépot.

Notes

HackMD