Skip to content

Commit cddc691

Browse files
nextlevelshitMichael Czechowski
authored andcommitted
feat(seo): foundations — robots.txt, sitemap.xml, Course schema (#85)
Co-authored-by: Michael Czechowski <mail@dailysh.it> Co-committed-by: Michael Czechowski <mail@dailysh.it>
1 parent 13f4d5b commit cddc691

3 files changed

Lines changed: 67 additions & 16 deletions

File tree

public/robots.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
User-agent: *
2+
Allow: /
3+
4+
# No restricted paths — public learning content.
5+
# Skip the asset hash bundle directory from being crawled as
6+
# distinct URLs (they're referenced via index.html, not navigable).
7+
Disallow: /assets/
8+
9+
Sitemap: https://codecrispi.es/sitemap.xml

public/sitemap.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<urlset xmlns="http://www.sitemap.org/schemas/sitemap/0.9">
3+
<url>
4+
<loc>https://codecrispi.es/</loc>
5+
<changefreq>weekly</changefreq>
6+
<priority>1.0</priority>
7+
</url>
8+
</urlset>

src/index.html

Lines changed: 50 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -34,26 +34,60 @@
3434
<meta name="twitter:description" content="Master HTML, CSS, and Tailwind through hands-on coding exercises." />
3535
<meta name="twitter:image" content="https://codecrispi.es/og-image.png" />
3636

37+
<link rel="canonical" href="https://codecrispi.es/" />
38+
3739
<!-- Structured Data -->
3840
<script type="application/ld+json">
3941
{
4042
"@context": "https://schema.org",
41-
"@type": "WebApplication",
42-
"name": "CODE CRISPIES",
43-
"description": "Interactive platform for learning HTML, CSS, and Tailwind through hands-on coding exercises",
44-
"url": "https://codecrispi.es/",
45-
"applicationCategory": "EducationalApplication",
46-
"operatingSystem": "Web Browser",
47-
"offers": {
48-
"@type": "Offer",
49-
"price": "0",
50-
"priceCurrency": "USD"
51-
},
52-
"author": {
53-
"@type": "Organization",
54-
"name": "LibreTECH",
55-
"url": "https://librete.ch"
56-
}
43+
"@graph": [
44+
{
45+
"@type": "WebApplication",
46+
"@id": "https://codecrispi.es/#app",
47+
"name": "CODE CRISPIES",
48+
"description": "Interactive platform for learning HTML, CSS, Tailwind, JavaScript, and Markdown through hands-on coding exercises",
49+
"url": "https://codecrispi.es/",
50+
"applicationCategory": "EducationalApplication",
51+
"operatingSystem": "Web Browser",
52+
"isAccessibleForFree": true,
53+
"inLanguage": ["en", "de", "es", "ar", "pl", "uk"],
54+
"offers": {
55+
"@type": "Offer",
56+
"price": "0",
57+
"priceCurrency": "EUR",
58+
"availability": "https://schema.org/InStock"
59+
},
60+
"author": {
61+
"@type": "Organization",
62+
"@id": "https://librete.ch/#org",
63+
"name": "LibreTECH",
64+
"url": "https://librete.ch"
65+
}
66+
},
67+
{
68+
"@type": "Course",
69+
"@id": "https://codecrispi.es/#course",
70+
"name": "Code Crispies — Interactive Web Development",
71+
"description": "135 progressive lessons covering HTML, CSS, Tailwind, JavaScript, and Markdown with live preview and instant validation.",
72+
"url": "https://codecrispi.es/",
73+
"provider": { "@id": "https://librete.ch/#org" },
74+
"educationalLevel": "Beginner",
75+
"isAccessibleForFree": true,
76+
"inLanguage": ["en", "de", "es", "ar", "pl", "uk"],
77+
"teaches": ["HTML", "CSS", "Tailwind CSS", "JavaScript", "Markdown"],
78+
"hasCourseInstance": {
79+
"@type": "CourseInstance",
80+
"courseMode": "Online",
81+
"courseWorkload": "PT10H"
82+
},
83+
"offers": {
84+
"@type": "Offer",
85+
"category": "Free",
86+
"price": "0",
87+
"priceCurrency": "EUR"
88+
}
89+
}
90+
]
5791
}
5892
</script>
5993

0 commit comments

Comments
 (0)