feat: add SEO and sitemap functionality

- Implemented robots.txt to guide search engine indexing.
- Created layout components for the selector and series pages to manage metadata.
- Developed a dynamic sitemap generator based on existing series and frameworks data.
- Centralized SEO information in a new lib/seo.js file to maintain consistency across the site.
- Added SVG logos for branding.
This commit is contained in:
Lucas Rayan committed 2026-08-23 11:16:13 -03:00
1 parent 3de4f2501d
commit 37971056c2
74 files changed
+563 -41337

No files matched your search

+14 -3
View File
@@ -1,3 +1,4 @@
import { paginaMeta } from "@/lib/seo";
import Link from "next/link";
import Header from "@/components/Header";
import Footer from "@/components/Footer";
@@ -261,12 +262,22 @@ export async function generateMetadata({ params }) {
const framework = frameworksData[key];
if (!framework) {
return { title: "Framework não encontrado" };
return { title: "Framework não encontrado", robots: { index: false, follow: false } };
}
return {
title: `ESPDocs - ${framework.nome_completo}`,
description: framework.descricao,
...paginaMeta({
titulo: `${framework.nome} para ESP32`,
descricao: `${framework.nome_completo}: ${framework.descricao} Guia em português com exemplo de código e quando usar.`,
caminho: `/frameworks/${encodeURIComponent(key)}`,
tipo: "article",
keywords: [
framework.nome, framework.nome_completo,
`${framework.nome} ESP32`, `programar ESP32 com ${framework.nome}`,
"ESP32", "framework ESP32",
],
}),
other: { "article:section": "Frameworks" },
};
}
+9
View File
@@ -1,3 +1,4 @@
import { paginaMeta } from "@/lib/seo";
import Header from "@/components/Header";
import Footer from "@/components/Footer";
import Link from "next/link";
@@ -19,6 +20,14 @@ import {
Home
} from "lucide-react";
export const metadata = paginaMeta({
titulo: "Frameworks para ESP32",
descricao: "ESP-IDF, Arduino, MicroPython, ESP-ADF, ESP-DSP, ESP-WHO, ESP-NN e ESP-Matter: para que serve cada framework do ESP32, com exemplo de código e quando usar.",
caminho: "/frameworks",
keywords: ["ESP-IDF", "Arduino ESP32", "MicroPython ESP32", "frameworks ESP32", "programar ESP32"],
});
export default function Frameworks() {
const frameworks = Object.entries(frameworksData);