Astro Front-End Dev: Fast Static Site, Stripe Links, i18n & Schema SEO
Orçamento: $600.0
FIXED /
⭐ 4.99 (117)
France
typescript, next.js, tailwind-css-framework, css, stripe, landing-pages, javascript, html5
Qualificações preferidas
- Experiência: Intermédio
We are launching StoryTours.ai, an editorial digital audio publisher producing narrative-driven historical walkthroughs of premier European landmarks (launching initially with Versailles, expanding to London and Paris).
Our brand tagline is: "History is theater. Take the best seat."
Crucial Architecture Note: Our fulfillment backend is already 100% built and operational (Stripe webhooks to Make.com to Airtable to Postmark to VoiceMap). You do not need to build backends, databases, or automation scenarios.
Your sole responsibility is the high-performance front-end static site, comprehensive machine-readable schemas, ensuring our tour purchase buttons pass our live inventory parameters cleanly through Stripe Payment Links, implementing a Markdown-based seasonal tour availability system, and structuring an extensible multi-language setup (launching in English, with French, Spanish, German, and further locales added shortly after).
We launch initially in English with three definitive Versailles productions:
The Ritual of Power: Unofficial Versailles State Rooms Guide (/en/versailles-state-rooms) — Price: $9.99 USD | Duration: 60 MIN | SKU: RITUALS-English (Year-round Palace interior)
The Architecture of Control: A Guide to the Versailles Gardens (/en/versailles-gardens) — Price: $8.99 USD | Duration: 90 MIN | SKU: ARCHITECTURE-English (Seasonal: Active April 1 – October 31; Closed November 1 – March 31 due to locked grove gates)
The Illusion of Innocence: Queen's Hamlet & the French Revolution (/en/queens-hamlet) — Price: $8.99 USD | Duration: 60 MIN | SKU: MARIE-ANTOIN-English (Year-round Queen's Estate)
We need a lightweight static site built for two distinct users:
Tourists on Mobile: Standing in museum queues on congested cellular networks needing sub-1.5s page loads, zero audio-streaming layout lag, frictionless one-tap checkouts, and cookie-free analytics.
AI Engines & Web Crawlers: LLM scrapers (Gemini, ChatGPT, SearchGPT) requiring semantic HTML, structured JSON-LD schemas, root llms.txt, and public machine-readable endpoints.
Scope of Work
Front-End Core, Compliance, & Content System
Framework: Static Site Generation (SSG) via Astro (strongly preferred for near-zero JS overhead) or lightweight Next.js.
Extensible i18n Routing Structure: Astro built-in i18n routing configured with defaultLocale: 'en' and pre-configured support for locales: ['en', 'fr', 'es', 'de'] plus future additions. Root path / redirects cleanly to /en/. Dynamic canonical tags and alternate language tags injected automatically into every page header across all active locales. A clean, extensible language switcher in the header nav.
Performance & Analytics Budget: 95+ Google PageSpeed Mobile score across all pages. Initial page payload strictly under 1.5 MB. Integrate a lightweight, privacy-first analytics script (e.g., Plausible or Fathom) that respects the payload limit and avoids GDPR cookie banners.
Audio Player Engineering: Embedded HTML5 preview players must strictly use preload="none" to prevent background cellular data consumption. Audio streams asynchronously only upon user interaction.
Scalable Multi-Language Markdown Schema: All tour content and legal pages must live in structured Astro Content Collections organized by locale subdirectories: src/content/tours/[locale]/[slug].md (e.g., /en/, /fr/, /es/, /de/). Adding a translated tour (or a whole new language) must require zero template or routing edits—only adding a Markdown file. Frontmatter includes: locale, title, sku, price, duration_minutes, is_active, seasonal_notice, audio_preview, stripe_payment_link.
Legal & Compliance Pages: Standard static footer routing to /privacy, /terms, and /refunds across all active locales, rendering from Markdown files.
Seasonal Availability & Winter Lockout Engine: Support is_active: boolean and seasonal_notice: string in Markdown frontmatter. When is_active: false (e.g., winter grove closures from Nov 1 to Mar 31), the Stripe "Buy" button is completely disabled and replaced with (Closed for Season — Reopens April 1), displaying an inline fallback banner pointing visitors to the open State Rooms tour and providing an email waitlist field.
Homepage Experience: Editorial hero section with brand framing and an embedded audio prologue player. Instant client-side destination filter bar: (Versailles Live) (London Coming Soon) (Paris In Production). Unreleased destinations surface a clean inline email capture form. Tour cards with metadata badges (60 MIN | PALACE INTERIORS, 90 MIN | GARDENS & GROVES, 60 MIN | QUEEN'S ESTATE) and single-click checkout buttons.
Dedicated Tour Landing Pages: Build the three launch routes under /en/ (with templates dynamically handling translations). Includes hero block, 30-45s async audio teaser, 3-4 visual stop cards with captions, logistical badges, Google Maps meeting pin, and a localized /success confirmation page with 3-step VoiceMap redemption instructions.
Expected Billing Experience & Stripe Parameter Wiring
The Buyer Journey: Purchase buttons open pre-configured Stripe Payment Links prioritizing Apple Pay and Google Pay. Zero billing friction: email only (no shipping/billing addresses or phone fields). Multi-ticket checkout enabled (1 to 20 vouchers). Direct redirect to the matching localized success page post-payment.
Technical Parameter Passing & Test Mode: Buttons append tracking parameters via client_reference_id passing match keys (e.g., RITUALS-English, and dynamically RITUALS-French, RITUALS-Spanish, RITUALS-German as translated files are added) alongside quantity and language. Testing will be conducted using Stripe Test Mode links.
Machine-Actionable SEO, E-E-A-T & LLM Standards
Root LLM Standards: Deploy /llms.txt and /llms-full.txt specifying boundaries, operating seasons, runtimes, available and planned languages, pricing, and checkout endpoints.
Granular JSON-LD Schemas: Deploy nested Schema.org microdata (Product & Offer with inLanguage, dynamic InStock/OutOfStock availability, AudioObject with PT60M/PT90M durations, TouristAttraction, Person, and FAQPage). (Do NOT include AggregateRating).
Agent Query Endpoints: Public /openapi.json spec and static /api/v1/tours.json catalog endpoint.
Deliverables & Milestones (Total Fixed Price: $600)
Milestone 1: Static Architecture, Editorial Front-End, i18n & Legal Pages ($250)
GitHub repository setup connected to Cloudflare Pages or Vercel.
Astro Content Collections configured with scalable language directories (/en/, /fr/, /es/, /de/) and frontmatter schemas.
Instant destination filter bar, tour cards, responsive mobile layout, extensible language switcher, and standard footer with /privacy, /terms, /refunds.
Dedicated landing pages built for the three Versailles launch titles in English (including inactive winter state styling for Gardens).
Localized post-checkout confirmation page (/en/success).
Milestone 2: Machine-Actionable Data, Schema, SEO & Analytics ($150)
Validated JSON-LD schema suite tested against Google Rich Results.
Dynamic canonical tags, localized alternate language tags mapped across all configured locales, XML sitemap via @astrojs/sitemap, OpenGraph tags, root /llms.txt, /llms-full.txt, and static /api/v1/tours.json.
Implementation of Plausible/Fathom analytics script.
Milestone 3: Stripe Checkout Wiring, Test Mode Verification & Handover ($200)
Stripe buy buttons connected with parameter passing (client_reference_id with dynamic SKU language handling) verified using Test Mode links.
Confirmation of frictionless mobile checkout flow (Apple Pay trigger to redirect to /success).
Production launch on custom domain (storytours.ai) swapping in Live Stripe links.
5-minute screen recording demonstrating:
Toggling seasonal tours on/off.
Adding new translated tours (e.g., /fr/, /es/, /de/) or completely new locales without touching code.
Adding new cities (London, Paris) via simple Markdown files.
Editing legal/refund pages.
Application Screening Questions (Please answer when submitting your proposal):
Share 2 examples of production websites you built using Astro with native multi-language (i18n) routing that achieve a 95+ score on Google PageSpeed Mobile.
How do you pass custom parameters (tour_id, quantity, language) through a Stripe Payment Link URL so the downstream webhook receives them in client_reference_id?
How do you structure Astro dynamic routes ([locale]/[slug].astro) so adding a new language folder (/es/, /de/) automatically generates pages with correct language tags without touching code?
Confirm you will provide a brief video handover showing how to toggle seasonal tours and add translated content via Markdown.
Abrir na Upwork
AI proposal draft
Generate a short cover letter for this job. Edit before sending.
Sign in to generate an AI proposal draft.
Entrar