feat: customize README for Tibia Trade marketplace and enhance page accessibility
- Rewrote README.md to describe the Tibia Trade project, including features, setup instructions, technologies, and SEO keywords in Portuguese - Removed "Pagodera" from thank you page text for rebranding - Added role and aria-label to main element in home page for better accessibility - Added metadata generation with localized titles and descriptions to prices page for improved SEO and user experience
This commit is contained in:
1 parent
5e7f3a1354
commit
4ba3339df7
28 files changed
+704
-68
No files matched your search
@@ -54,8 +54,8 @@ export default function ThankYouPage() {
|
||||
<div className="p-8 rounded-2xl border border-border/50 bg-card backdrop-blur-lg mb-8">
|
||||
<p className="text-lg leading-relaxed text-muted-foreground">
|
||||
Sua generosidade nos ajuda a continuar desenvolvendo e mantendo
|
||||
o Tibia Trade Pagodera. Cada contribuição faz toda a diferença
|
||||
para nossa comunidade!
|
||||
o Tibia Trade. Cada contribuição faz toda a diferença para nossa
|
||||
comunidade!
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -86,8 +86,8 @@ export default function ThankYouPage() {
|
||||
onClick={() => {
|
||||
if (typeof navigator !== "undefined" && navigator.share) {
|
||||
navigator.share({
|
||||
title: "Tibia Trade Pagodera",
|
||||
text: "Acabei de fazer uma doação para o Tibia Trade Pagodera! Ajude também!",
|
||||
title: "Tibia Trade",
|
||||
text: "Acabei de fazer uma doação para o Tibia Trade! Ajude também!",
|
||||
url: window.location.origin,
|
||||
});
|
||||
} else if (
|
||||
@@ -108,8 +108,8 @@ export default function ThankYouPage() {
|
||||
<div className="mt-12 p-6 rounded-xl bg-muted/30 border border-border/30">
|
||||
<p className="text-sm text-muted-foreground">
|
||||
💡 <strong>Dica:</strong> Compartilhe nossa plataforma com seus
|
||||
amigos! Quanto mais pessoas usarem o Tibia Trade Pagodera, mais
|
||||
forte nossa comunidade fica.
|
||||
amigos! Quanto mais pessoas usarem o Tibia Trade, mais forte
|
||||
nossa comunidade fica.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -14,17 +14,34 @@ import { Heart } from "lucide-react";
|
||||
import { getTranslations } from "next-intl/server";
|
||||
import Link from "next/link";
|
||||
import { ShareButton } from "@/components/share-button";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export async function generateMetadata({
|
||||
params,
|
||||
}: {
|
||||
params: Promise<{ locale: string }>;
|
||||
}) {
|
||||
}): Promise<Metadata> {
|
||||
const { locale } = await params;
|
||||
const t = await getTranslations({ locale, namespace: "donation" });
|
||||
|
||||
const titles = {
|
||||
pt: "Apoie o Projeto - Doações Voluntárias",
|
||||
en: "Support the Project - Voluntary Donations",
|
||||
};
|
||||
|
||||
const descriptions = {
|
||||
pt: "Ajude a manter o Tibia Trade funcionando com uma doação voluntária via PIX. Transparência total dos custos e investimentos no projeto.",
|
||||
en: "Help keep Tibia Trade running with a voluntary donation via PIX. Total transparency of costs and project investments.",
|
||||
};
|
||||
|
||||
return {
|
||||
title: t("title"),
|
||||
description: t("subtitle"),
|
||||
title: titles[locale as keyof typeof titles],
|
||||
description: descriptions[locale as keyof typeof descriptions],
|
||||
keywords: [
|
||||
"doação tibia trade",
|
||||
"apoiar tibia trade",
|
||||
"ajudar tibia trade",
|
||||
"transparência tibia trade",
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
+129
-9
@@ -16,10 +16,89 @@ const geistMono = Geist_Mono({
|
||||
subsets: ["latin"],
|
||||
});
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Pagodera Trade",
|
||||
description: "Markeplace servidor pagodera",
|
||||
};
|
||||
export async function generateMetadata({
|
||||
params,
|
||||
}: {
|
||||
params: Promise<{ locale: string }>;
|
||||
}): Promise<Metadata> {
|
||||
const { locale } = await params;
|
||||
|
||||
const titles = {
|
||||
pt: "Tibia Trade - Marketplace Seguro para Compra e Venda de Itens",
|
||||
en: "Tibia Trade - Secure Marketplace for Buying and Selling Items",
|
||||
};
|
||||
|
||||
const descriptions = {
|
||||
pt: "Marketplace oficial multi-servidor para negociar itens de Tibia com segurança total. Sistema escrow protege 100% das transações. Compre e venda gold, TC, armaduras raras e equipamentos.",
|
||||
en: "Official multi-server marketplace to trade Tibia items with total security. Escrow system protects 100% of transactions. Buy and sell gold, TC, rare armors and equipment.",
|
||||
};
|
||||
|
||||
return {
|
||||
title: {
|
||||
default: titles[locale as keyof typeof titles],
|
||||
template: `%s | Tibia Trade`,
|
||||
},
|
||||
description: descriptions[locale as keyof typeof descriptions],
|
||||
keywords: [
|
||||
"tibia marketplace",
|
||||
"tibia trade",
|
||||
"comprar itens tibia",
|
||||
"vender itens tibia",
|
||||
"tibia escrow",
|
||||
"tibia gold",
|
||||
"tibia coins",
|
||||
"tc tibia",
|
||||
"marketplace tibia seguro",
|
||||
"tibia bid system",
|
||||
"tibia item escrow",
|
||||
"tibia multi-server marketplace",
|
||||
],
|
||||
authors: [{ name: "Tibia Trade Team" }],
|
||||
creator: "Tibia Trade",
|
||||
publisher: "Tibia Trade",
|
||||
robots: {
|
||||
index: true,
|
||||
follow: true,
|
||||
googleBot: {
|
||||
index: true,
|
||||
follow: true,
|
||||
"max-video-preview": -1,
|
||||
"max-image-preview": "large",
|
||||
"max-snippet": -1,
|
||||
},
|
||||
},
|
||||
alternates: {
|
||||
canonical: `https://tibiatrade.evandro.dev.br/${locale}`,
|
||||
languages: {
|
||||
"pt-BR": `https://tibiatrade.evandro.dev.br/pt`,
|
||||
"en-US": `https://tibiatrade.evandro.dev.br/en`,
|
||||
},
|
||||
},
|
||||
openGraph: {
|
||||
type: "website",
|
||||
locale: locale === "pt" ? "pt_BR" : "en_US",
|
||||
url: `https://tibiatrade.evandro.dev.br/${locale}`,
|
||||
title: titles[locale as keyof typeof titles],
|
||||
description: descriptions[locale as keyof typeof descriptions],
|
||||
siteName: "Tibia Trade",
|
||||
images: [
|
||||
{
|
||||
url: "/og-image.png",
|
||||
width: 1200,
|
||||
height: 630,
|
||||
alt: "Tibia Trade - Marketplace Seguro",
|
||||
},
|
||||
],
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
title: titles[locale as keyof typeof titles],
|
||||
description: descriptions[locale as keyof typeof descriptions],
|
||||
images: ["/og-image.png"],
|
||||
creator: "@tibiatrade",
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
export default async function LocaleLayout({
|
||||
children,
|
||||
@@ -31,8 +110,54 @@ export default async function LocaleLayout({
|
||||
const { locale } = await params;
|
||||
const messages = await getMessages();
|
||||
|
||||
const baseUrl = "https://tibiatrade.evandro.dev.br";
|
||||
|
||||
return (
|
||||
<html lang={locale} suppressHydrationWarning>
|
||||
<head>
|
||||
<link rel="icon" href="/favicon.ico" sizes="any" />
|
||||
<link rel="icon" href="/icon.svg" type="image/svg+xml" />
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
|
||||
<script
|
||||
type="application/ld+json"
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: JSON.stringify({
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Organization",
|
||||
name: "Tibia Trade",
|
||||
url: baseUrl,
|
||||
logo: `${baseUrl}/logo.png`,
|
||||
description:
|
||||
"Marketplace multi-servidor seguro para negociação de itens de Tibia",
|
||||
sameAs: ["https://discord.gg/tibiatrade"],
|
||||
contactPoint: {
|
||||
"@type": "ContactPoint",
|
||||
contactType: "Customer Support",
|
||||
availableLanguage: ["Portuguese", "English"],
|
||||
},
|
||||
}),
|
||||
}}
|
||||
/>
|
||||
<script
|
||||
type="application/ld+json"
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: JSON.stringify({
|
||||
"@context": "https://schema.org",
|
||||
"@type": "WebSite",
|
||||
name: "Tibia Trade",
|
||||
url: baseUrl,
|
||||
potentialAction: {
|
||||
"@type": "SearchAction",
|
||||
target: {
|
||||
"@type": "EntryPoint",
|
||||
urlTemplate: `${baseUrl}/market?q={search_term_string}`,
|
||||
},
|
||||
"query-input": "required name=search_term_string",
|
||||
},
|
||||
}),
|
||||
}}
|
||||
/>
|
||||
</head>
|
||||
<body
|
||||
className={`${nunitoSans.variable} ${geistMono.variable} antialiased`}
|
||||
>
|
||||
@@ -45,8 +170,3 @@ export default async function LocaleLayout({
|
||||
</html>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,17 +1,37 @@
|
||||
import Header from "@/components/Header";
|
||||
import { UnderConstruction } from "@/components/under-construction";
|
||||
import { getTranslations } from "next-intl/server";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export async function generateMetadata({
|
||||
params,
|
||||
}: {
|
||||
params: Promise<{ locale: string }>;
|
||||
}) {
|
||||
}): Promise<Metadata> {
|
||||
const { locale } = await params;
|
||||
const t = await getTranslations({ locale, namespace: "underConstruction" });
|
||||
|
||||
const titles = {
|
||||
pt: "Mercado - Todos os Itens de Tibia",
|
||||
en: "Market - All Tibia Items",
|
||||
};
|
||||
|
||||
const descriptions = {
|
||||
pt: "Explore todos os itens disponíveis no marketplace: armaduras, armas, escudos, poções e mais. Compre e venda com segurança usando nosso sistema de escrow.",
|
||||
en: "Explore all items available in the marketplace: armors, weapons, shields, potions and more. Buy and sell safely using our escrow system.",
|
||||
};
|
||||
|
||||
return {
|
||||
title: t("market.title"),
|
||||
description: t("market.description"),
|
||||
title: titles[locale as keyof typeof titles],
|
||||
description: descriptions[locale as keyof typeof descriptions],
|
||||
keywords: [
|
||||
"itens tibia",
|
||||
"armaduras tibia",
|
||||
"armas tibia",
|
||||
"escudos tibia",
|
||||
"comprar itens tibia",
|
||||
"marketplace tibia",
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ export default function Home() {
|
||||
<div className="min-h-screen">
|
||||
<Header />
|
||||
<EscrowBanner />
|
||||
<main>
|
||||
<main role="main" aria-label="Página principal do Tibia Trade">
|
||||
<HeroSection />
|
||||
<HowItWorks />
|
||||
<FeaturedItems />
|
||||
|
||||
@@ -1,17 +1,29 @@
|
||||
import Header from "@/components/Header";
|
||||
import { UnderConstruction } from "@/components/under-construction";
|
||||
import { getTranslations } from "next-intl/server";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export async function generateMetadata({
|
||||
params,
|
||||
}: {
|
||||
params: Promise<{ locale: string }>;
|
||||
}) {
|
||||
}): Promise<Metadata> {
|
||||
const { locale } = await params;
|
||||
const t = await getTranslations({ locale, namespace: "underConstruction" });
|
||||
|
||||
const titles = {
|
||||
pt: "Preços - Estrutura de Custos",
|
||||
en: "Prices - Cost Structure",
|
||||
};
|
||||
|
||||
const descriptions = {
|
||||
pt: "Veja nossa estrutura de preços transparente. Taxas de transação justas para manter o marketplace funcionando.",
|
||||
en: "See our transparent price structure. Fair transaction fees to keep the marketplace running.",
|
||||
};
|
||||
|
||||
return {
|
||||
title: t("prices.title"),
|
||||
description: t("prices.description"),
|
||||
title: titles[locale as keyof typeof titles],
|
||||
description: descriptions[locale as keyof typeof descriptions],
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -1,17 +1,34 @@
|
||||
import Header from "@/components/Header";
|
||||
import { UnderConstruction } from "@/components/under-construction";
|
||||
import { getTranslations } from "next-intl/server";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export async function generateMetadata({
|
||||
params,
|
||||
}: {
|
||||
params: Promise<{ locale: string }>;
|
||||
}) {
|
||||
}): Promise<Metadata> {
|
||||
const { locale } = await params;
|
||||
const t = await getTranslations({ locale, namespace: "underConstruction" });
|
||||
|
||||
const titles = {
|
||||
pt: "Sobre - Nossa Missão e História",
|
||||
en: "About - Our Mission and History",
|
||||
};
|
||||
|
||||
const descriptions = {
|
||||
pt: "Conheça o Tibia Trade, o marketplace multi-servidor mais seguro para negociação de itens. Sistema escrow, transparência total e comunidade ativa.",
|
||||
en: "Learn about Tibia Trade, the most secure multi-server marketplace for item trading. Escrow system, total transparency and active community.",
|
||||
};
|
||||
|
||||
return {
|
||||
title: t("about.title"),
|
||||
description: t("about.description"),
|
||||
title: titles[locale as keyof typeof titles],
|
||||
description: descriptions[locale as keyof typeof descriptions],
|
||||
keywords: [
|
||||
"sobre tibia trade",
|
||||
"história tibia trade",
|
||||
"missão tibia trade",
|
||||
"marketplace tibia",
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 96 KiB |
@@ -0,0 +1,28 @@
|
||||
import { MetadataRoute } from "next";
|
||||
|
||||
export default function sitemap(): MetadataRoute.Sitemap {
|
||||
const baseUrl = "https://tibiatrade.evandro.dev.br";
|
||||
const locales = ["pt", "en"];
|
||||
const pages = ["", "/market", "/sobre", "/precos", "/apoiar"];
|
||||
|
||||
const routes: MetadataRoute.Sitemap = [];
|
||||
|
||||
locales.forEach((locale) => {
|
||||
pages.forEach((page) => {
|
||||
routes.push({
|
||||
url: `${baseUrl}/${locale}${page}`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: page === "" ? "daily" : "weekly",
|
||||
priority: page === "" ? 1.0 : 0.8,
|
||||
alternates: {
|
||||
languages: {
|
||||
pt: `${baseUrl}/pt${page}`,
|
||||
en: `${baseUrl}/en${page}`,
|
||||
},
|
||||
},
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
return routes;
|
||||
}
|
||||
Reference in new issue
Block a user