nicolasdaudin / pulpito Goto Github PK
View Code? Open in Web Editor NEWHome Page: https://pulpito-app.herokuapp.com/
Home Page: https://pulpito-app.herokuapp.com/
Un moniteur sur Postman permet de lancer périodiquement une collection Postman.
Utile pour:
Infos:
Améliorer le temps de chargement.
Une requête de /common depuis le front prend mini 500ms, meme avec le cache (la partie /common) puis 500-700ms de plus pour l'affichage.
Icone: https://www.flaticon.com/fr/icone-premium/poulpe_1959989?related_id=1959989
Il y a déjà un cache au niveau d'axios mais on oourrait en rajoute un au niveau d'express
Y a ça https://github.com/kwhitley/apicache mais est-ce que ça marcherait si par ex on a les filtres ou le sort parameter? pas sûr ...
Par ex dans DestinationsController.test.js pas sûr qu'il faut plus ou moins de tests. Dans les error case on fait appel à l'API, on ne la mocke pas. Est-ce nécessaire? On est plus vraiment en isolation si on fait ça ....
Par ex les vacances scolaires ES c'est Semana Santa et Noel et Verano, les vacances scolaires FR par Zone c'est Toussaint, Noel, Hiver, Pâques puis éte.
On pourrait :
Le user devrait dire le minimum et maximum de jours qu'il veut partir ... (et si c'est supérieur à 2, du coup, mécaniquement on regarde plus les weekends.....)
Techniquement il faudra faire une query pour chaque période de vacances, pour cette origine et destination...
Rejoint un peu #33
Pour le side-project, permet d'ajouter des features qui utilisent la DB
Pas forcément besoin de pouvoir les relancer depuis l'interface, mais au moins avoir une liste, et pouvoir y accéder.
Existe déjà du côté de l'API.
Anglais-Français-Espagnol
USD et EUR
Si je publie sur Product Hunt, le public potentiel majoritaire c'est les USA, donc dollars $ USD ....
Oui, c'est une vanity feature. Le but de ce portfolio project c'est d'avoir un moteur de recherche "pour moi" de vols, voir si je peux l'utiliser ... l'API est suffisamment "robuste" pour me permettre de chercher des vols sur un weekend, ou la destination la moins chère prochainement ...
Et puis c'est tout. Pas besoin de plus.
Plutôt que de passer du temps là-dessus, sur une NOUVELLE feature qui va compliquer un peu tout (et qui apporte très très peu niveau back-end), je vais fermer le projet, pour avoir une "version propre" et s'il me reste du temps, j'améliore l'API, je la documente ....
J'avais déjà commencé mais j'ai rollbacké car peu d'intérêt pour un portfolio project
Si je publie sur Product Hunt, pourquoi pas.
voir https://github.com/mashpie/i18n-node
Code dans app.js:
const i18n = require('i18n');
i18n.configure({
locales: ['en-us', 'en-gb', 'fr', 'es'],
directory: `${__dirname}/locales`,
queryParameter: 'lang',
cookie: 'lang',
});
app.use(cookieParser()); // add cookie parser middleware
app.use(i18n.init);
Mais si je sépare currency et locale, alors je peux avoir que 'en' comme locale.
Faut rajouter cookieParser sinon on peut pas récupérer le cookie.
Et dans viewController:js on rajoute la langue comme cookie.
exports.getHome = (req, res) => {
if (req.query.lang) {
const lang = req.query.lang;
res.cookie('lang', lang, { maxAge: 900000 });
}
res.status(200).render('home');
};
Et les liens du menus des langues sont comme ça
a.dropdown-item(href='/?lang=en-us')=English
Et dans les templates pug, pour utiliser les lnagues on fait comme ça :
h2=`${__('Welcome to Pulpito')}`
i18n-node injecte dans l'objet response la propriété locale
h3=`locale is ${locale}`
et dans viewRoutes.js
router.get('/', viewController.getHome);
Cette feature existe déjà pour l'API, je dois donc la rendre dispo depuis l'interface.
Nécessite probablement un projet Github à part.
Data provider à contacter:
en cas d'erreur (par ex signup avec le même nom et email) la route /signup répond une erreur 500 non formatée (transmet directement l'erreur E11000 duplicate key de MONGO....
Pour l'instant, le backend formate les dates pour le français. Renvoyer des dates ISO et changer le front pour qu'il rendere les dates comme je le souhaite
Créer et gérer un profil utilisateur depuis l'interface (en d'autres termes, répliquer ce que l'API permet déjà de faire)
Skyscanner le fait avec le bouton 🖤 mais je pense que c'est pour des dates précises. Pas sûr que Kiwi le fasse.
Je pourrai faire ça avant d'voir la gestion des users, et dans chaque email envoyé un lien vers une route API pour stopper l'envoi.
Et moi en BDD, je peux garder un email associé à la recherche à effectuer
Niveau front, ce serait juste un formulaire avec un email pour envoyer les infos (et c'est tout, donc pas forcément besoin de la gestion des users dans le front, ou pas besoin d'être connecté...)
Pas besoin d'analyser si y a baisse ou hausse, on renvoit juste par email le résultat de la recherche, par ex cheapest weekend à Berlin ces 12 prochains mois.
cleanItineraryData est utilisé pour préparer les données pour le front mais est utilisé pour toutes les données, à chaque fois, au lieu des données qu'on va effectivement envoyer au front (par défault, 20 destinations/vols).
Pour améliorer la performance, on pourrait revoir cela.
Utiliser TDD
Ne pas être dépendant de l'API et modéliser notre propre système de données/objets pour les infos sur les flights (et peut-être mettre des vrais objets et pas des Object literals)
dans apiHelper.cleanItineraryData, retourner un nouvel objet au lieu de supprimer des champs de l'objet existant... comme ça on peut choisir les champs que l'on veut renvoyer, et non ce que l'on ne veut PAS renvoyer. Et pourrait ainsi avoir une méthode qui filtre les champs.
Permet aussi d'avoir un truc plus clean pour applyFilters, pour totalResults, .... au lieu d'avoir des mñethodes qui mutatent l'objet ...
L'API de Kiwi permet d'utiliser LON pour tous les aéroports de Londres, PAR pour ceux de Paris...
Ce sont des aires métropolitaines (https://en.wikivoyage.org/wiki/Metropolitan_area_airport_codes).
Mais comme sur le front on utilise une liste d'aéroports qui proviennent d'un data source JSON, ces aires métro n'apparaissent pas.
Idée:
Juste vérifier que l'UX et l'UI sont clairs, et que un user saura quoi faire lorsqu'il atterrit sur Pulpito, et à quoi ça sert.
Soit passer à React (via un free React template ?)
Soit passer à Static-Site Rendering (Next? Gatsby?) et deployer UI-IX sur Netlify et API sur Heroku (#microservices)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.