diff --git a/public/FAQCube.png b/public/FAQCube.png
new file mode 100644
index 0000000..6098515
Binary files /dev/null and b/public/FAQCube.png differ
diff --git a/public/mission.png b/public/mission.png
new file mode 100644
index 0000000..d9f70bd
Binary files /dev/null and b/public/mission.png differ
diff --git a/public/vision.png b/public/vision.png
new file mode 100644
index 0000000..194061f
Binary files /dev/null and b/public/vision.png differ
diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx
new file mode 100644
index 0000000..ad11383
--- /dev/null
+++ b/src/app/about/page.tsx
@@ -0,0 +1,147 @@
+import type { Metadata } from "next";
+import { AboutBus } from "@/components/about/about-bus";
+import { Navbar } from "@/components/layout/navbar";
+import { Footer } from "@/components/layout/footer";
+import { Breadcrumb } from "@/components/ui/breadcrumb";
+import { ButtonLink } from "@/components/ui/button";
+import Image from "next/image";
+import { Reveal } from "@/components/ui/reveal";
+
+export const metadata: Metadata = {
+ title: "About us — VOYAGER",
+ description: "Voyager is an AI-powered business operating platform for tour operators, transportation companies and rental businesses.",
+};
+
+const principles = [
+ { title: "Simple", text: "Powerful technology shouldn’t feel complicated." },
+ { title: "Connected", text: "Your systems should work together." },
+ { title: "Scalable", text: "Your software should grow with your business." },
+ { title: "Intelligence", text: "AI should help your team, not replace the people who know your business." },
+ { title: "Affordable", text: "Enterprise-level capability shouldn’t require enterprise-level complexity." },
+];
+
+const stats = [
+ { value: "37mil", label: "Yearly Tickets" },
+ { value: "360", label: "Operation" },
+ { value: "280", label: "Clients" },
+ { value: "50", label: "Countries" },
+ { value: "102", label: "Employees" },
+];
+
+const aims = [
+ {
+ title: "Vision",
+ image: "/vision.png",
+ text: "To give every tour and transportation business the tools of a global enterprise, in one connected platform that grows with them.",
+ },
+ {
+ title: "Mission",
+ image: "/mission.png",
+ text: "To simplify how tourism businesses book, manage and grow by bringing ticketing, operations, distribution, payments and AI together.",
+ },
+];
+
+export default function AboutPage() {
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+ Voyager, the ticketing solution for tour operators
+
+
+
+
Technology That Makes Tourism Businesses Simpler
+
+ Voyager is an AI-powered business operating platform for tour operators, transportation companies, rental businesses and tourism
+ enterprises. Voyager was created around a simple idea: tour operators shouldn’t have to build their business around their
+ software. The software should adapt to the business. Voyager brings tour booking, ticketing, operations, fleet management, CRM,
+ payments, communication, distribution, marketing and AI together in one connected platform.
+
+
+
+
+
Our Principles
+
+ {principles.map((p, i) => (
+
+
+
+
{p.title}
+
{p.text}
+
+
+
+ ))}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {aims.map((a, i) => (
+
+
+
+
+
+
+
{a.title}
+
{a.text}
+
+
+ ))}
+
+
+
+
+
+
+
+ WHY
+
+
+ Choose Voyager?
+
+
+
+
+ {stats.map((s) => (
+
+ {s.value}
+ {s.label}
+
+ ))}
+
+
+
+
+
+ Wanna try?
+
+
+ Become a Voyager Customer
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/app/blog/page.tsx b/src/app/blog/page.tsx
new file mode 100644
index 0000000..f4b0720
--- /dev/null
+++ b/src/app/blog/page.tsx
@@ -0,0 +1,30 @@
+import type { Metadata } from "next";
+import { Navbar } from "@/components/layout/navbar";
+import { Footer } from "@/components/layout/footer";
+import { Breadcrumb } from "@/components/ui/breadcrumb";
+import { BlogList } from "@/components/blog/blog-list";
+import { BlogAbout } from "@/components/blog/blog-about";
+
+export const metadata: Metadata = {
+ title: "Weblog — VOYAGER",
+ description: "Guides, industry insights, customer stories and product updates for tour operators.",
+};
+
+export default function BlogPage() {
+ return (
+ <>
+
+
+
+
+
+
Weblog
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/app/contact/page.tsx b/src/app/contact/page.tsx
new file mode 100644
index 0000000..df4b416
--- /dev/null
+++ b/src/app/contact/page.tsx
@@ -0,0 +1,90 @@
+import type { Metadata } from "next";
+import type { ReactNode } from "react";
+import { Navbar } from "@/components/layout/navbar";
+import { Footer } from "@/components/layout/footer";
+import { Breadcrumb } from "@/components/ui/breadcrumb";
+import { ContactForm } from "@/components/contact/contact-form";
+
+export const metadata: Metadata = {
+ title: "Contact us — VOYAGER",
+ description: "Get in touch with the Voyager sales team or find our office details.",
+};
+
+const icons = {
+ pin: (
+ <>
+
+
+ >
+ ),
+ phone: ,
+ mail: (
+ <>
+
+
+ >
+ ),
+};
+
+function InfoCard({ icon, label, value, href, children }: { icon: ReactNode; label: string; value: string; href?: string; children?: ReactNode }) {
+ return (
+
+
+
+
+ >
+ );
+}
diff --git a/src/app/globals.css b/src/app/globals.css
index 6ca3869..3788d1c 100644
--- a/src/app/globals.css
+++ b/src/app/globals.css
@@ -123,3 +123,22 @@ body {
scroll-behavior: auto !important;
}
}
+
+.revenue-slider::-webkit-slider-thumb {
+ appearance: none;
+ width: 16px;
+ height: 16px;
+ border-radius: 9999px;
+ background: #0160d4;
+ border: 3px solid #fff;
+ box-shadow: 0 0 0 1px #0160d4;
+}
+
+.revenue-slider::-moz-range-thumb {
+ width: 12px;
+ height: 12px;
+ border-radius: 9999px;
+ background: #0160d4;
+ border: 3px solid #fff;
+ box-shadow: 0 0 0 1px #0160d4;
+}
diff --git a/src/app/page.tsx b/src/app/page.tsx
index 3cbf38f..eba3f39 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -1,22 +1,22 @@
-import { Navbar } from "@/components/navbar";
-import { Hero } from "@/components/hero";
-import { Partners } from "@/components/partners";
-import { Platform } from "@/components/platform";
-import { VoyagerDifference } from "@/components/voyager-difference";
-import { TourBooking } from "@/components/tour-booking";
-import { VoyagerAI } from "@/components/voyager-ai";
-import { TourOperations } from "@/components/tour-operations";
-import { CRM } from "@/components/crm";
-import { OTADistribution } from "@/components/ota-distribution";
-import { RentalManagement } from "@/components/rental-management";
-import { PaymentsRevenue } from "@/components/payments-revenue";
-import { MarketingGrowth } from "@/components/marketing-growth";
-import { Solutions } from "@/components/solutions";
-import { Pricing } from "@/components/pricing";
-import { Integrations } from "@/components/integrations";
-import { CustomerStories } from "@/components/customer-stories";
-import { About } from "@/components/about";
-import { Footer } from "@/components/footer";
+import { Navbar } from "@/components/layout/navbar";
+import { Hero } from "@/components/home/hero";
+import { Partners } from "@/components/home/partners";
+import { Platform } from "@/components/home/platform";
+import { VoyagerDifference } from "@/components/home/voyager-difference";
+import { TourBooking } from "@/components/home/tour-booking";
+import { VoyagerAI } from "@/components/home/voyager-ai";
+import { TourOperations } from "@/components/home/tour-operations";
+import { CRM } from "@/components/home/crm";
+import { OTADistribution } from "@/components/home/ota-distribution";
+import { RentalManagement } from "@/components/home/rental-management";
+import { PaymentsRevenue } from "@/components/home/payments-revenue";
+import { MarketingGrowth } from "@/components/home/marketing-growth";
+import { Solutions } from "@/components/home/solutions";
+import { Pricing } from "@/components/home/pricing";
+import { Integrations } from "@/components/home/integrations";
+import { CustomerStories } from "@/components/home/customer-stories";
+import { About } from "@/components/home/about";
+import { Footer } from "@/components/layout/footer";
export default function Home() {
return (
diff --git a/src/app/plans/page.tsx b/src/app/plans/page.tsx
new file mode 100644
index 0000000..496117d
--- /dev/null
+++ b/src/app/plans/page.tsx
@@ -0,0 +1,37 @@
+import type { Metadata } from "next";
+import { Navbar } from "@/components/layout/navbar";
+import { Breadcrumb } from "@/components/ui/breadcrumb";
+import { Footer } from "@/components/layout/footer";
+import { PlanCalculator } from "@/components/plans/plan-calculator";
+import { PlanIncludes } from "@/components/plans/plan-includes";
+import { PlanComparison } from "@/components/plans/plan-comparison";
+import { PlanFAQ } from "@/components/plans/plan-faq";
+
+export const metadata: Metadata = {
+ title: "Our Plans — VOYAGER",
+ description: "Simple pricing built around your business. Compare Core, Grow, Scale and Enterprise plans.",
+};
+
+export default function PlansPage() {
+ return (
+ <>
+
+
+
+
+
+
+
Our Plans
+
Your annual revenue
+
+
+
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/components/about/about-bus.tsx b/src/components/about/about-bus.tsx
new file mode 100644
index 0000000..21f8c11
--- /dev/null
+++ b/src/components/about/about-bus.tsx
@@ -0,0 +1,34 @@
+import Image from "next/image";
+
+/** Blue tile with the bus overflowing the top. Layered shading gives the tile depth instead of a flat fill. */
+export function AboutBus({ priority = false }: { priority?: boolean }) {
+ return (
+
+ {/* Reflection fading out below the tile */}
+
+
+ {/* Tall tile tilted back in perspective (top edge recedes), lit from the top-left, with a glossy top rim */}
+
+
+
+
+
+ {/* Bus shadow cast onto the tile, plus contact shadow on the floor */}
+
+
+
+
+
+ );
+}
diff --git a/src/components/blog/blog-about.tsx b/src/components/blog/blog-about.tsx
new file mode 100644
index 0000000..7aa194a
--- /dev/null
+++ b/src/components/blog/blog-about.tsx
@@ -0,0 +1,32 @@
+"use client";
+
+import { useState } from "react";
+
+const paragraphs = [
+ "The Voyager blog brings together practical advice for tour operators, transportation companies and rental businesses. Our articles cover booking and ticketing, fleet and staff operations, online distribution, payments, marketing and the way AI is changing day-to-day work in tourism.",
+ "Whether you are choosing booking software for the first time or looking for ways to increase direct bookings, you will find guides, industry insights, customer stories and product updates written to help you run a simpler, more connected business.",
+];
+
+export function BlogAbout() {
+ const [expanded, setExpanded] = useState(false);
+
+ return (
+
+
+
About Articles
+
+
{paragraphs[0]}
+ {expanded &&
{paragraphs[1]}
}
+
+
+
+
+ );
+}
diff --git a/src/components/blog/blog-list.tsx b/src/components/blog/blog-list.tsx
new file mode 100644
index 0000000..b08ccd3
--- /dev/null
+++ b/src/components/blog/blog-list.tsx
@@ -0,0 +1,207 @@
+"use client";
+
+import Link from "next/link";
+import { useMemo, useState } from "react";
+import { Select } from "@/components/ui/select";
+import { Telescope, Target } from "@/components/ui/illustrations";
+import { Reveal } from "@/components/ui/reveal";
+import { categories, posts, type Post } from "@/data/posts";
+
+const PAGE_SIZE = 8;
+const YEARS = [2026, 2025, 2024];
+const MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
+
+type DateParts = { y: string; m: string; d: string };
+const emptyDate: DateParts = { y: "", m: "", d: "" };
+
+/** Start (or end) of the range described by partially filled year/month/day selects. */
+function boundary({ y, m, d }: DateParts, end: boolean) {
+ if (!y) return null;
+ const year = Number(y);
+ if (d) return Date.UTC(year, Number(m || 1) - 1, Number(d));
+ if (m) return end ? Date.UTC(year, Number(m), 0) : Date.UTC(year, Number(m) - 1, 1);
+ return end ? Date.UTC(year, 12, 0) : Date.UTC(year, 0, 1);
+}
+
+const dateFormat = new Intl.DateTimeFormat("en-US", { month: "short", day: "numeric", year: "numeric", timeZone: "UTC" });
+
+const themes = {
+ navy: "bg-[#11192d]",
+ blue: "bg-linear-to-br from-[#0160d4] to-[#0a8bff]",
+ orange: "bg-linear-to-br from-[#f3610c] to-[#ffb020]",
+};
+
+function CalendarIcon() {
+ return (
+
+ );
+}
+
+function PostCard({ post }: { post: Post }) {
+ const Art = post.art === "telescope" ? Telescope : Target;
+ return (
+
+