← all devlogs
Devlog·SEP 15, 2026·7 MIN READ

Travel App UX: Why Mood-First Discovery Beats Filter Forms

Designing a travel app that starts with how you want to feel, not where you want to go — and the card-swipe interaction that made it work.

Dismissible(
  onDismissed: (direction) {
    if (direction == DismissDirection.endToStart) {
      HapticFeedback.mediumImpact();
      savedDestinations.add(destination);
    }
  },
  child: DestinationCard(destination: destination),
)

![Travel discovery](https://images.unsplash.com/photo-1488646953014-85cb44e25828?q=80&w=2076&auto=format&fit=crop)

Most travel apps start with a form: destination, dates, travelers. But people don't plan trips that way — they start with a feeling.

The mood-first approach

Instead of filters, the Travel App shows a visual feed of destinations. Users swipe through cards and save what resonates.

// Card swipe with haptic feedback on save
Dismissible(
  onDismissed: (direction) {
    if (direction == DismissDirection.endToStart) {
      HapticFeedback.mediumImpact();
      savedDestinations.add(destination);
    }
  },
  child: DestinationCard(destination: destination),
)

Why it works

The cognitive load of "pick from 50 countries" is replaced with "do you like this photo?" — a much easier decision.

The itinerary builder

Saved cards drag into a timeline:

ReorderableListView(
  onReorder: (oldIndex, newIndex) {
    setState(() => itinerary.reorder(oldIndex, newIndex));
  },
  children: itinerary.map((d) => ItineraryTile(d: d)).toList(),
)

The takeaway

The best UX matches how users actually think, not how the database is structured.

FLUTTERUXMOBILEDART