Behind the Scenes

About This Site

A personal family travel planner, built entirely through conversation with AI.

What is this?

This is a personal travel planning website for our family trip to Portugal in August–September 2026. It covers 14 nights across three cities β€” Porto, Lisbon, and Aveiro β€” with day-by-day itineraries, hotel and restaurant recommendations, interactive maps, a planning checklist, and travel tips.

It was made for Mariatta's family of four. It is not a commercial travel guide or affiliate site.

100% generated by Claude

Every line of code, every data file, every component, and every piece of content on this site was generated by Claude Code (Anthropic's AI coding assistant) through conversational prompting. No code was written by hand. The site was built iteratively over multiple prompts, with each prompt refining and expanding the previous result.

The technology stack β€” an Astro static site with TypeScript data files, scoped CSS, and client-side interactivity β€” was chosen and implemented entirely by Claude based on the requirements described in conversation.

How it was built: the prompts

Here is a summary of the prompts used to build this site from start to finish, to give you a sense of how generative AI can be used for travel planning through iterative conversation:

v1.1

April 2026 New features
  1. Track the travel budget

    A prompt asked to track travel budget and finances. Claude suggested several approaches including a budget page on the site, a spreadsheet, or a budgeting app. After the spreadsheet option was rejected, Claude built a full budget page with pre-filled estimates across 10 categories β€” flights, accommodation, food, transport, activities, shopping, and more.

  2. Log expenses during the trip

    The budget page was expanded with an expense log form to record individual purchases β€” with description, amount, category, budget item, city, and date. Through several rounds of prompting, Claude made the logged expenses update the category actuals in the table above, added the ability to edit and delete entries, and made unassigned expenses appear as dynamic rows in their category section.

  3. Visualize spending with charts

    Claude researched popular charting libraries and recommended Chart.js for its lightweight CDN-friendly approach. Three interactive charts were added: estimated vs actual by category (horizontal bar), spending by category (doughnut), and spending by city (doughnut). All charts update in real time as expenses are added or removed.

  4. Sync data between devices

    Since the budget data lives in localStorage (local to each browser), a prompt asked about syncing between phone and computer. Claude discussed several options and built an import/export feature β€” download expense data as a JSON file or copy to clipboard, then import on another device by uploading the file or pasting the JSON. Supports merging with existing data or replacing all data.

  5. Make it installable as a mobile app

    A discussion about creating a mobile app led to Claude recommending a Progressive Web App (PWA) as the simplest approach. Claude added a manifest, service worker, and app icons so family members can visit the site on their phone and add it to their home screen β€” it opens full-screen like a native app and works offline. A notification banner appears when site updates are available.

  6. Quick expense logging page

    A discussion about how the budget page would be used differently during planning vs travel led to creating a separate lightweight /log/ page optimized for quick on-the-go expense entry on a phone. A floating "+" button was also added to the budget page for quick access. The import/export was moved to its own /sync/ page to keep things focused.

  7. Multi-currency support (CAD/EUR)

    As a Canadian traveling to Portugal, pre-trip expenses are in CAD while on-the-ground spending is in EUR. Claude added a currency toggle and editable exchange rate to the budget page, a currency selector on every expense entry, and per-item native currency on all budget items. All totals, charts, and category breakdowns convert automatically to whichever display currency is selected.

  8. Custom favicon with personal branding

    Claude looked up the favicon from mariatta.ca on GitHub, then designed a new one combining the "M" monogram with a Portuguese flag diagonal split β€” green and red β€” to represent both Mariatta's personal brand and the Portugal trip.

v1.0

April 2026 Initial release
  1. Shift the dates

    The initial itinerary had arrival in Porto on August 21. The first prompt changed the arrival to August 22, and Claude shifted every date across all three cities β€” Porto, Lisbon, and Aveiro β€” including individual day dates, transport dates, and the overview page.

  2. Add an anniversary restaurant

    September 3 is our 20th wedding anniversary. Claude searched for fine dining restaurants in Aveiro suitable for the occasion, recommended Salpoente (Michelin-recognised, in a converted salt warehouse), and added it to both the itinerary and the restaurant list.

  3. Add PyCon Portugal

    PyCon Portugal takes place September 3–4 in Aveiro. Claude added two conference days to the itinerary, updated the return-to-Porto schedule, added a departure day (Sep 5), and adjusted the total trip length from 13 to 14 nights across all pages.

  4. Add maps and links to all places

    Claude added website URLs and Google Maps links to every activity across all three cities. This involved updating the Activity type to support optional url and mapUrl fields, updating the DayCard component to render clickable link buttons, and adding links to approximately 40+ activities.

  5. Add overview maps

    Each city page got an interactive map (using Leaflet and OpenStreetMap) showing all attractions, hotels, and restaurants as color-coded pins. Claude created a reusable MapSection component, added a MapPoint type, and populated coordinates for every point of interest across all three cities.

  6. Expand the travel tips

    The original overview page had 6 brief tips. Claude expanded this into 4 categorized sections (Money & Payments, Weather & Packing, Getting Around, Practical Tips) with 19 detailed tips covering currency, tipping culture, what to pack, inter-city trains, public transit cards, rideshare apps, power adapters, language, and health/safety.

  7. Adjust the return schedule

    The original plan had an evening return to Porto on Sep 4. A prompt changed this to a morning return on Sep 5, which meant updating the transport info, restructuring the last two days of the itinerary, and removing the need for an overnight in Porto.

  8. Add ice cream selfie spots

    A personal tradition: taking ice cream selfies at tech conferences. Claude researched gelato shops in Aveiro and added suggestions to both PyCon days β€” Gelados de Portugal (with Portuguese-inspired flavours like ovos moles) and Gelataria Italiana.

  9. Build a planning checklist

    Rather than building a separate Python backend (which was discussed and rejected as over-engineering), Claude built a checklist page within the existing Astro site. It has 8 categories and 48 items covering flights, accommodation, documents, PyCon registration, activity bookings, packing, and pre-departure tasks. Progress is tracked with checkboxes persisted in localStorage, with a progress bar and per-category completion counts.

  10. Portuguese color theme

    The color palette was updated to reflect the Portuguese flag β€” green, red, and yellow accents throughout the site, from the navigation active states to rating stars, section labels, progress bars, and the hero gradient.

  11. Add an About page

    This page β€” explaining what the site is, how it was made, and the prompts used to build it.

Install on your phone

This site works as an installable app on your phone. All pages are cached for offline use β€” perfect for checking the itinerary or travel tips when you don't have data.

  • iPhone (Safari): Tap the share button, then "Add to Home Screen"
  • Android (Chrome): Tap the browser menu, then "Install app" or "Add to Home Screen"

Blog posts about this project

Mariatta has written about the process of building these trip planners with AI:

Tools used

  • Claude Code (Claude Opus 4.6) β€” AI coding assistant by Anthropic, used for all code generation, web research, and content writing
  • Astro β€” static site framework
  • Leaflet + OpenStreetMap β€” interactive maps
  • Chart.js β€” budget charts
  • GitHub Pages β€” hosting