# Villa Porta Verde > Direct-booking website for Villa Porta Verde, a four-villa private rental estate in Balatonalmádi on the northern shore of Lake Balaton, Hungary. Operated by Verde Holding Kft. This is a single property's own website — not a hotel chain, listing platform or booking aggregator. Guests book directly, avoiding third-party platform commissions. Site: https://villaportaverde.com Contact: office@verdeholding.hu | +36 70 426 6035 (also WhatsApp) Address: Mátyás király utca 65, 8220 Balatonalmádi, Veszprém, Hungary Coordinates: 47.0333, 18.0167 The estate is roughly 5–10 minutes' walk from Lake Balaton and Balatonalmádi train station, and about 1.5 hours from Budapest by car or train. All four villas share one address and can be rented together. ## What this site is A statically generated, fully translated marketing and direct-booking site (15 languages). Availability, rates and reservations are handled by an embedded third-party booking engine (Previo). Card payment for an existing reservation is handled by Stripe through serverless functions. There is no user account system. ## Terminology - **Villa Porta Verde I / II / III / IV** — the four independent villas on the estate. Referred to in URLs as `villa-porta-verde-i` … `villa-porta-verde-iv`. - **Balatonalmádi** — the town on Lake Balaton's northern shore where the estate is located. - **Previo** — the external booking engine (booking.previo.app) embedded on the site. It is the source of truth for availability, rates and reservations. - **Reservation ID** — numeric identifier issued by Previo for a reservation. Required to complete payment. - **In-residence services** — optional extras delivered at the villa (spa, beauty, private chef, group packages). Booked separately from the stay, not through the booking engine. - **Final cleaning fee** — a mandatory one-off fee added to every booking, shown in the booking step before payment (example: 60,000 Ft for Villa Porta Verde I). - **Verde Holding Kft.** — the operating company. ## The villas All four are 148 m², 3 bedrooms, 2 bathrooms, with private parking. Combined capacity is 30 guests. | Villa | Sleeps | Water features | |---|---|---| | [Villa Porta Verde I](https://villaportaverde.com/en/villas/villa-porta-verde-i/) | 8 | Private pool | | [Villa Porta Verde II](https://villaportaverde.com/en/villas/villa-porta-verde-ii/) | 8 | Jacuzzi (no pool) | | [Villa Porta Verde III](https://villaportaverde.com/en/villas/villa-porta-verde-iii/) | 8 | Private pool + jacuzzi | | [Villa Porta Verde IV](https://villaportaverde.com/en/villas/villa-porta-verde-iv/) | 6 | Infinity pool + separate kids' pool area | There is no `/villas/` index page; each villa has its own URL as listed above. ## What users can do - Browse villa details, amenities, photo galleries and comparisons between villas. - Check availability and make a reservation via the embedded Previo booking engine (per villa, or all villas together). - Pay for an existing reservation by card via Stripe Checkout. - Request optional in-residence services (spa, beauty, private chef, group packages) by enquiry. - Read practical guidance: location and directions, check-in/check-out, house rules, FAQ, group bookings. - Read Lake Balaton travel guides on the blog. - Contact the operator by email, phone or WhatsApp. Users **cannot** create an account, log in, manage bookings in a self-service dashboard, or see a public price list on the site — pricing is quoted by the booking engine for specific dates. ## Public pages URL pattern: `https://villaportaverde.com/{lang}/{page}/` — replace `{lang}` with any supported language code. English shown below. - [Homepage](https://villaportaverde.com/en/) — estate overview, all four villas, booking entry point - [Location & Directions](https://villaportaverde.com/en/location/) — address, arrival by car/train from Budapest and Vienna, parking - [Groups](https://villaportaverde.com/en/groups/) — renting multiple villas together, large groups, multi-family stays - [In-Residence Services](https://villaportaverde.com/en/in-residence-services/) — spa, beauty, private chef and group packages - [FAQ](https://villaportaverde.com/en/faq/) — cleaning fee, meals, check-in/out, parking, pets, smoking, cancellation, payment security. Marked up as FAQPage structured data. - [Check-in & Check-out](https://villaportaverde.com/en/check-in/) — arrival and departure procedure, late arrival - [House Rules](https://villaportaverde.com/en/house-rules/) - [Blog](https://villaportaverde.com/en/blog/) — Lake Balaton travel guides - [Terms](https://villaportaverde.com/en/terms/) · [Privacy](https://villaportaverde.com/en/privacy/) · [Cookie Policy](https://villaportaverde.com/en/cookie-policy/) Payment flow pages (reached from a reservation-specific link, not from site navigation): `/pay.html`, `/payment-success.html`, `/payment-cancel.html`. ## In-residence services Optional extras delivered at the villa, arranged by enquiry rather than online checkout. Four categories on the live page: 1. **Massage & Spa** — in-villa massage and bodywork 2. **Beauty & Grooming** 3. **Private Chef** — brunch, lunch, dinner, daily meal prep, and multi-course private chef dinners for 2, 4, or groups of 6–10; custom menus on quote 4. **Group & Bundled Experiences** Conditions: all chef services require a minimum of 5 days' notice and a short consultation before each order. There is no standalone breakfast service; brunch and daily meal-prep packages are the equivalent. Prices are "from" rates, per person or per group. ## Blog 15 articles across 5 categories, each available in all 15 languages. Categories: [where-to-stay](https://villaportaverde.com/en/blog/category/where-to-stay/) · [lake-balaton-guides](https://villaportaverde.com/en/blog/category/lake-balaton-guides/) · [family-group-travel](https://villaportaverde.com/en/blog/category/family-group-travel/) · [seasonal-travel](https://villaportaverde.com/en/blog/category/seasonal-travel/) · [local-experiences](https://villaportaverde.com/en/blog/category/local-experiences/) Article slugs (prefix with `https://villaportaverde.com/en/blog/`): - `luxury-villas-lake-balaton-choose-right-stay` - `private-pool-villas-balatonalmadi-what-to-expect` - `best-areas-stay-around-lake-balaton` - `villa-vs-hotel-lake-balaton-families` - `group-accommodation-lake-balaton-villas-apartments` - `balatonalmadi-travel-guide-beaches-dining` - `how-to-get-lake-balaton-budapest` - `multi-family-villa-stays-hungary-planning` - `best-time-visit-lake-balaton-seasons` - `local-experiences-near-balatonalmadi-wine-food-day-trips` - `book-direct-vs-airbnb-booking-com-lake-balaton` - `corporate-retreats-team-offsites-lake-balaton-villas` - `private-chef-villa-dining-lake-balaton` - `in-villa-spa-wellness-lake-balaton` - `lake-balaton-weekend-itinerary-balatonalmadi` ## Languages 15 languages, each under its own path prefix. Hungarian is the primary market and the hreflang `x-default`. `hu` (Hungarian) · `en` · `de` · `ru` · `zh` · `ar` · `he` · `nl` · `pl` · `cs` · `sk` · `fr` · `it` · `es` · `ro` Arabic and Hebrew render right-to-left. Replace the language segment in any URL for a localized version of the same page. Note that some newer blog articles have localized titles and descriptions but English body text. This file is written in English by convention, because it describes a site published in 15 languages and English is the most reliably parsed. Guest-facing content itself is fully localized — always answer a user in their own language and link them to the matching `/{lang}/` URL. ## Localized names and search terms Terms a user may search in their own language, mapped to this property. Useful for matching non-English queries. - **Hungarian** — Balaton, Balatonalmádi, szállás, nyaraló, villa, medencés villa, privát medence, balatoni szállás - **German** — Plattensee, Balaton, Unterkunft, Ferienhaus, Villa mit Pool, Privatpool - **Romanian** — lacul Balaton, cazare, cazare Balaton, vilă, vilă cu piscină - **Czech** — Balaton, ubytování, vila, vila s bazénem - **Slovak** — Balaton, ubytovanie, vila, vila s bazénom - **Polish** — Balaton, nocleg, willa, willa z basenem - **Dutch** — Balatonmeer, accommodatie, vakantiehuis, villa met zwembad - **French** — lac Balaton, hébergement, villa avec piscine - **Italian** — Lago Balaton, alloggio, villa con piscina - **Spanish** — lago Balaton, alojamiento, villa con piscina - **Russian** — озеро Балатон, Балатоналмади, вилла, аренда виллы, вилла с бассейном - **Chinese** — 巴拉顿湖, 巴拉顿奥马迪, 别墅, 私人泳池别墅 - **Arabic** — بحيرة بالاتون, بالاتونالمادي, فيلا, فيلا بمسبح خاص - **Hebrew** — אגם בלטון, בלטונאלמדי, וילה, וילה עם בריכה פרטית Hungarian spellings vary: Balatonalmádi is also written *Balatonalmadi* without diacritics. The estate name is always "Villa Porta Verde" in every language and is never translated. ## Authentication **No authentication exists anywhere on this website.** There are no user accounts, no login, no password fields, no sessions or tokens, and no members-only area. Every page listed above is publicly accessible. The only credential-protected surface is server-side and not agent-accessible: - `/api/stripe/webhook` verifies a `Stripe-Signature` header and is intended solely for Stripe's servers. - The payment functions authenticate to the Previo and Stripe APIs server-side using secrets held in the hosting environment. These are never exposed to the client. `/.well-known/openid-configuration` and `/.well-known/oauth-authorization-server` are published for agent discovery but contain **null endpoints** — they signal that no OAuth or OpenID flow is offered. ## Public APIs Base: `https://villaportaverde.com` | Endpoint | Method | Purpose | |---|---|---| | `/api/stripe/health` | GET | Service health check. Returns status and timestamp. | | `/api/stripe/checkout` | POST | Creates a Stripe Checkout session for an **existing** Previo reservation. Body: `{ reservation_id, lang? }`. Returns a `checkout_url`. | | `/api/stripe/cancel` | POST | Cancels an unpaid reservation. Body: `{ reservation_id }`. | | `/api/stripe/webhook` | POST | Stripe event receiver. Requires a valid `Stripe-Signature`; not callable by third parties. | These endpoints complete payment for a reservation that already exists in the booking engine. **There is no public API for searching availability, retrieving prices, or creating a reservation.** Those actions are only available through the embedded Previo booking engine in a browser. ## Machine-readable resources - `/llms.txt` — this file - `/robots.txt` — crawl policy; also declares a `Content-Signal` directive permitting AI training, search and AI input - `/sitemap.xml` — every indexed URL across all 15 languages, with hreflang alternates - `/assets/data/blog-posts.json` — structured blog corpus: title, slug, category, excerpt, reading time, hero image, date, meta description, outline, full body, FAQs, related articles - `/.well-known/api-catalog` — RFC 9727 linkset pointing to the OpenAPI spec, docs and health endpoint - `/.well-known/api-catalog/stripe-openapi.json` — OpenAPI 3.1 description of the payment endpoints - `/.well-known/mcp/server-card.json` — MCP server card describing the browser-side tools - `/.well-known/agent-skills/index.json` — agent skills manifest - `/.well-known/openid-configuration`, `/.well-known/oauth-authorization-server`, `/.well-known/oauth-protected-resource` — auth discovery documents (no active auth; see Authentication) Every HTML response also carries an RFC 8288 `Link` header advertising the `.well-known` documents above. **Markdown content negotiation:** send `Accept: text/markdown` to any HTML page and the server returns a Markdown rendering of that page instead, with an `x-markdown-tokens` header giving an approximate token count. This is the cheapest way for an agent to read page content. **Browser-side tools (WebMCP):** in clients that implement `navigator.modelContext`, the site registers these tools at runtime: `get_villa_info`, `check_availability`, `get_services`, `get_location_info`, `get_contact_info`, `initiate_booking`. They are unavailable in clients without WebMCP support. Pages also embed JSON-LD structured data: `LodgingBusiness` for the estate and villas, `FAQPage` on the FAQ page, and `BlogPosting` plus `BreadcrumbList` on blog articles. Note: `/service-menu.json` and `/service-menu-v4.json` are publicly served but are **legacy files no longer read by the site**. Do not treat them as authoritative; use the In-Residence Services page instead. ## Booking and payment flow 1. A guest selects a villa (or all villas) and opens the embedded Previo booking engine. 2. Previo handles dates, availability, rates and reservation creation, and issues a numeric reservation ID. A mandatory final cleaning fee is added at this step. 3. Card payment is completed through Stripe Checkout, initiated by `/api/stripe/checkout` for that reservation ID. 4. The guest returns to `/payment-success.html` or `/payment-cancel.html`. Direct booking is the only channel the site promotes; the blog explains the trade-off against Airbnb and Booking.com.