Touri is an AI Tour Assistant that helps tourists 10x their experience!
An intelligent tourism companion powered by cutting-edge AI technology that provides personalized travel recommendations, real-time location insights, and interactive travel planning to make every journey unforgettable.
- 🤖 AI-Powered Chat Assistant - Interactive conversations with Touri for travel recommendations
- 📍 Smart Location Services - Real-time location detection and nearby place discovery
- 🗺️ Interactive Spot Discovery - Find restaurants, attractions, hotels, and hidden gems
- 💬 Multimodal Input - Text and image-based queries for enhanced travel planning
- 📱 Responsive Design - Seamless experience across desktop and mobile devices
- 🔄 Real-time Streaming - Live AI responses with instant feedback
- 💾 Session Persistence - Save and continue your travel conversations
- 🎯 Personalized Recommendations - Tailored suggestions based on your preferences
- Google Vertex AI - Enterprise-grade AI platform for scalable ML solutions
- Google Gemini 2.5 - Advanced multimodal AI model for text and image understanding
- Google Gemini Live - Real-time streaming AI conversations
- Firestore with MongoDB Compatibility - NoSQL database for flexible data storage
- Google Cloud Run - Serverless container platform for scalable deployment
- Google Places API - Comprehensive location data and place information
- Next.js 14 - React framework with App Router
- TypeScript - Type-safe JavaScript development
- Tailwind CSS - Utility-first CSS framework
- Shadcn/ui - Modern UI component library
- Dexie.js - IndexedDB wrapper for client-side storage
- React Query - Data fetching and state management
- Kinde Auth - Authentication and user management
- Node.js 18+
- pnpm (recommended) or npm
- Google Cloud Project with enabled APIs:
- Vertex AI API
- Places API
- Firestore API
-
Clone the repository
git clone https://github.com/Touri-KMIPN/main.git cd main -
Install dependencies
pnpm install
-
Environment Setup
Create a
.env.localfile in the root directory:# Google AI Configuration GOOGLE_GENAI_API_KEY=your_gemini_api_key GOOGLE_PLACES_API_KEY=your_places_api_key # Database Configuration MONGODB_URI=your_mongodb_connection_string # Authentication KINDE_CLIENT_ID=your_kinde_client_id KINDE_CLIENT_SECRET=your_kinde_client_secret KINDE_ISSUER_URL=your_kinde_issuer_url KINDE_SITE_URL=http://localhost:3000 KINDE_POST_LOGOUT_REDIRECT_URL=http://localhost:3000 KINDE_POST_LOGIN_REDIRECT_URL=http://localhost:3000/chat
-
Run the development server
pnpm dev
-
Open your browser
Navigate to http://localhost:3000
src/
├── app/ # Next.js App Router pages
│ ├── api/ # API endpoints
│ ├── chat/ # Chat interface pages
│ └── multimodal/ # Multimodal chat features
├── components/ # Reusable UI components
│ ├── chat/ # Chat-specific components
│ ├── ui/ # Base UI components
│ └── _layout/ # Layout components
├── lib/ # Utility functions and configurations
├── providers/ # React context providers
├── services/ # API services and business logic
│ ├── client/ # Client-side services
│ └── server/ # Server-side services
├── tools/ # AI tools and integrations
├── types/ # TypeScript type definitions
└── database/ # Database models and collections
- Conversational interface powered by Google Gemini 2.5
- Context-aware responses with memory of previous conversations
- Support for text and image inputs
- Real-time streaming responses
- Automatic location detection
- Nearby place recommendations
- Reverse geocoding for "Where am I?" queries
- Integration with Google Places API for comprehensive location data
- Interactive spot discovery and bookmarking
- Session-based conversation history
- Personalized recommendations based on user preferences
- Multimodal search capabilities
POST /api/ai/generate- Main AI chat endpoint with streaming supportGET /api/auth/*- Kinde authentication endpointsGET /api/resource/*- Resource management endpoints
We welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Issues: Report bugs or request features via GitHub Issues
- Discussions: Join our GitHub Discussions
- Email: Contact us at support@touri.com
- Build the Docker container
- Deploy to Google Cloud Run
- Configure environment variables
- Set up custom domain (optional)
For detailed deployment instructions, see our Deployment Guide.
Made with ❤️ by the Touri Team
Transforming travel experiences through AI innovation 🌟
