From 35676d77981157101b2d369fb594aa46406c90c2 Mon Sep 17 00:00:00 2001 From: JosueBrenes Date: Tue, 13 Jan 2026 11:48:16 -0600 Subject: [PATCH 1/2] feat: enhance project metadata and structure - Updated layout metadata for improved SEO and social sharing, including Open Graph and Twitter card data. - Added robots.txt for search engine indexing. - Introduced sitemap generation for better site navigation. - Enhanced FAQ component with structured data for better search visibility. - Updated footer to include official links for easy access. - Refactored AnimatedActa component to use a div instead of h1 for better semantic structure. - Added constants file for managing official links. --- package-lock.json | 21 ++++++- public/robots.txt | 6 ++ src/app/layout.tsx | 108 +++++++++++++++++++++++++++++++- src/app/page.tsx | 12 +++- src/app/sitemap.ts | 14 +++++ src/components/AnimatedActa.tsx | 2 +- src/components/FAQ.tsx | 92 ++++++++++++++++++++------- src/components/Footer.tsx | 76 ++++++++++++++++++++-- src/lib/constants.ts | 11 ++++ 9 files changed, 306 insertions(+), 36 deletions(-) create mode 100644 public/robots.txt create mode 100644 src/app/sitemap.ts create mode 100644 src/lib/constants.ts diff --git a/package-lock.json b/package-lock.json index 540e223..a3626a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2868,6 +2868,7 @@ "integrity": "sha512-EhBeSYX0Y6ye8pNebpKrwFJq7BoQ8J5SO6NlvNwwHjSj6adXJViPQrKlsyPw7hLBLvckEMO1yxeGdR82YBBlDg==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "csstype": "^3.0.2" } @@ -2878,6 +2879,7 @@ "integrity": "sha512-i5ZzwYpqjmrKenzkoLM2Ibzt6mAsM7pxB6BCIouEVVmgiqaMj1TjaK7hnA36hbW5aZv20kx7Lw6hWzPWg0Rurw==", "devOptional": true, "license": "MIT", + "peer": true, "peerDependencies": { "@types/react": "^19.0.0" } @@ -2934,6 +2936,7 @@ "integrity": "sha512-jCNyAuXx8dr5KJMkecGmZ8KI61KBUhkCob+SD+C+I5+Y1FWI2Y3QmY4/cxMCC5WAsZqoEtEETVhUiUMIGCf6Bw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.40.0", "@typescript-eslint/types": "8.40.0", @@ -3451,6 +3454,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4410,7 +4414,8 @@ "version": "8.6.0", "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.6.0.tgz", "integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/embla-carousel-react": { "version": "8.6.0", @@ -4674,6 +4679,7 @@ "integrity": "sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", @@ -4848,6 +4854,7 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -6902,6 +6909,7 @@ "resolved": "https://registry.npmjs.org/next/-/next-15.5.9.tgz", "integrity": "sha512-agNLK89seZEtC5zUHwtut0+tNrc0Xw4FT/Dg+B/VLEo9pAcS9rtTKpek3V6kVcVwsB2YlqMaHdfZL4eLEVYuCg==", "license": "MIT", + "peer": true, "dependencies": { "@next/env": "15.5.9", "@swc/helpers": "0.5.15", @@ -7441,6 +7449,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -7471,6 +7480,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", "license": "MIT", + "peer": true, "dependencies": { "scheduler": "^0.26.0" }, @@ -7498,13 +7508,15 @@ "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/react-redux": { "version": "9.2.0", "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", "license": "MIT", + "peer": true, "dependencies": { "@types/use-sync-external-store": "^0.0.6", "use-sync-external-store": "^1.4.0" @@ -7633,7 +7645,8 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/redux-thunk": { "version": "3.1.0", @@ -8480,6 +8493,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -8639,6 +8653,7 @@ "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..85b169a --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,6 @@ +# robots.txt for acta.build +User-agent: * +Allow: / + +# Sitemap +Sitemap: https://acta.build/sitemap.xml diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 7148396..0de1e85 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,13 +1,109 @@ import type { Metadata } from "next"; import { GeistSans } from "geist/font/sans"; import { GeistMono } from "geist/font/mono"; +import Script from "next/script"; import "./globals.css"; import { PostHogProvider } from "@/providers/PostHogProvider"; +import { ACTA_OFFICIAL_LINKS } from "@/lib/constants"; export const metadata: Metadata = { - title: "ACTA", - description: "ACTA landing page", - generator: "SP", + metadataBase: new URL("https://acta.build"), + title: "ACTA | Verifiable Credentials on Stellar", + description: + "ACTA is the new infrastructure for digital trust. Issue, verify, and manage verifiable credentials on the Stellar blockchain using Soroban smart contracts. Decentralized, secure, and tamper-proof digital credentials.", + keywords: [ + "verifiable credentials", + "stellar", + "soroban", + "blockchain credentials", + "digital credentials", + "decentralized identity", + "DID", + "on-chain verification", + "blockchain verification", + "digital trust", + "ACTA", + ], + authors: [{ name: "ACTA Team" }], + creator: "ACTA Team", + publisher: "ACTA", + alternates: { + canonical: "/", + }, + openGraph: { + type: "website", + locale: "en_US", + url: "https://acta.build", + siteName: "ACTA", + title: "ACTA | Verifiable Credentials on Stellar", + description: + "The new infrastructure for digital trust. Issue, verify, and manage verifiable credentials on the Stellar blockchain.", + images: [ + { + url: "/Acta-logo.png", + width: 1200, + height: 630, + alt: "ACTA - Verifiable Credentials on Stellar", + }, + ], + }, + twitter: { + card: "summary_large_image", + title: "ACTA | Verifiable Credentials on Stellar", + description: + "The new infrastructure for digital trust. Issue, verify, and manage verifiable credentials on the Stellar blockchain.", + images: ["/Acta-logo.png"], + }, + robots: { + index: true, + follow: true, + googleBot: { + index: true, + follow: true, + "max-video-preview": -1, + "max-image-preview": "large", + "max-snippet": -1, + }, + }, + verification: { + // Add Google Search Console verification if available + // google: "your-verification-code", + }, +}; + +// Schema.org JSON-LD for Organization +const organizationSchema = { + "@context": "https://schema.org", + "@type": "SoftwareApplication", + name: "ACTA", + applicationCategory: "Blockchain Application", + operatingSystem: "Web", + url: "https://acta.build", + logo: "https://acta.build/Acta-logo.png", + description: + "ACTA is the new infrastructure for digital trust. Issue, verify, and manage verifiable credentials on the Stellar blockchain using Soroban smart contracts.", + sameAs: [ + ACTA_OFFICIAL_LINKS.github, + ACTA_OFFICIAL_LINKS.twitter, + ACTA_OFFICIAL_LINKS.linkedin, + ACTA_OFFICIAL_LINKS.instagram, + ACTA_OFFICIAL_LINKS.docs, + ACTA_OFFICIAL_LINKS.dapp, + ], + offers: { + "@type": "Offer", + price: "1", + priceCurrency: "USDC", + description: "$1 USDC per credential", + }, + featureList: [ + "Verifiable Credentials", + "On-chain verification", + "Stellar blockchain", + "Soroban smart contracts", + "Decentralized identity", + "Tamper-proof credentials", + ], }; export default function RootLayout({ @@ -18,6 +114,12 @@ export default function RootLayout({ return ( +