Node 16.x.x
NestJS 8.0.0
Sequelize 6.21.4
ESLint 8.0.1
TypeScript 4.3.5
.github
: configuration de la CI avec Github Actions.husky
: scripts de hook de commit avec Husky/public
: stockage des ressources non dynamique accessible publiquement/src
/constants
: fichiers de constantes/controllers
: logiques métier de chaque use case de l'application/helpers
: fichier d'utilitaire lié aux use cases/jobs
: configuration des jobs asynchrones et gestions des jobs entrants/routes
: configuration des routes avec Express.js/db
: configuration de la base de données avec Sequelize/config
: configuration d'accès à la base de données/migrations
: fichiers de migration de la structure de la base/models
: fichiers modèles des objets en base
/utils
: fonctions utilitaires communesapp.js
: point d'entrée de lancement du serveurmainWorker.js
: point d'entrée de lancement du workerserver.js
: gestion du serveur
.babelrc
: configuration pour Babel.editorconfig
: configuration par défaut de la syntaxe du code de l'éditeur.env
: à ajouter pour gérer les variables d'environnements (cf. exemple).eslintignore
: configuration pour ESLint.eslintrc.json
: configuration pour ESLint.prettierignore
: configuration pour Prettier.prettierrc.json
: configuration pour Prettier.sequelizerc
: configuration pour Sequelize.slugignore
: dossiers ou fichiers à exclure du package finale pendant la compilationProcfile
: configuration des process Heroku à lancer après déploiement
Pour lancer le projet vous avez besoin de Docker ainsi que de NodeJs.
yarn
Attention: il faut bien ajouter le fichier .env avec les variables d'environnement avant de lancer le build sur docker.
yarn
docker-compose up --build
Dans le cas où vous travaillez sur mac, le module Sharp peut poser problème, vous devez donc le réinstaller au sein du container:
docker exec -it api_new bash
rm -r node_modules/sharp/
npm install --platform=linux --arch=x64 sharp --legacy-peer-deps
Pour créer la DB:
yarn db:create
Pour lancer les migrations :
yarn db:migrate
APour remplir la base de données avec un utilisateur administrateur permettant la création par la suite d'autres utilisateurs :
yarn db:seed
La même chose que sans Docker, mais vous devez précéder les commandes par la suivante, et ne pas lancer la commande de création de DB:
docker exec -it api bash
Les identifiants de l'administrateur crée sont :
Adresse mail : admin@linkedout.fr
Mot de passe : Admin123!
psql -d linkedout -p 5432 -U linkedout -W
Entrez le mdp de la BD (dans le docker-compose: "linkedout"), puis exécutez la commande SQL.
Même chose que sans Docker, mais précédez par la commande suivante pour entrer dans le container de la DB:
docker exec -it db sh
yarn start:dev
docker-compose up
yarn build
yarn start
Pour pouvoir utiliser le worker en local il faut lancer une instance de Redis en local : https://redis.io/docs/getting-started
Il faut également enlever les variables d'environnement REDIS_URL et REDIS_TLS_URL afin que les modules Redis
et Bull utilisent leur configuration par défaut pour se connecter à Redis en local (127.0.0.1:6379
)
yarn worker:start:dev
yarn worker:start
yarn test:eslint
Ces deux commandes sont lancées par les hooks de commit.
ACTIONS_REMINDER_DELAY=
ADMIN_CANDIDATES_HZ=
ADMIN_CANDIDATES_LILLE=
ADMIN_CANDIDATES_LORIENT=
ADMIN_CANDIDATES_LYON=
ADMIN_CANDIDATES_PARIS=
ADMIN_CANDIDATES_RENNES=
ADMIN_COMPANIES_HZ=
ADMIN_COMPANIES_LILLE=
ADMIN_COMPANIES_LORIENT=
ADMIN_COMPANIES_LYON=
ADMIN_COMPANIES_PARIS=
ADMIN_COMPANIES_RENNES=
AWS_LAMBDA_URL=
AWSS3_BUCKET_NAME=
AWSS3_FILE_DIRECTORY=
AWSS3_ID=
AWSS3_IMAGE_DIRECTORY=
AWSS3_SECRET=
BITLY_TOKEN=
CDN_ID=
CV_10_REMINDER_DELAY=
CV_20_REMINDER_DELAY=
CV_PDF_GENERATION_AWS_URL=
CV_START_DELAY=
DATABASE_URL=
DEBUG_JOBS=
ENABLE_SF=
EXTERNAL_OFFERS_REMINDER_DELAY=
FRONT_URL=
INTERVIEW_TRAINING_REMINDER_DELAY
JWT_SECRET=
MAILJET_CONTACT_EMAIL=
MAILJET_FROM_EMAIL=
MAILJET_FROM_NAME=
MAILJET_NEWSLETTER_LIST_ID=
MAILJET_NEWSLETTER_PUB=
MAILJET_NEWSLETTER_SEC=
MAILJET_PUB=
MAILJET_SEC=
MAILJET_SUPPORT_EMAIL=
OFFER_ARCHIVE_REMINDER_DELAY=
OFFER_NO_RESPONSE_DELAY=
OFFER_REMINDER_DELAY=
PUSHER_API_KEY=
PUSHER_API_SECRET=
PUSHER_APP_ID=
PUSHER_URL=
REDIS_URL=
SALESFORCE_CLIENT_ID=
SALESFORCE_CLIENT_SECRET=
SALESFORCE_LOGIN_URL=
SALESFORCE_PASSWORD=
SALESFORCE_REDIRECT_URI=
SALESFORCE_SECURITY_TOKEN=
SALESFORCE_USERNAME=
SEND_OFFERS_EMAIL_AFTER_CV_PUBLISH_DELAY=
SERVER_TIMEOUT=
SF_INFOCO_CAMPAIGN_ID=
SF_ORGANIZATION_ID=
VIDEO_REMINDER_DELAY=
docker run --name linkedout-db-test -e POSTGRES_PASSWORD=linkedout -e POSTGRES_USER=linkedout -e POSTGRES_DB=linkedout -d -p 54300:5432 postgres
Vous avez besoin des données du fichier .env.test
pour les tests en local, et de renseigner le champ DATABASE_URL (
ex: postgresql://linkedout:linkedout@localhost:54300/linkedout
) avec l'adresse de l'instance Docker
NODE_ENV=dev-test yarn db:migrate
yarn test:e2e
est utilisé pour l'intégration continue pour lancer les tests avec les valeurs du fichier.env
NODE_ENV=dev-test yarn test:e2e
pour lancer les tests en local, en utilisant le fichier.env.test
Le déploiement se fait automatiquement grâce à Github Actions et Heroku.
Si un commit est poussé sur develop
, l'application sera déployé sur la pre-production : *
https://entourage-job-preprod.herokuapp.com*
Si un commit est poussé sur master
, l'application sera déployé sur la production : *
https://api.linkedout.fr*
Les tests sont effectués sur Github Actions avant de déployer le projet sur Heroku.