Back to my work Case study, Accessible Trip Brazil

240 routes and 6 languages with 0 broken assets.

A complete international travel platform: destination and tour pages, long-form guides, a 205-image accessible gallery, and 6 full language editions, delivered as static output on Cloudflare's edge with 0 missing assets.

The build

The platform I built.

The Accessible Trip Brazil homepage
240 routes, 228 indexable, 6 languages
What I built

The work, up close.

15 pieces of the build, every one a real page from the live site.

The Accessible Trip Brazil homepage
Homepage

The homepage moves from inspiration to enquiry

A cinematic two-frame hero sets the emotional scale, then the page moves deliberately through destinations, tours, experience, proof and contact. Accessible travel buyers need more reassurance before making contact, so the order matters.

14 sections, 1 continuous journey

The tours catalog page
Tours catalog

Tours are comparable without reading prose

Image-led cards with destination names and explore actions make the inventory scannable, so a visitor can shortlist before committing to a long page.

9 destinations, 1 scannable grid

The Rio de Janeiro booking detail page
Tour detail

Tour pages answer every question before enquiry

Starting price, duration, tour type, overview, inclusions and exclusions, a stage-by-stage plan, route information, guest limits, languages, reviews and related tours, with the booking sidebar staying visible on desktop.

Every question, before the enquiry

The Amazonas booking detail page
Consistency

1 template serving all 9 destinations

The same detailed structure repeats across each destination, so a traveler comparing the Amazon against Rio is comparing like with like.

Repeatable across the catalog

The pricing page
Pricing

Tour pages support a decision, not a checkout

Cost and package context consolidated in one place for visitors comparing options, with clear routes back into tours and inquiry rather than a rigid transaction.

Consultation-led, not checkout-led

The photo gallery page
Gallery

205 images, each with access detail

The gallery is trust infrastructure, not decoration. Thumbnails load progressively, and opening one loads the full-resolution original while preloading its neighbours.

205 lightbox items, 2 curated groups

The About Us page with team profiles
Trust

The team page names the people behind the service

Brand story, named team profiles and testimonials. In accessible travel, travelers are buying confidence in people long before they buy an itinerary.

23+ years, named team

The contact page with WhatsApp actions
Conversion

Contact opens an enquiry rather than a checkout

WhatsApp, phone, email, a contact form and a lazily activated map. No account creation, because customized accessible travel starts with a conversation about individual needs.

No registration barrier

The blog index
Editorial

Guides target travellers at the research stage

A blog connecting recent posts, categories and long-form guides, giving visitors who are not ready to enquire a productive next action.

Search entry points earlier in the funnel

A long-form article about Rio attractions
Long-form content

Long-form destination guides built to rank

In-depth articles with hierarchical headings, real imagery and internal links into the commercial pages, covering attractions across 14 destinations and topics.

16 editorial guides

An accessible national parks guide
Accessible travel content

Access content drawn from first-hand experience

Guides on accessible parks, beaches and wheelchair travel in Brazil are both genuinely useful and impossible for a generic operator to imitate credibly.

Expertise as content strategy

The Portuguese edition of the homepage
Multilingual

6 complete language editions, not a translated homepage

Navigation, copy, chat text, metadata, language relationships and calls to action are all localized, so an international visitor can keep researching in their language after leaving the homepage.

240 localized routes, 228 indexable

The Iguazu booking detail page
Catalog depth

9 destinations, each documented to the same depth

Iguazu carries the same pricing, duration, inclusions, plan and review structure as Rio. Depth is consistent rather than concentrated on the flagship.

No thin pages in the catalog

The Salvador booking detail page
Consistency

1 template holding 240 routes

Repeating a rich page structure across 9 destinations and 6 languages is what turns 40 pages into 240 without the quality dropping.

40 routes, 6 editions, 240 total

The Spanish edition of the homepage
Localization

Every route exists in all 6 languages

A Spanish visitor gets the whole site in Spanish: navigation, tours, articles, chat copy and calls to action, so research never breaks back into English.

