Skip to content

Instantly share code, notes, and snippets.

@xsellier
Created January 7, 2019 16:02
Show Gist options
  • Save xsellier/258b80eab54e2c1f48f4fec2f6548148 to your computer and use it in GitHub Desktop.
Save xsellier/258b80eab54e2c1f48f4fec2f6548148 to your computer and use it in GitHub Desktop.
Structure d'un projet
Pour avoir un projet moins ambigü, aucun fichier n'est au pluriel, tout au singulier, en vrai l'orthographe importe peu dans ces cas la.
Cette règle permet de gagner du temps lorsqu'on veut nommer des fichiers/répertoires.
nom-du-projet/
.gitignore
- config/
- default.json <= Options par défaut
- local.json <= Fichier ajouté une fois, mais ensuite mis dans le fichier .gitignore, comme ça tous les devs pourront rouler l'app localement
- custom-environment-variable.json <= Utilisé pour la prod, les variables secrètes sont des variables d'environnement, donc plus dur a récupérer en cas de hack
- lib/
- index.js <= Démarre tout
- model/
- nom-de-la-table/ <= Un répertoire par table, pour faire des jointures ou a toujours une table de départ, donc on peut respecter cette règle
index.js <= Contient les methodes utilitaires pour utiliser la table SQL
- sql/ <= Contient les fichiers SQL, un fichier par requete SQL
get-item-by-id.sql <= exemple d'un nom de fichier.
- module/ <= Contient des feature, par exemple pour un serveur web la feature d'authentification (par exemple).
Un répertoire par feature. Chaque répertoire peut contenir plusieurs fichier
- nom-de-la-feature
- resource/ <= Contient toutes les ressources utilisées par l'app.
- logger.js <= pour les logs
- server.js <= pour démarrer un serveur HTTP
- cache.js <= Pour initier la connexion a un serveur Redis. On ne met pas redis, defois que l'on veuiller changer de soft derriere
- database.js <= pareil plateforme agnostique, donc on sait qu'on utilise une DB, et ce fichier nous permet de nous y connecter
- index.js <= Ce fichier est un peu complexe, mais lorsqu'on le require on peut faire un resources.get('database'), et la on obtient une connexion vers la db.
- route/
- index.js <= parse le répertoire courant, analyse et crée les routes dynamiquements
- _root/ <= Mot clé disant que si un fichier est la dedans, la route associée est localhost/ (par exemple)
- login.js <= Définit la route login, qui une fois ajouté au répertoire devient http://localhost/login
- logout.js <= Définit la route login, qui une fois ajouté au répertoire devient http://localhost/logout
- user/
- get-inventory.js <= Définit la route logout, qui une fois ajouté au répertoire devient http://localhost/user/inventory
- schema/ <= Contient les validations poru les routes
- login.js
- logout.js
- user/
- get-inventory.js
- utils/ <= Contient des fonctions statiques utilisées dans plusieurs endroits dans l'app.
- sql-loader.js <= (c'est un exemple), lorsqu'on require ce fichier et qu'on fait un require('./utils/sql-loader').parse('./model/nom-de-la-table/sql'),
il retourne toutes les requetes en prepared statement.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment