January 2025 View Project ↗

Langkah — AI Travel Blog & Planner

A travel platform combining curated first-hand blog content organized by region, country, and city with an AI-powered itinerary planner chatbot.


Overview

Langkah (Indonesian for “step”) is a travel platform built around two core experiences: authentic travel stories from the road, and an AI-powered planner that uses those stories as context to help users plan their next trip.

The blog is organized in a Region → Country → City hierarchy, with each city covered across five categories — Food, Transportation, Nature, First Day, and Other. The AI chatbot is grounded in this real content, giving recommendations that go beyond generic travel advice.

Features

Travel Blog

  • Hierarchical structure – Posts organized by Region → Country → City for easy navigation
  • Five categories per city – Food, Transportation, Nature, First Day, and Other
  • Multi-level filtering – Filter simultaneously by region, country, city, and category
  • Responsive card grid – Clean layout with images, summaries, and category badges
  • Countries covered – Japan, China, Qatar, UAE, Germany, and Southeast Asia destinations

AI Travel Planner

  • Chat interface – Conversational UI powered by Google AI Studio
  • Blog-grounded responses – Chatbot has access to all blog content for authentic, specific advice
  • Personalized planning – Considers budget, trip duration, interests, and travel style
  • Itinerary generation – Day-by-day plans with activity suggestions

Tech Stack

  • React 18 + TypeScript — component-driven UI
  • Vite — fast build tooling
  • Tailwind CSS + shadcn/ui — utility-first styling with pre-built accessible components
  • React Router — client-side routing
  • TanStack Query — data fetching and caching
  • Framer Motion — smooth page and element animations
  • Google AI Studio — chatbot backend
  • Vercel — deployment and hosting

Architecture

Blog content is structured as TypeScript data files organized by geography (posts/east-asia/tokyo.ts, posts/europe/berlin.ts, etc.), making it straightforward to add new destinations. The chatbot receives the full blog corpus as context, allowing it to reference specific posts when making recommendations.

src/data/posts/
├── east-asia/
│   ├── tokyo.ts
│   ├── kyoto.ts
│   └── beijing.ts
├── middle-east/
│   ├── doha.ts
│   └── dubai.ts
├── europe/
└── southeast-asia/

Pages

RoutePurpose
/Hero + featured posts + stats
/blogFilterable blog listing
/blog/:slugIndividual post
/travel-plannerAI chatbot interface
/aboutAbout the project
← Back to Projects