# clem-travels - Full Ingestion Context > **Live at [travel.listsof30.com](https://travel.listsof30.com).** --- ## 1. Project Overview & Architecture # Clem's Travels **Live at [travel.listsof30.com](https://travel.listsof30.com).** An animation-driven travel site over the Lists of 30 travel archive. The landing page is a spinnable 3D globe: flight arcs draw in travel order, scrolling flies the camera continent to continent, and every marker opens the blog post written about that place. ## Stack Vite + React 19 + TypeScript + Tailwind 4 + React Router, deployed to Cloudflare Pages. Animation is anime.js v4 (arc timing) plus Motion (scroll, transitions). Maps are MapLibre GL (the globe) and Leaflet (the flat `/map` alternate), both on free OpenStreetMap tiles with no API key. No backend, no auth, no secrets. ## Routes - `/` the 3D globe journey - `/list` the filterable index (also the offline / reduced-motion backstop) - `/atlas` the layered map combining visited places, wishlist plans, and reviews - `/plans` curated repeatable trip plans and agendas - `/places/` one place and all its posts, the link you share (`/places/` resolves too and redirects to the canonical id) - `/map` the flat Leaflet map - `/random` deep link that flies to a random published place - `/privacy` privacy policy (zero telemetry disclosure) - `/terms` terms of use (non-commercial personal archive) ## Data `src/data/destinations.yaml` is the single source of truth: ~114 destinations reconciled from three human-owned sources with no scraping (the index post, the Substack `posts.csv` export, the Google My Maps KML). It is Zod-validated at `prebuild`, so a malformed dataset fails the build. Post preview thumbnails are the posts' own og:images, self-hosted. ## Commands ```bash pnpm dev # local dev (validates data first) pnpm build # production build (offline; validation + typecheck + bundle) pnpm validate:data # Zod-check the dataset pnpm fetch:previews --resume # refresh post thumbnails (manual, uses network) pnpm og # regenerate the social share card pnpm analyze # bundle size report ``` ## Syncing new places The Google My Map is the golden source for *where* Clemens has been. After adding a pin there: pnpm sync:map # fetch the map, append new pins, report drift pnpm data # validate + regenerate New pins are appended to `src/data/destinations.yaml` as `unpublished` stubs (a dot on the map, no post). Fix any `# [VERIFY-COUNTRY]` guesses, then enrich with a post/tagline when ready. The sync never edits or deletes existing entries; moved or removed pins are only reported. Preview: `pnpm sync:map --dry`. ## Adding a post Clemens publishes travel-advice posts on the 15th of each month. To add one, paste its listsof30 URL into a Claude Code session: the entry is derived from the URL, validated, its thumbnail fetched, and shown as a diff before commit. See `roadmap.md`. ## Deploy See `DEPLOY.md`. **Cloudflare Pages Direct Upload**, confirmed 2026-09-11 by `wrangler pages project list` reporting `Git Provider: No`. Pushing `main` deploys NOTHING here, unlike most projects in this vault. The human runs the DNS change, always. The human runs the deploy too, with one standing exception granted 2026-09-11: **adding a trip plan from a Wanderlog share link ships end to end without stopping at the PR.** That carve-out covers plans and nothing else. See `CLAUDE.md` → Working rules for its exact scope. ## Docs `prd.md` (why), `lineage.md` (decisions with rationale), `roadmap.md` (phases + open data debt), `CLAUDE.md` (project conventions and hard constraints). --- ## 2. Full Documentation ### Document: wanderlog-logo-permission-email.md # Permission request: using the Wanderlog logo on travel.listsof30.com Draft, not sent. Send from wanessalabs@gmail.com (or whichever address you want the reply on) to **support@wanderlog.com**. A second address, admin@wanderlog.com, appears in search results but support@ is the one listed in their Terms of Use, so it is the one to use. **Why this is being asked at all:** their Terms of Use section 12 says "Our trademarks and trade dress may not be used in connection with any product or service without the prior written consent of Travelchime Inc.", and they publish no brand or press page granting standing permission (`/press` and `/brand` both 404). So the only route to a logo is asking. Keep the ask narrow and specific. A vague "can I use your logo" invites a reflexive no; naming the exact placement and offering to follow their guidelines makes it easy to say yes. --- ## Subject Permission to use the Wanderlog logo as attribution on a personal travel site ## Body Hi Wanderlog team, I run a personal, non-commercial travel site at https://travel.listsof30.com. It sits over about twenty years of my own travel writing, and the "Where should I go?" section links out to trip plans I have built in Wanderlog. There are ten of them so far. I would like to display your logo as attribution, to make it obvious that the plans are built in and hosted by Wanderlog rather than by me. Specifically: - One instance of the logo on the /plans index page, next to a line of text that reads "Every one is built on Wanderlog". - The logo would be self-hosted on my own domain, because my content security policy blocks third-party images. No hotlinking to your servers. - It would link to wanderlog.com. - No implication of partnership, sponsorship, or endorsement. It is a credit. Two things for context. The site already links out to each plan with an "Open in Wanderlog" button, and each plan card already shows your own share image, which carries your logo, downloaded and self-hosted the same way. So this is a small step from what is already there, and I would rather ask than assume, given section 12 of your Terms of Use. The site has no ads, no paid tier, and sells nothing. It is a personal project. If you have brand guidelines covering clear space, minimum size, or acceptable colour variants, I will follow them. If you would rather I use a text credit only, that is completely fine and I will leave it as it is today. Thanks for building a good product. Happy to send a screenshot of the intended placement if that helps. Best, Clemens Wan https://travel.listsof30.com --- ## If they say yes 1. Save their reply. Written consent is the thing section 12 asks for, so keep it somewhere durable rather than in an inbox. 2. Get the asset from them if they offer one. Do NOT pull it from a third-party logo-scraping site such as brandfetch or superdevpro, which appear in search results but have no authority to license it. 3. Self-host it under `public/`, per the `img-src 'self'` CSP. The `asset-drop` skill covers placing and wiring it. 4. Follow whatever sizing and clear-space rules they send. ## If they say no, or never reply Leave it as text. The current credit already says the true thing, and `travel.listsof30.com/plans` links to wanderlog.com from the word itself. --- ## 3. Machine & Robot Information - Canonical manifest: /llms.txt - Full context: /llms-full.txt - Robots policy: /robots.txt