Complete editions, end to end

The client.

Accessible Trip Brazil runs guided, accessibility-focused travel across Brazil, serving travelers with disabilities, their companions and mixed-ability groups with more than 23 years of operating experience.

23+Years operating
205Gallery images
6Language editions
At a glance

The engagement, on paper.

Client
Accessible Trip Brazil, specialists in inclusive and accessible tourism throughout Brazil.
Industry
Accessible tourism, private tours and destination experiences for international travelers.
Scope
240 localized routes covering destinations, tour detail, pricing, gallery, editorial guides, company pages and inquiry paths.
Delivery
Coded static HTML, CSS and a custom JavaScript interaction layer, built with Vite and served from Cloudflare Pages.
Languages
English, Brazilian Portuguese, Spanish, French, German and Italian, each a complete edition.
Media
467 preserved media files totalling roughly 124 MB, and 712 audited local asset targets with zero missing.
Conversion model
Consultation and booking inquiries through WhatsApp, forms, email and telephone, with no account required.
The challenge

6 problems with building at this scale.

A specialist audience, 6 languages, a heavy media library and a delivery model that had to be both fast and simple to operate.

A specialist audience

Travelers with disabilities and their companions need more information and more confidence before contacting a company than a typical leisure buyer.

Complete language paths

Six locales had to cover the entire route set, not just a translated homepage that abandons visitors on the second click.

An image-heavy experience

Hundreds of high-resolution destination photographs had to keep their quality while the pages stayed responsive.

Behaviour is part of the design

Carousels, hero transitions, entrance motion, sticky navigation and the lightbox are all things visitors perceive as the product.

Runtime complexity to remove

Public pages should not depend on a live CMS, PHP runtime and database on every single request.

Real deployment limits

The final package had to fit a manual Cloudflare workflow with hard file-count and file-size constraints.

Project goals

7 goals, in order.

01

Inspire, then reassure

Lead with the emotional pull of Brazil, then answer the practical access questions that follow.

02

Give every destination depth

Tour pages that answer pricing, duration, inclusions, route and guest questions before an enquiry.

03

Localize completely

Six full editions so an international visitor never falls back into English mid-journey.

04

Make the media a feature

Treat 205 high-resolution images as product proof, with an interaction model worth using.

05

Keep it fast under weight

Progressive loading and lazy embeds so an image-heavy site still opens quickly.

06

Simplify public delivery

Static output on the edge, removing the CMS runtime from every page request.

07

Prove it, route by route

Verify routes, assets, media, favicons and content rather than assuming the build is complete.

My strategy

The decisions I made.

Order the page to the decision, not the sitemap

Emotional discovery, then relevant tours, then access and logistics, then proof, then a low-friction conversation. That is how an accessible-travel buyer actually decides.

No account before an enquiry

Customized accessible travel depends on a conversation about equipment, transfers, companions and dates. A registration wall would filter out the exact customers this business wants.

Inquiry-first, not checkout-first

I did not invent a payment or inventory backend the operation does not run. Forms serve the inquiry journey honestly rather than implying a transaction that cannot complete.

Treat media as product, not decoration

Full-resolution originals, verified byte-for-byte, with a preservation archive kept separately so the deployed frontend stays light without losing anything.

Static public delivery

Serving coded static output from the edge removes the CMS, runtime and database from every public request, which cuts both latency and the maintenance surface.

Engineer for the deployment limits

Routes were packed into deterministic files so 240 pages fit a manual upload workflow without dropping a single one, and static assets bypass the router entirely.

The gallery system

In this niche, photographs are evidence. The viewer had to be as good as the pictures.

Progressive thumbnails

Thumbnails load as they enter the viewport, so a 205-image gallery does not punish the initial page load.

Full-resolution viewing

Opening an image loads the original and preloads its neighbours, with zoom, fullscreen and sharing available.

Keyboard and touch

Arrow-key navigation, escape to close, and swipe support, so the viewer works however someone is browsing.

Focus handled correctly

