← back to Costa Rica
snapshot: 10 file(s) changed, +1 new, ~9 modified
fce51b287820b3e07f59dfbccac48c7aaa16b4da · 2026-05-13 08:57:48 -0700 · Steve
Files touched
A ecosystem.config.cjsM public/about.htmlM public/index.htmlM public/province.htmlM public/provinces.htmlM public/region.htmlM public/search.htmlM public/stats.htmlM public/vertical.htmlM public/verticals.html
Diff
commit fce51b287820b3e07f59dfbccac48c7aaa16b4da
Author: Steve <steve@designerwallcoverings.com>
Date: Wed May 13 08:57:48 2026 -0700
snapshot: 10 file(s) changed, +1 new, ~9 modified
---
ecosystem.config.cjs | 19 +++++++++++++++++++
public/about.html | 6 ++++++
public/index.html | 28 ++++++++++++++++++++++++++++
public/province.html | 7 +++++++
public/provinces.html | 6 ++++++
public/region.html | 6 ++++++
public/search.html | 6 ++++++
public/stats.html | 6 ++++++
public/vertical.html | 6 ++++++
public/verticals.html | 6 ++++++
10 files changed, 96 insertions(+)
diff --git a/ecosystem.config.cjs b/ecosystem.config.cjs
new file mode 100644
index 0000000..c5165dc
--- /dev/null
+++ b/ecosystem.config.cjs
@@ -0,0 +1,19 @@
+module.exports = {
+ apps: [{
+ name: "costa-rica",
+ script: "server.js",
+ cwd: __dirname,
+ env: {
+ HOST: "0.0.0.0",
+ BIND: "0.0.0.0",
+ FLASK_RUN_HOST: "0.0.0.0",
+ UVICORN_HOST: "0.0.0.0",
+ GUNICORN_BIND: "0.0.0.0:8000",
+ HOSTNAME: "0.0.0.0",
+ VITE_HOST: "0.0.0.0",
+ NEXT_TELEMETRY_DISABLED: "1",
+ },
+ autorestart: true,
+ max_memory_restart: "300M",
+ }],
+};
diff --git a/public/about.html b/public/about.html
index 4dd63c4..2b65696 100644
--- a/public/about.html
+++ b/public/about.html
@@ -8,6 +8,12 @@
<meta property="og:type" content="article" />
<meta property="og:title" content="About the Costa Rica Directory" />
<meta property="og:description" content="A non-commercial directory of Costa Rica businesses. Built from MEIC PYMEs, Hacienda registry, ICT tourism listings, and Wikipedia for region imagery." />
+ <script type="application/ld+json">
+ {"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[
+ {"@type":"ListItem","position":1,"name":"Home","item":"https://costarica.agentabrams.com/"},
+ {"@type":"ListItem","position":2,"name":"About","item":"https://costarica.agentabrams.com/about"}
+ ]}
+ </script>
<script>(function(){try{var t=localStorage.getItem('cr-theme');if(t)document.documentElement.setAttribute('data-theme',t);}catch(e){}})();</script>
<style>
:root{--bg:#fafaf7;--fg:#0e1015;--muted:#5a6270;--line:#e3e0d6;--card:#fff;--card-line:#ebe7da;--accent:#0a7a3a;--accent-2:#c2a85a}
diff --git a/public/index.html b/public/index.html
index 95258e3..dab7aed 100644
--- a/public/index.html
+++ b/public/index.html
@@ -16,6 +16,34 @@
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Costa Rica Directory" />
<meta name="twitter:description" content="25,000+ Costa Rica businesses across all 7 provinces. Sourced from public registries." />
+ <script type="application/ld+json">
+ {
+ "@context": "https://schema.org",
+ "@graph": [
+ {
+ "@type": "Organization",
+ "@id": "https://costarica.agentabrams.com/#org",
+ "name": "Costa Rica Directory",
+ "url": "https://costarica.agentabrams.com/",
+ "email": "info@agentabrams.com",
+ "sameAs": ["https://costarica.agentabrams.com/about"]
+ },
+ {
+ "@type": "WebSite",
+ "@id": "https://costarica.agentabrams.com/#website",
+ "url": "https://costarica.agentabrams.com/",
+ "name": "Costa Rica Directory",
+ "publisher": { "@id": "https://costarica.agentabrams.com/#org" },
+ "inLanguage": ["en", "es-CR"],
+ "potentialAction": {
+ "@type": "SearchAction",
+ "target": { "@type": "EntryPoint", "urlTemplate": "https://costarica.agentabrams.com/search?q={search_term_string}" },
+ "query-input": "required name=search_term_string"
+ }
+ }
+ ]
+ }
+ </script>
<script>
(function(){ try{ var t=localStorage.getItem('cr-theme'); if(t) document.documentElement.setAttribute('data-theme',t);}catch(e){} })();
</script>
diff --git a/public/province.html b/public/province.html
index 01acad2..6d16fc7 100644
--- a/public/province.html
+++ b/public/province.html
@@ -92,6 +92,13 @@
if(p.error){document.getElementById('main').innerHTML=`<p style="color:var(--muted)">${p.error}</p>`;return;}
document.title=`${p.name} — Costa Rica Directory`;
document.getElementById('bcurr').textContent=p.name;
+ // BreadcrumbList JSON-LD
+ const ld=document.createElement('script');ld.type='application/ld+json';
+ ld.textContent=JSON.stringify({"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[
+ {"@type":"ListItem","position":1,"name":"Home","item":"https://costarica.agentabrams.com/"},
+ {"@type":"ListItem","position":2,"name":"Provinces","item":"https://costarica.agentabrams.com/provinces"},
+ {"@type":"ListItem","position":3,"name":p.name,"item":`https://costarica.agentabrams.com/pr/${p.slug}`}
+ ]});document.head.appendChild(ld);
const totalCantones=p.cantones.length;
const cantonesWithListings=p.cantones.filter(c=>c.n>0).length;
diff --git a/public/provinces.html b/public/provinces.html
index ebdf212..39d9028 100644
--- a/public/provinces.html
+++ b/public/provinces.html
@@ -8,6 +8,12 @@
<meta property="og:type" content="website" />
<meta property="og:title" content="The 7 Provinces — Costa Rica Directory" />
<meta property="og:description" content="Browse 25,000+ Costa Rica businesses by province. San José leads at 11K+ listings, then Alajuela, Heredia, Cartago, Guanacaste, Puntarenas, Limón." />
+ <script type="application/ld+json">
+ {"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[
+ {"@type":"ListItem","position":1,"name":"Home","item":"https://costarica.agentabrams.com/"},
+ {"@type":"ListItem","position":2,"name":"Provinces","item":"https://costarica.agentabrams.com/provinces"}
+ ]}
+ </script>
<script>(function(){try{var t=localStorage.getItem('cr-theme');if(t)document.documentElement.setAttribute('data-theme',t);}catch(e){}})();</script>
<style>
:root{--bg:#fafaf7;--fg:#0e1015;--muted:#5a6270;--line:#e3e0d6;--card:#fff;--card-line:#ebe7da;--accent:#0a7a3a;--accent-2:#c2a85a}
diff --git a/public/region.html b/public/region.html
index 1cf5cac..62e9fe3 100644
--- a/public/region.html
+++ b/public/region.html
@@ -203,6 +203,12 @@
]).then(([region]) => {
document.title = region.name + ' — Costa Rica Directory';
$('#crumb-region').textContent = region.name;
+ const ld=document.createElement('script');ld.type='application/ld+json';
+ ld.textContent=JSON.stringify({"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[
+ {"@type":"ListItem","position":1,"name":"Home","item":"https://costarica.agentabrams.com/"},
+ {"@type":"ListItem","position":2,"name":region.province||"Provinces","item":"https://costarica.agentabrams.com/provinces"},
+ {"@type":"ListItem","position":3,"name":region.name,"item":`https://costarica.agentabrams.com/r/${region.slug}`}
+ ]});document.head.appendChild(ld);
// Hero
if (region.image_url) { $('#hero-img').src = region.image_url; $('#hero-img').alt = region.name; }
diff --git a/public/search.html b/public/search.html
index 3d7f1c6..a70c324 100644
--- a/public/search.html
+++ b/public/search.html
@@ -8,6 +8,12 @@
<meta property="og:type" content="website" />
<meta property="og:title" content="Search the Costa Rica Directory" />
<meta property="og:description" content="25,000+ businesses across all 7 provinces. Find tourism, rentals, food, retail, services." />
+ <script type="application/ld+json">
+ {"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[
+ {"@type":"ListItem","position":1,"name":"Home","item":"https://costarica.agentabrams.com/"},
+ {"@type":"ListItem","position":2,"name":"Search","item":"https://costarica.agentabrams.com/search"}
+ ]}
+ </script>
<script>(function(){try{var t=localStorage.getItem('cr-theme');if(t)document.documentElement.setAttribute('data-theme',t);}catch(e){}})();</script>
<style>
:root{--bg:#fafaf7;--fg:#0e1015;--muted:#5a6270;--line:#e3e0d6;--card:#fff;--card-line:#ebe7da;--accent:#0a7a3a;--accent-2:#c2a85a}
diff --git a/public/stats.html b/public/stats.html
index dbec837..a110892 100644
--- a/public/stats.html
+++ b/public/stats.html
@@ -8,6 +8,12 @@
<meta property="og:type" content="website" />
<meta property="og:title" content="Costa Rica Directory — Stats" />
<meta property="og:description" content="Live counts by category, vertical, and region across 25,000+ Costa Rica listings." />
+ <script type="application/ld+json">
+ {"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[
+ {"@type":"ListItem","position":1,"name":"Home","item":"https://costarica.agentabrams.com/"},
+ {"@type":"ListItem","position":2,"name":"Stats","item":"https://costarica.agentabrams.com/stats"}
+ ]}
+ </script>
<script>(function(){try{var t=localStorage.getItem('cr-theme');if(t)document.documentElement.setAttribute('data-theme',t);}catch(e){}})();</script>
<style>
:root{--bg:#fafaf7;--fg:#0e1015;--muted:#5a6270;--line:#e3e0d6;--card:#fff;--card-line:#ebe7da;--accent:#0a7a3a;--accent-2:#c2a85a}
diff --git a/public/vertical.html b/public/vertical.html
index c4cb704..30e2d3c 100644
--- a/public/vertical.html
+++ b/public/vertical.html
@@ -91,6 +91,12 @@
const label=niceVert(v.vertical);
document.title=`${label.charAt(0).toUpperCase()+label.slice(1)} in Costa Rica — Directory`;
document.getElementById('bcurr').textContent=label;
+ const ld=document.createElement('script');ld.type='application/ld+json';
+ ld.textContent=JSON.stringify({"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[
+ {"@type":"ListItem","position":1,"name":"Home","item":"https://costarica.agentabrams.com/"},
+ {"@type":"ListItem","position":2,"name":"Verticals","item":"https://costarica.agentabrams.com/verticals"},
+ {"@type":"ListItem","position":3,"name":label.charAt(0).toUpperCase()+label.slice(1),"item":`https://costarica.agentabrams.com/v/${slug}`}
+ ]});document.head.appendChild(ld);
const samplesHtml=(v.samples||[]).map(s=>{
const img=s.image_url||s.region_image_url||'';
diff --git a/public/verticals.html b/public/verticals.html
index 734b5a6..e551045 100644
--- a/public/verticals.html
+++ b/public/verticals.html
@@ -8,6 +8,12 @@
<meta property="og:type" content="website" />
<meta property="og:title" content="Browse by Vertical — Costa Rica Directory" />
<meta property="og:description" content="12 verticals across tourism, rentals, and local services in Costa Rica. Pick one to see top regions and sample listings." />
+ <script type="application/ld+json">
+ {"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[
+ {"@type":"ListItem","position":1,"name":"Home","item":"https://costarica.agentabrams.com/"},
+ {"@type":"ListItem","position":2,"name":"Verticals","item":"https://costarica.agentabrams.com/verticals"}
+ ]}
+ </script>
<script>(function(){try{var t=localStorage.getItem('cr-theme');if(t)document.documentElement.setAttribute('data-theme',t);}catch(e){}})();</script>
<style>
:root{--bg:#fafaf7;--fg:#0e1015;--muted:#5a6270;--line:#e3e0d6;--card:#fff;--card-line:#ebe7da;--accent:#0a7a3a;--accent-2:#c2a85a}
← 57f58f5 yolo tick 8: /about page (data sources, attribution, contact
·
back to Costa Rica
·
upgrade target=_blank links to rel="noopener noreferrer" 0223d43 →