Give each route its own title and canonical, and add robots.txt plus a sitemap.
The root layout was stamping the homepage title and production root onto every page. Routes now supply a page segment through one em-dash template, canonicals follow the request path, and non-production hosts disallow crawlers. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+45
-12
@@ -1,5 +1,7 @@
|
||||
{
|
||||
"_comment": "Page metadata translations",
|
||||
"_comment": "Page metadata. `title` is the page segment; the root layout template appends the site name. Home `title` is the full default document title (not passed through the template).",
|
||||
"siteName": "CommunityRule",
|
||||
"titleTemplate": "%s — CommunityRule",
|
||||
"home": {
|
||||
"title": "CommunityRule - Build operating manuals for successful communities",
|
||||
"description": "Help your community make important decisions in a way that reflects its unique values.",
|
||||
@@ -10,8 +12,39 @@
|
||||
"operating manual"
|
||||
]
|
||||
},
|
||||
"about": {
|
||||
"title": "About"
|
||||
},
|
||||
"learn": {
|
||||
"title": "Learn"
|
||||
},
|
||||
"templates": {
|
||||
"title": "Templates"
|
||||
},
|
||||
"create": {
|
||||
"title": "Create"
|
||||
},
|
||||
"blog": {
|
||||
"title": "Blog",
|
||||
"description": "Learn about community governance, decision-making, and building successful organizations.",
|
||||
"notFoundTitle": "Post not found",
|
||||
"fallbackTitle": "Blog post",
|
||||
"fallbackDescription": "A blog post from our community."
|
||||
},
|
||||
"login": {
|
||||
"title": "Log in"
|
||||
},
|
||||
"profile": {
|
||||
"title": "Profile"
|
||||
},
|
||||
"monitor": {
|
||||
"title": "Monitor"
|
||||
},
|
||||
"notFound": {
|
||||
"title": "Page not found"
|
||||
},
|
||||
"useCases": {
|
||||
"title": "Use cases — CommunityRule",
|
||||
"title": "Use cases",
|
||||
"description": "See how mutual aid groups, cooperatives, open source projects, and other communities use CommunityRule to define structure before they need it.",
|
||||
"keywords": [
|
||||
"use cases",
|
||||
@@ -22,40 +55,40 @@
|
||||
},
|
||||
"useCasesDetail": {
|
||||
"mutualAidColorado": {
|
||||
"title": "Mutual Aid Colorado — CommunityRule",
|
||||
"title": "Mutual Aid Colorado",
|
||||
"description": "How Mutual Aid Colorado used CommunityRule to clarify resource sharing, volunteer coordination, and decision-making.",
|
||||
"keywords": ["mutual aid", "use case", "community governance", "operating manual"]
|
||||
},
|
||||
"foodNotBombs": {
|
||||
"title": "Food Not Bombs Boulder — CommunityRule",
|
||||
"title": "Food Not Bombs Boulder",
|
||||
"description": "How Food Not Bombs Boulder used CommunityRule to translate implicit organizing norms into explicit democratic processes.",
|
||||
"keywords": ["food not bombs", "use case", "community governance", "operating manual"]
|
||||
},
|
||||
"boulderCountyStreetMedics": {
|
||||
"title": "Boulder County Street Medics — CommunityRule",
|
||||
"title": "Boulder County Street Medics",
|
||||
"description": "How CommunityRule helped Boulder County Street Medics define operational process on the streets and off.",
|
||||
"keywords": ["street medics", "use case", "community governance", "operating manual"]
|
||||
}
|
||||
},
|
||||
"useCasesCompletedRule": {
|
||||
"mutualAidColorado": {
|
||||
"title": "Mutual Aid Colorado community rule — CommunityRule",
|
||||
"title": "Mutual Aid Colorado community rule",
|
||||
"description": "Read the completed community rule Mutual Aid Colorado built with CommunityRule.",
|
||||
"keywords": ["mutual aid", "community rule", "operating manual", "use case"]
|
||||
},
|
||||
"foodNotBombs": {
|
||||
"title": "Food Not Bombs Boulder community rule — CommunityRule",
|
||||
"title": "Food Not Bombs Boulder community rule",
|
||||
"description": "Read the completed community rule Food Not Bombs Boulder built with CommunityRule.",
|
||||
"keywords": ["food not bombs", "community rule", "operating manual", "use case"]
|
||||
},
|
||||
"boulderCountyStreetMedics": {
|
||||
"title": "Boulder County Street Medics community rule — CommunityRule",
|
||||
"title": "Boulder County Street Medics community rule",
|
||||
"description": "Read the completed community rule Boulder County Street Medics built with CommunityRule.",
|
||||
"keywords": ["street medics", "community rule", "operating manual", "use case"]
|
||||
}
|
||||
},
|
||||
"howItWorks": {
|
||||
"title": "A Guide to CommunityRule — CommunityRule",
|
||||
"title": "A Guide to CommunityRule",
|
||||
"description": "CommunityRule is a modular governance toolkit designed to help democratic groups build, customize, and publish their own Operating Manual.",
|
||||
"keywords": [
|
||||
"how it works",
|
||||
@@ -65,17 +98,17 @@
|
||||
]
|
||||
},
|
||||
"privacy": {
|
||||
"title": "Privacy Policy — CommunityRule",
|
||||
"title": "Privacy Policy",
|
||||
"description": "What we collect, where it is stored, and how template recommendations work.",
|
||||
"keywords": ["privacy", "personal information", "communityrule"]
|
||||
},
|
||||
"terms": {
|
||||
"title": "Terms of Service — CommunityRule",
|
||||
"title": "Terms of Service",
|
||||
"description": "How you may use CommunityRule, including licenses and the templates API.",
|
||||
"keywords": ["terms of service", "license", "communityrule"]
|
||||
},
|
||||
"cookies": {
|
||||
"title": "Cookies Settings — CommunityRule",
|
||||
"title": "Cookies Settings",
|
||||
"description": "CommunityRule uses one cookie, to keep you signed in.",
|
||||
"keywords": ["cookies", "session", "privacy", "communityrule"]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user