UX Backlog
Remaining improvements identified during a UX audit of the dashboard and itinerary flows. High-impact items were addressed in PR #21.
Medium Impact
Silent failures on toggle/archive/update
ToggleFavorite, ArchiveButton, and updateItinerary all use updateMany or have empty error paths. The UI can show success even when the server silently did nothing (e.g. wrong user ID, 0 rows updated). Each should check the result and surface a toast on failure.
Files: components/dashboard/toggle-favorite.tsx, components/dashboard/archive-button.tsx, app/actions/update-itinerary.ts
Navigation asymmetry
- The back arrow only appears on the locked/paywall view — unlocked itinerary view has no back button.
- Restoring an archived itinerary has no confirmation dialog, but archiving does. Either both should confirm or neither should.
Files: app/dashboard/itinerary/[id]/page.tsx, components/dashboard/archive-button.tsx
Form state not persisted across navigation
- Sliders and date fields on the trip generator form reset if the user hits browser back.
- Clearing travel dates doesn't re-enable the manual duration input — the field stays hidden.
Files: components/dashboard/trip-generator-form.tsx
No filtering or sorting on the itineraries list
The saved trips page always sorts by createdAt: desc with no UI to change it. As the list grows, users can't filter by trip type, unlocked status, date range, or favorites.
Files: app/dashboard/saved/page.tsx
Lower Impact / Polish
Truncated titles have no tooltip
line-clamp-1 cuts off long itinerary titles with no way to read the full text. A tooltip or title attribute on the element would fix this.
Files: components/dashboard/itinerary-card.tsx
ToggleFavorite aria-label doesn't reflect current state
The aria-label is static — screen readers can't tell whether an itinerary is currently favorited or not. It should toggle between "Add to favorites" and "Remove from favorites".
Files: components/dashboard/toggle-favorite.tsx
No aria-busy on long-running operations
Generation, unlock, and date-save operations don't set aria-busy="true" on relevant containers. Screen reader users get no indication that something is in progress.
"Add Place" button duplicated in editor portal
The button appears twice on app/editor/page.tsx — once in the header area and once above the table. One should be removed.
Files: app/editor/page.tsx
Map "not available" message is misleading
When geocoding fails, the card reads "Generate a new itinerary to get interactive route maps" — but the user is already looking at a generated itinerary. The copy should explain that location data wasn't available for this trip rather than implying they need to start over.
Files: components/dashboard/itinerary-content.tsx
No undo / restore original after editing
Once edits to an itinerary section are saved, the AI-generated version is permanently overwritten with no way to revert. Consider storing the original generated content separately or adding a "Reset to original" option per section.
Files: components/dashboard/itinerary-content.tsx, app/actions/update-itinerary.ts