Ce repository représente l'API nous permettant de récupérer les cours de notre emploi du temps. Elle est particulière de par le fait qu'elle n'interroge aucune base de données, mais se content de "scrapper" une page web, et de renvoyer les données demandées sous forme de JSON. N'ayant aucun accès à la base de données contenant nos emploi du temps, nous n'avons trouvé aucune meilleur solution que celui-ci.
De plus, cette API a pour but d'être publique, afin de permettre à n'importe quel élève de notre campus de créer sa propre application requierant l'accès aux données de notre emploi du temps (ex: si quelqu'un souhaite développer une application mobile...)
L'API de calendz est développée avec les frameworks et outils suivants* :
Librairie | Version | Description |
---|---|---|
Node.js | 12.18.3 | Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. |
Adonis.js | 4.1 | The Node.js Framework highly focused on developer ergonomics, stability and confidence. |
Cheerio | 1.0.0-rc.3 | Fast, flexible, and lean implementation of core jQuery designed specifically for the server. |
*(Liste non exhaustive, uniquement les librairies principales sont présentées)
-
Installer Node 12.18.3
-
Créer un fichier
.env
Ă la source de ce repository contenant les valeurs suivantes (modifiables selon vos besoins)NODE_ENV=development HOST=0.0.0.0 PORT=3333 APP_NAME=calendz-api-calendar APP_URL=http://${HOST}:${PORT} # Please generate a new key: # > $ adonis key:generate APP_KEY= REDIS_HOST=calendz-redis REDIS_PORT=6379 REDIS_PASSWORD=password
- Lint :
npm run lint
(analyse la syntaxe du code grâce à ESLint) - Lint :
npm run lint:fix
(corrige la syntaxe du code grâce à ESLint) - Tests :
npm run test
(lance les tests effectués lors de l'intégration continue) - Tests :
npm run test:coverage
(calcule la couverture des tests (et génère un rapport html)) - Production :
npm run start
(lance via node, aucun process manager n'est inclus par défaut) - Développement :
npm run dev
(lance en environnement de développement avec hot-reloading)