Bonjour à tous! Je veux parler un peu de la façon dont j'ai fait, fait et ferai (probablement) pendant mon temps libre le prochain service de voyage pour rechercher des billets d'avion.
Capture d'écran d'une des pages:

Motivation et antécédents
Avant de m'envoler en vacances, je suis toujours confrontĂ© au problĂšme de choisir un point sur la carte oĂč s'envoler. Ce problĂšme apparemment facile peut ĂȘtre facilement rĂ©solu Ă l'aide d'agrĂ©gateurs de billets d'avion bien connus. Mais pour une raison quelconque, il est difficile pour moi de rĂ©soudre pour les raisons suivantes:
- la plupart des agrégateurs ont une recherche insuffisamment flexible (ringard, il n'y a pas de filtre par plage de dates inférieure à un mois);
- une recherche flexible à la «partout» et «chaque fois» dans la pratique est rarement utile;
Il convient Ă©galement de noter que les blogs de voyage (communautĂ©s sur les voyages sur les rĂ©seaux sociaux qui apparaissent dans mon flux et les sites proposant des offres spĂ©ciales, par exemple, fly4free ), aident probablement quelqu'un, mais pas moi. Les offres pour les dates souhaitĂ©es (mĂȘme approximativement) ne sont jamais disponibles.
En rĂ©flĂ©chissant Ă ce sujet, jâai dĂ©cidĂ© quâil valait la peine dâessayer de faire quelque chose de diffĂ©rent, mĂȘme si cela nâa pas fonctionnĂ©. Et le risque d'un Ă©chec complet (n'atteint pas les ventes) Ă©tait grand - je n'avais jamais fait le service seul auparavant, il y avait toujours des gars expĂ©rimentĂ©s Ă proximitĂ© et ils ont tous fait leur propre petit morceau de l'ensemble.
Afin de résoudre le problÚme de sélection, j'ai formé les fonctionnalités suivantes, qui me manquent:
- Kits avec billets d'avion (pour destinations, intĂ©rĂȘts, etc.);
- ItinĂ©raires difficiles et prĂȘts, par exemple, point A - point B - point C - point A; (comme il s'est avĂ©rĂ© plus tard, cette fonctionnalitĂ© est partiellement implĂ©mentĂ©e sur eightydays.me )
- Une carte oĂč vous pouvez construire vous-mĂȘme de tels itinĂ©raires complexes;
- Recherchez "partout" dans une plage de dates flexible avec des filtres de base.
Ensuite, je décrirai briÚvement chaque tentative et le résultat intermédiaire.
Tentative # 1 # 0
Enregistrez un beau nom de domaine sur godaddy.com . Recherchez une Ă©quipe pour votre propre argent. Location de serveur sur digitalocean.com . DĂ©but du dĂ©veloppement. Ăchec.
Tentative n ° 1
Cette fois, j'ai décidé de ne pas me précipiter avec un beau domaine, une équipe et un serveur magnifiques. Je fais tout localement sur mon ancien macbook air avec 4 Go de RAM.
Il a Ă©tĂ© dĂ©cidĂ© qu'il n'Ă©tait pas nĂ©cessaire de tout faire en mĂȘme temps, mais de faire au moins quelque chose. Quelque chose s'est avĂ©rĂ© ĂȘtre une caractĂ©ristique de la compilation avec des billets d'avion . Comme il me semblait (il y a environ deux mois), cela semblait le meilleur de tous. Pour cela, j'avais besoin:
- Comprendre les API qui donnent des tickets hors du cache et comprendre comment obtenir correctement des informations utiles; (ils sont bien décrits, cela n'a posé aucun problÚme)
- Créez votre propre API, qui la prépare à la visualisation sur le site; (en python et flacon, je savais déjà comment faire ça, ça va aussi);
- DĂ©velopper les postgres pour les rĂ©pertoires - aĂ©roports, pays, intĂ©rĂȘts, etc.; (mis en deux clics)
- DĂ©veloppez clickhouse pour stocker des donnĂ©es et des journaux intermĂ©diaires; (curieusement, il Ă©tait Ă©galement prĂȘt Ă l'emploi en 5 minutes, mĂȘme sur un ancien macbook air avec 4 Go de RAM)
- Se faire des amis (faire des dictionnaires) postgres et clickhouse;
- Trouvez un géo-service gratuit pour déterminer l'emplacement;
- Choisissez un cadre pour le site - le choix s'est porté sur la vue (vuetify), comme le cadre avec le seuil d'entrée le plus bas (selon plusieurs de mes amis). Toute mon expérience de développement Web jusqu'à présent n'a utilisé que flask-admin. Le développement Web a été le plus problématique.
Le rĂ©sultat peut ĂȘtre consultĂ© sur cheapster.travel/collections (Ă partir d'appareils mobiles - regardez les photos)
à ce stade, j'ai choisi un nom de domaine et loué un serveur à hetzner pour 5 $.
Au cours de cette tentative, la fonctionnalitĂ© ItinĂ©raires complexes prĂȘts a Ă©galement Ă©tĂ© implĂ©mentĂ©e sous la forme de collections distinctes, mais cette fonctionnalitĂ© est dĂ©sormais dĂ©sactivĂ©e en raison de problĂšmes de performances - un serveur Ă 5 $ ne suffit pas pour rĂ©soudre ce problĂšme.
Cette tentative a pris 3-4 semaines par intermittence (soir-nuit-week-end).
Tentative # 2
J'ai besoin d'une carte, ai-je pensĂ©, et j'ai commencĂ© Ă implĂ©menter les fonctionnalitĂ©s de la carte, oĂč vous pouvez crĂ©er vous-mĂȘme des itinĂ©raires aussi complexes .
AprĂšs une heure de recherche sur Google et une brĂšve consultation avec un ami, j'ai choisi mapbox , Ă savoir le package mapbox-gl-vue pour vue.
Avec la carte, tout s'est avéré beaucoup plus compliqué que prévu. Par conséquent, il a immédiatement abandonné l'espoir de devenir subjectivement beau. Ensuite, je ferai une autre tentative pour rendre la carte meilleure et plus fonctionnelle.
L'essence de cette fonctionnalité:
- Une carte avec les prix de votre ville s'affiche;
- Choisissez une option intéressante pour le prix sur la carte;
- AprÚs avoir choisi une option, les données sur la carte sont rechargées pour le point sélectionné;
- Répétez les étapes ci-dessus le nombre de fois souhaité.
Résultat de cheapster.travel/map
Cette tentative a pris 1 Ă 2 semaines (soir, nuit, week-end).
Tentative # 3
AprÚs les vacances du Nouvel An, le moment est venu pour la fonction Rechercher «partout» dans une plage de dates flexible .
C'est la tentative la plus simple - presque toutes les méthodes de l'API ont déjà été implémentées plus tÎt, il vous suffit de la tordre un peu et de la dessiner en utilisant vuetify (ayant déjà un peu d'expérience).
L'essence des fonctionnalités:
- Recherche simple mais fonctionnelle sur une plage de dates flexible;
- Il existe des filtres de base (pas de visa, uniquement direct, etc.)
Résultat de cheapster.travel/simple

Cette tentative a pris 14 heures. La tentative la plus réussie.
Au lieu de totaux
L'arriéré a encore un tas de tùches. J'espÚre que ces tentatives me rapprocheront de la résolution du problÚme de choix avant les vacances. Et encore mieux, sinon juste moi.
Passez une bonne journée à tous!