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:
adilallo
2026-09-09 16:45:19 -06:00
co-authored by Cursor
parent e4e61c0c9b
commit b2b272d2cc
32 changed files with 573 additions and 72 deletions
+45 -12
View File
@@ -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"]
}