Github: https://github.com/mohdjami/Travel
Bereitgestellter Link: https://travelplanai.vercel.app/
YT-Video: https://youtu.be/oeioDsKQ4cQ?si=U35aBhen3L3zJAPq
Das obige Diagramm gibt einen allgemeinen Überblick über die Anwendung, Dienste und Lösungen.
Ich habe Next.js, Supabase, Gemini-1.5-flash Model, Shadcn, Typescript und Tailwind CSS genutzt.
Verwendet Supabase zur Authentifizierung und Autorisierung von Benutzern
Warum Supabase für Authentifizierung und Datenspeicherung?
Github
Anmeldeinformationen
Hier haben wir das Google gemini-1.5-Flash-Modell verwendet.
Next.js zum Erstellen einer Full-Stack-Anwendung.
Next.js ist aufgrund des serverseitigen Renderings, der statischen Site-Generierung und SEO eine ausgezeichnete Wahl.
Nach Erhalt der Benutzereinstellungen aus dem Reiseplanformular wird eine Anfrage mit allen Daten an das Backend gesendet.
Die Reiseroute wird dann in den Komponenten zur Anzeige der Daten verwendet. Ich habe auch Karten aus dem Prospekt integriert.
Gemini-1.5-flash ist ein von Google entwickeltes fortschrittliches KI-Modell, das die Reiseroutengenerierung in unserer Anwendung unterstützt. Dieses Modell zeichnet sich dadurch aus, dass es komplexe Reisepräferenzen versteht und detaillierte, personalisierte Reiserouten erstellt. Durch die Nutzung von Gemini-1.5-Flash sind wir in der Lage, hochgradig maßgeschneiderte Reisepläne zu erstellen, die Faktoren wie Budgetbeschränkungen, persönliche Interessen und Reisedauer berücksichtigen.
Es bietet mehrere entscheidende Vorteile für unsere Reiseroutenanwendung. Erstens kann die KI-gestützte Reiseroutenerstellung riesige Datenmengen über Reiseziele, Attraktionen und Benutzerpräferenzen viel schneller und effizienter verarbeiten als manuelle Methoden. Zweitens ermöglicht es hochgradig personalisierte Empfehlungen, die sich an die individuellen Interessen und Einschränkungen jedes Benutzers anpassen lassen. Schließlich kann die KI kontinuierlich lernen und ihre Vorschläge basierend auf Benutzerfeedback und Reisetrends verbessern und so sicherstellen, dass unsere Anwendung für Reisende relevant und wertvoll bleibt.
Leaflet ist eine Open-Source-JavaScript-Bibliothek für mobilfreundliche interaktive Karten. Um Leaflet-Karten in unsere Reiseroutenanwendung zu integrieren, haben wir die folgenden wichtigen Schritte befolgt:
Durch die Integration von Leaflet-Karten habe ich das Benutzererlebnis verbessert, indem ich visuellen Kontext für jedes Ziel und jede Aktivität innerhalb der generierten Reiserouten bereitgestellt habe.
Ich hatte auch ein Problem mit der Broschüre, nämlich dass die Kartenkomponente nicht zu 100 % geladen wurde, was zu Fehlern und einem nicht ordnungsgemäßen Laden der Seite führte. Also habe ich dieses Problem mit dieser Lösung gelöst.
Um das Benutzererlebnis zu verbessern und die API-Nutzung zu verwalten, habe ich ein auf Credits basierendes System implementiert. So funktioniert es:
Dieses System ermöglicht es uns, die API-Kosten zu kontrollieren und den Benutzern gleichzeitig Flexibilität bei der Nutzung des Dienstes zu bieten.
Das Dashboard bietet Benutzern einen Überblick über ihre generierten Reiserouten, verbleibenden Guthaben und Kontoinformationen. Zu den Hauptmerkmalen gehören:
Im Abschnitt „Benutzerprofil und Einstellungen“ können Benutzer ihre Erfahrung anpassen und ihre Kontoinformationen verwalten. Zu den Hauptmerkmalen dieses Abschnitts gehören:
Um die Antwortzeit für die Generierung von Itineray zu erhöhen, habe ich ein Warteschlangensystem implementiert.
Alle nicht kritischen Aufgaben wurden mithilfe der Warteschlange verarbeitet.
Obwohl nach der Generierung von Reiseplänen ein Fehler auftritt, sollte es einen Fallback-Mechanismus geben. Wenn beim Einspeisen von Daten in die Datenbank ein Fehler auftritt, gibt es derzeit keinen Fallback-Mechanismus, der dazu führt, dass die Reiseroute verloren geht, was behoben werden muss.
Im Moment habe ich die RLS-Richtlinien deaktiviert. Werde daran arbeiten
Problem:
Die Generierung der Reiserouten nimmt viel Zeit in Anspruch.
Es enthält mehrere Prozesse:
Lösung:
Durch sorgfältige Analyse der Route kann ich erkennen, dass das Einfügen von Benutzereinstellungen, das Einfügen von Antworten und das Aktualisieren von Credits unkritische Aufgaben sind und das Senden der Antwort an den Benutzer die wichtigste kritische Aufgabe ist.
So kann ich diese nicht kritischen Aufgaben mithilfe einer Warteschlange asynchron ausführen.
Dieser asynchrone Ansatz kann die Reaktionszeit erheblich verkürzen.
Die Implementierung eines Caching-Mechanismus kann die Leistung und Reaktionszeit unserer Reiseroutenanwendung erheblich verbessern. Durch das Zwischenspeichern häufig aufgerufener Daten, wie z. B. beliebte Ziele oder allgemeine Benutzerpräferenzen, können wir die Belastung unserer Server reduzieren und den Benutzern schnellere Ergebnisse liefern. Dies könnte besonders für wiederkehrende Benutzer von Vorteil sein oder für die Anzeige erster Empfehlungen, während personalisiertere Ergebnisse generiert werden.
Ich werde dies für das Dashboard tun. Ich werde die kürzlich besuchten Reisepläne zwischenspeichern, was die Anzahl der Anfragen an die Datenbank reduziert und die Anwendung letztendlich schneller macht.
Dockerisierte die Anwendung für eine einfache Bereitstellung im AWS Elastic Container Service, was der beste Ansatz für die automatische Skalierung ist.
Derzeit wird es auf Vercel zur Demonutzung bereitgestellt.