Backend de l'application J'agis, un service d'accompagnement des citoyens dans la réduction de leur empreinte carbone.
Ce composant porte :
- la persistance des données utilisateur via la BDD Postgresql
- la majeur partie de la logique métier et data du service exposée via des APIs aux clients web et mobile (les mêmes APIs pour les deux)
- l'interfaçage avec les services externes (Nos gestes climat, impactCO2, pres de chez nous, linky, etc)
Note
Pour plus d'informations sur les choix techniques, les processus de
développement, ainsi que l'intégration avec les services externes, veuillez
consulter la documentation dans le dossier ./docs.
- Language : nodejs (>=18.0.0)
- TypeScript
- PostgreSQL 14 en base de données
- ORM Prisma
- NestJS comme framework principale (controlers, injection de dépendances, ...)
- Jest pour le framework de tests
- Publicodes pour la modélisation/réutilisation de certains calculs métiers
- Infra de run : Scalingo.com
$ npm installLe backend a besoin d'une instance Postgresql (v14) pour s'exécuter, également une instance pour exécuter l'ensemble des tests d'intégration
Vous êtes libre de configuer en local ces instance selon vos préférences :
- via une installation standalone de Postgresql (plus efficace en terme de ressources)
- sous Mac https://postgresapp.com fonctionne très bien par exemple
- via docker (un fichier
docker-compose.ymlest fournit à titre d'exemple)
- Dupliquer le fichier
.env.run.sampleen.env.run, le remplir, ce fichier est utilisé pour les run local du back, cadnpm run start:dev - Dupliquer le fichier
.env.test.sampleen.env.test, le remplir, ce fichier est utilisé pour les lignes de commande de test, eg.npm run test - renseigner les URLs respectives de votre base de test base de dev
Si vous utilisez docker, vous avec les raccourcis suivants ;
npm run db:up
npm run db:downSinon lancer votre instance local postgresql
Cette procédure joue l'ensemble des script SQL permettant d'avoir la dernière version du schema SQL de l'application AGIR
npm run db:updatePour vérifier que tout marche bien
npm run test # pour tous les tests sauf ceux appelant une API externenpm run test:int # pour les tests d'intégration seulsnpm run test:unit # pour les tests unitaires seulsnpm run test:api # pour les tests api seulsnpm run test:ext # pour les tests faisant appel à des APIs externesIl faut utiliser un tunnel SSH pour accéder via un client local la base de données scalingo Il est nécessaire au préalable d'installer la ligne de commande Scalingo (https://doc.scalingo.com/platform/cli/start)
Il peut être également nécessaire de configurer sa clé SSH dans son compte Scalingo (https://doc.scalingo.com/platform/getting-started/setup-ssh-linux)
#Valeur de DATABASE_URL à récupérer dans l'interface web scalingo de agir-back-dev
scalingo --app agir-back-dev db-tunnel DATABASE_URL# build project
$ npm run build
# start backend
$ npm run start
ou bien
# watch mode
$ npm run start:dev