// SPDX-FileCopyrightText: 2026 Progmasoft // SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.1 import type { Metadata } from "next"; import { Footer } from "@/components/Footer"; import { SiteHeader } from "@/components/SiteHeader"; import { AreaIcon, areaKinds } from "@/components/site/AreaIcon"; import { getHomeMessages } from "@/lib/home-messages"; import { getLocale } from "@/lib/locale.server"; import { forwardArrow, getMessages } from "@/lib/localization"; import "./site.css"; export async function generateMetadata(): Promise { const { metadata } = getMessages(await getLocale()); return { title: metadata.homeTitle, description: metadata.homeDescription, alternates: { canonical: "https://progmasoft.com/" }, robots: { index: true, follow: true }, }; } /** * progmasoft.com. Progmasoft is presented as a pool of technology areas; the * products have their own catalog on product.progmasoft.com. */ export default async function Homepage() { const locale = await getLocale(); const { hero, pool, principles, developers } = getHomeMessages(locale); const arrow = forwardArrow(locale); return (

{hero.eyebrow}

{hero.titleStart} {hero.titleAccent}

{hero.description}

{pool.areas.map(([title], index) => (
{title}
))}

{pool.eyebrow}

{pool.title}

{pool.description}

{pool.areas.map(([title, description], index) => (

{title}

{description}

))}

{principles.eyebrow}

{principles.title}

{principles.items.map(([title, description], index) => (
{String(index + 1).padStart(2, "0")}

{title}

{description}

))}

{developers.eyebrow}

{developers.title}

{developers.description}

              
                GET https://credentials.progmasoft.com
                {"\n"}
                {"    "}/.well-known/openid-configuration
                {"\n\n"}
                scope openid profile email
                {"\n"}
                {"      "}viget.packages.read
              
            
); }