Comme je travaille plus ou moins à plein temps sur [Neotoma](https://neotoma.io) (anciennement Asheville) depuis l'été dernier, j'ai eu l'occasion de réellement me faire les dents sur les logiciels open source pour la première fois.

Je suis heureux de dire qu'en plus de travailler sur des référentiels accessibles au public spécifiques à Neotoma, j'ai créé quelques référentiels qui, je l'espère, seront utiles en tant que modules pour d'autres applications Node.js en général :

- [Park Ranger](https://github.com/markmhx/park-ranger) : un gestionnaire de dépendances spécifiques à l'environnement telles que les variables d'environnement, les fichiers de configuration et les fichiers de certificat SSL.

  On l'appelle « park ranger » car un programme informatique s'exécute toujours dans un environnement donné, souvent déterminé par son appareil ou par un environnement spécifique choisi au sein de cet appareil aux côtés d'autres environnements possibles. Et qui recherchez-vous lorsque vous profitez de l’environnement naturel et que vous vous posez des questions à ce sujet… ? C'est vrai, un garde-parc.

  J'ai essentiellement continué à réécrire le même code utilitaire dans mes référentiels pour gérer les différences basées sur l'environnement, principalement entre ma machine de développement locale et mon hôte de déploiement. J'ai donc tout refactorisé dans ce module pour accélérer les améliorations du code et la maintenance à l'avenir. Mon point de départ était [dotenv](https://github.com/motdotla/dotenv) mais j'ai vite réalisé que c'était trop simple pour mes besoins.

- [Hoist](https://github.com/markmhx/grunt-hoist) : une suite de tâches Grunt pour déployer des applications Node.js sur des hôtes et exécuter les procédures à distance associées.

  Semblable à mon expérience avec Park Ranger, je me suis retrouvé à réécrire de légères variations des mêmes routines de déploiement dans les référentiels (telles que la synchronisation des fichiers, l'exécution de "npm install" et le redémarrage du serveur distant). J'ai donc créé cet ensemble de tâches (qui se mettent automatiquement à la disposition des projets parents en tant que scripts npm) pour standardiser la manière dont j'aborde cela. Ils simplifient également considérablement mon approche du développement continu, même lorsque je crée de nouveaux micro-services ou que j'apporte des modifications rapides aux dépendances locales en cours de route.

- [Proxy](https://github.com/neotoma/proxy) : Un serveur proxy pour les requêtes HTTP et HTTPS.

  Alors que je commençais à héberger les premières versions de Neotoma pour des tests fermés, j'avais besoin d'un moyen simple de prendre en charge différents serveurs fonctionnant sur le même hôte sur plusieurs protocoles (HTTP ou HTTPS), ports et sous-domaines. Par exemple, le même hôte qui utilise HTTP pour servir la page de destination de Neotoma envoie également des requêtes HTTPS à son API sous-jacente et des requêtes HTTP et HTTPS à l'application Web Neotoma réelle s'exécutant sur un sous-domaine à des fins de test.

  Bien que ce référentiel réside sous l'organisation Neotoma, il peut être utilisé par toute personne souhaitant faire de même pour ses hôtes exécutant plusieurs serveurs.

Il existe un certain nombre d'autres référentiels publics en cours de développement plus directement liés à Neotoma que je ne listerai pas ici mais que vous pouvez trouver sur [l'organisation Neotoma GitHub](https://github.com/neotoma). Bien que je n'aie pas encore activement recherché de contributions, tous les référentiels répertoriés ci-dessus et dans cette organisation sont ouverts aux demandes d'extraction si vous souhaitez apporter des modifications !