Focus is trapped inside the dialog while open and restored when it closes, which is what makes a lightbox usable with a keyboard.

Announced to assistive tech

A live region reports position and state changes, so screen-reader users are not left guessing where they are.

Verified originals

202 source originals confirmed byte-identical, with 3 that had gone missing at source restored as valid local files.

Verification

How it was verified.

A 240-route site cannot be spot-checked by eye. Every layer was audited and recorded.

AuditResult
RoutesLocalized route coverage240 of 240 present, no route or HEAD failures
AssetsLocal dependency graph712 targets, zero missing
ContentParity sample across 2 languages80 pages, zero missing text or content nodes
GalleryViewer items and originals205 items, 202 byte-identical, 3 restored
Media archivePreserved library467 files verified
FaviconsIcon variants across every pageAll 4 present and byte-exact across 240 pages
SearchSEO auditNo high-severity findings, refinements documented
ResponsiveVisual reviewDesktop at 1440 and mobile at 390 verified
The results

This build against a template site.

Not a promotional page, but a complete international content and conversion system.

240Localized routes
228Indexable pages
205Gallery items
0Missing local assets
Business impact

What this gets the operator.

Six markets, properly served

An international visitor can research an entire trip without ever being dropped back into English.

Faster, with less to break

Static edge delivery removes the CMS runtime from public requests, cutting both latency and the maintenance surface.

Photography that sells

High-resolution imagery with a real viewer turns the archive into working proof rather than a decorative grid.

Entry points at every stage

Destination pages, tour detail and 16 editorial guides catch travelers from early research through to booking intent.

Contact without friction

WhatsApp, phone, email and forms with no registration, which suits a customer who needs to explain individual requirements.

Provable integrity

Route, asset, media, favicon and content audits mean the site can be re-verified after any future change.

Questions

The short version.

Why move public delivery to static edge hosting?

Because a content site does not need a database on every page view:

  • Speed: pages are served from Cloudflare's global network, with static assets bypassing worker execution entirely.
  • Fewer failure modes: no PHP runtime or database connection sitting between a visitor and a page.
  • Smaller attack surface: no CMS admin exposed on every public request.
  • Predictable deployments: revalidation rules mean updates propagate the way you expect.
How do you keep 240 routes correct?

By auditing rather than eyeballing:

  • Route manifest: every expected route checked for a real response, including HEAD parity for crawlers and monitors.
  • Asset graph: 712 unique local asset targets resolved, with zero missing and no unintended external dependencies.
  • Content parity: an 80-page sample across two languages compared node by node.
  • Deterministic reports: each audit is machine-readable, so the same checks can be re-run after any change.
Is the site WCAG certified?

No, and I would rather say so plainly:

  • What is true: keyboard-operable gallery controls, focus trapping and restoration, live-region updates, alternative text on audited images, reduced-motion support, and touch targets sized for real use.
  • What that is not: a formal conformance claim. That requires a dedicated manual and assistive-technology audit against a named WCAG version and level.
  • Why it matters here: on an accessibility-focused business, an unverified compliance badge would be exactly the wrong thing to publish.
How does a 205-image gallery stay fast?

By separating what is shown from what is loaded:

  • Progressive thumbnails: images load as they enter the viewport rather than all at once.
  • Originals on demand: the full-resolution file loads only when an image is opened.
  • Neighbour preloading: the next and previous images load in the background so browsing feels instant.
  • Lazy embeds: third-party maps activate only when needed, so they never compete with the first render.
Can you deliver a project at this scale?

Scale is mostly a discipline problem rather than a design one:

  • Good fit: large multilingual content sites, heavy media libraries, and businesses moving off a CMS without losing depth.
  • What carries over: the route manifest approach, the audit tooling, the gallery system and the edge delivery model.
  • Next step: book a free call and tell me how many pages and languages you are dealing with.
Keep exploring

More case studies.

View all
Your turn

Large site with heavy media? I build those.

Hundreds of pages across several languages is a discipline problem. I build the system, then prove it route by route.