chore: neutralize comiida demo prose -> generic placeholder content
Rewrote the sample pages/components to niche-neutral placeholder copy so the base carries no Medellín/restaurant/author-specific content: - about, faq, services -> generic placeholder pages (structure preserved) - index hero, Footer, Newsletter, contact, 404, BaseLayout -> neutral copy app/src is now free of comiida/medellin/carlos references; build = 13 pages, Complete. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SYHWLHihq3v9nxNwoPCKSn
This commit is contained in:
parent
92fa6c9140
commit
0fcf707a17
9 changed files with 52 additions and 115 deletions
|
|
@ -44,7 +44,7 @@ const { flush = false } = Astro.props;
|
|||
</div>
|
||||
<div class="border-t border-border/60">
|
||||
<div class="mx-auto flex max-w-6xl flex-col items-start justify-between gap-2 px-5 py-5 text-xs text-muted-foreground sm:flex-row sm:items-center">
|
||||
<div>© {new Date().getFullYear()} {SITE.name}. Dining in Medellín.</div>
|
||||
<div>© {new Date().getFullYear()} {SITE.name}.</div>
|
||||
<div>Set in Fraunces & Inter.</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ const { compact = false } = Astro.props;
|
|||
compact ? (
|
||||
<div>
|
||||
<div class="text-xs font-medium uppercase tracking-wider text-muted-foreground">Newsletter</div>
|
||||
<p class="mt-2 text-sm text-muted-foreground">Medellín dining in your inbox — new guides and openings.</p>
|
||||
<p class="mt-2 text-sm text-muted-foreground">New posts in your inbox.</p>
|
||||
<form data-newsletter-form class="mt-3 flex gap-2">
|
||||
<input
|
||||
type="email"
|
||||
|
|
@ -24,9 +24,9 @@ const { compact = false } = Astro.props;
|
|||
) : (
|
||||
<section data-newsletter-cta class="border-t border-border/60 pt-16 pb-10">
|
||||
<div class="mx-auto max-w-2xl px-5 text-center">
|
||||
<h2 class="font-serif text-3xl font-semibold tracking-tight sm:text-4xl">Eat well in Medellín.</h2>
|
||||
<h2 class="font-serif text-3xl font-semibold tracking-tight sm:text-4xl">Stay in the loop.</h2>
|
||||
<p class="mt-3 text-muted-foreground">
|
||||
One email when it’s worth it — new restaurant guides, openings, and data-driven dining picks for Medellín.
|
||||
One email when it’s worth it — new posts and updates, no spam.
|
||||
</p>
|
||||
<form data-newsletter-form class="mx-auto mt-6 flex max-w-md flex-col gap-2 sm:flex-row">
|
||||
<input
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import DevConsole from "../components/DevConsole.astro";
|
|||
import { SITE, imageSrc } from "../lib/blog-data.js";
|
||||
|
||||
const {
|
||||
title = `${SITE.name} - Medellín's restaurant scene for expats, nomads & travelers`,
|
||||
title = `${SITE.name}`,
|
||||
description = SITE.description,
|
||||
canonical,
|
||||
ogType = "website",
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
import BaseLayout from "../layouts/BaseLayout.astro";
|
||||
---
|
||||
|
||||
<BaseLayout title="Page not found - Comiida" description="The page could not be found.">
|
||||
<BaseLayout title="Page not found" description="The page could not be found.">
|
||||
<div class="mx-auto max-w-2xl px-5 py-32 text-center">
|
||||
<div class="font-serif text-7xl font-semibold tracking-tight">404</div>
|
||||
<h1 class="mt-4 font-serif text-2xl font-semibold">Lost in the margins</h1>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import { SITE, authors } from "../lib/blog-data.js";
|
|||
|
||||
<BaseLayout
|
||||
title={`About - ${SITE.name}`}
|
||||
description={`${SITE.name} is a fully autonomous, AI-run restaurant publication for Medellín — researched, written, illustrated, and SEO-managed every day by a system of agents built by engineer Carlos Arias.`}
|
||||
description={`About ${SITE.name} — who we are and what we cover.`}
|
||||
canonical="/about"
|
||||
>
|
||||
<div class="mx-auto max-w-3xl px-5 py-12">
|
||||
|
|
@ -15,35 +15,29 @@ import { SITE, authors } from "../lib/blog-data.js";
|
|||
<header class="mt-6">
|
||||
<div class="text-xs font-medium uppercase tracking-[0.2em] text-primary">About</div>
|
||||
<h1 class="mt-2 font-serif text-5xl font-semibold leading-[1.05] tracking-tight">
|
||||
A restaurant publication that runs itself.
|
||||
About {SITE.name}.
|
||||
</h1>
|
||||
</header>
|
||||
|
||||
<div class="prose-article mt-10">
|
||||
<p>
|
||||
{SITE.name} is an experiment in fully autonomous publishing. Every part of this site — the research, the writing, the cover images, the SEO, even the editorial calendar — is produced and managed by a system of AI agents that run on their own, every single day. No human writes the articles.
|
||||
This is placeholder copy for your About page. Describe what {SITE.name} is,
|
||||
who it’s for, and why it exists. Edit this in <code>app/src/pages/about.astro</code>.
|
||||
</p>
|
||||
<h2 id="what-we-do">What we do</h2>
|
||||
<p>
|
||||
Summarize what visitors will find here — the topics you cover, the value
|
||||
you offer, and what makes your site worth their time.
|
||||
</p>
|
||||
<h2 id="how-it-works">How it works</h2>
|
||||
<p>Each day, with no one at the keyboard, the agents:</p>
|
||||
<ul>
|
||||
<li>scan for timely Medellín food news and new openings, and keep an evergreen topic calendar stocked;</li>
|
||||
<li>write each article to SEO and EEAT standards, with real, linked sources;</li>
|
||||
<li>generate an original cover illustration;</li>
|
||||
<li>audit their own work against a quality & SEO rubric — and revise it until it passes;</li>
|
||||
<li>then publish on a schedule.</li>
|
||||
</ul>
|
||||
<h2 id="honesty">Honest by design</h2>
|
||||
<p>
|
||||
Quality and honesty matter even when no human is in the loop. The agents work from real, citable signals — aggregate ratings, published menus and prices, awards, and local press — never invented first-hand experiences, and every factual claim links to its source. Cover images are AI-generated illustrations, always labeled as such.
|
||||
</p>
|
||||
<h2 id="who-built-it">Who built it</h2>
|
||||
<p>
|
||||
{SITE.name} was built by Carlos Arias, an AI engineer. He doesn’t write the articles — he built the agents that do. {SITE.name} is his passion project: an experiment in how far autonomous, agentic publishing can go, pointed at a subject worth covering — Medellín’s restaurant scene, for the English-speaking expats, nomads, and travelers trying to figure out where to eat.
|
||||
If your site uses the content pipeline or other automation, explain it here.
|
||||
Otherwise, use this space to describe your process, standards, or approach.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<section class="mt-12 border-t border-border pt-10">
|
||||
<h2 class="font-serif text-2xl font-semibold tracking-tight">The engineer behind Comiida</h2>
|
||||
<h2 class="font-serif text-2xl font-semibold tracking-tight">The people behind {SITE.name}</h2>
|
||||
<div class="mt-6 grid gap-6 sm:grid-cols-2 lg:grid-cols-3">
|
||||
{
|
||||
authors.map((author) => (
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ import { SITE } from "../lib/blog-data.js";
|
|||
<div class="text-xs font-medium uppercase tracking-[0.2em] text-primary">Contact</div>
|
||||
<h1 class="mt-2 font-serif text-5xl font-semibold tracking-tight">Say hello.</h1>
|
||||
<p class="mt-4 max-w-xl text-muted-foreground">
|
||||
A restaurant tip, a correction, or a question about where to eat in Medellín. We read everything and reply to most of it.
|
||||
A tip, a correction, or a question. We read everything and reply to most of it.
|
||||
</p>
|
||||
</header>
|
||||
|
||||
|
|
@ -48,12 +48,12 @@ import { SITE } from "../lib/blog-data.js";
|
|||
<div>
|
||||
<div class="text-xs font-medium uppercase tracking-wider text-muted-foreground">Elsewhere</div>
|
||||
<ul class="mt-3 space-y-3 text-sm">
|
||||
<li><a href="https://x.com/hicarlosarias" class="flex items-center gap-2 hover:text-primary"><Icon name="twitter" class="h-3.5 w-3.5" /> @hicarlosarias</a></li>
|
||||
<li><a href="https://x.com/" class="flex items-center gap-2 hover:text-primary"><Icon name="twitter" class="h-3.5 w-3.5" /> @yourhandle</a></li>
|
||||
<li><a href="/rss.xml" class="flex items-center gap-2 hover:text-primary"><Icon name="rss" class="h-3.5 w-3.5" /> RSS feed</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<div class="text-xs font-medium uppercase tracking-wider text-muted-foreground">Restaurant tips</div>
|
||||
<div class="text-xs font-medium uppercase tracking-wider text-muted-foreground">Tips</div>
|
||||
<p class="mt-2 text-sm text-muted-foreground">Know a new opening or an underrated spot? Send it our way — we factor reader tips into our guides and news roundups.</p>
|
||||
</div>
|
||||
</aside>
|
||||
|
|
|
|||
|
|
@ -4,38 +4,19 @@ import Breadcrumbs from "../components/Breadcrumbs.astro";
|
|||
import { SITE } from "../lib/blog-data.js";
|
||||
|
||||
// Plain-text answers so the visible content exactly matches the FAQPage schema.
|
||||
// Replace these placeholders with your own questions in app/src/pages/faq.astro.
|
||||
const faqs = [
|
||||
{
|
||||
q: "Is the tap water safe to drink in Medellín?",
|
||||
a: "Yes. Medellín's utility, EPM, treats the city's water to a potable standard, and most residents drink it straight from the tap. This is unusual for Latin America and is one reason street food and ice here are lower-risk than in many nearby destinations.",
|
||||
q: "What is this site about?",
|
||||
a: "Replace this with a short description of what your site covers and who it is for.",
|
||||
},
|
||||
{
|
||||
q: "Is street food safe to eat in Medellín?",
|
||||
a: "Generally yes, with a few habits: follow the queues (high turnover means fresher food), order things cooked to order and served hot, and be a little cautious with raw preparations in your first days while your stomach adjusts.",
|
||||
q: "How often is it updated?",
|
||||
a: "Tell visitors how frequently you publish and what they can expect from new content.",
|
||||
},
|
||||
{
|
||||
q: "Do I need to tip at restaurants in Medellín?",
|
||||
a: "Most sit-down restaurants add a voluntary 10% service charge (propina voluntaria) to the bill. You'll usually be asked if you want to include it; you can accept, decline, or adjust it. Tipping beyond that is appreciated but not expected.",
|
||||
},
|
||||
{
|
||||
q: "Do restaurants in Medellín have English menus?",
|
||||
a: "In the tourist- and expat-heavy areas — El Poblado, Provenza, and parts of Laureles — many places have English menus or English-speaking staff. In more local neighborhoods, expect Spanish-only menus, so a translation app helps.",
|
||||
},
|
||||
{
|
||||
q: "Can I pay by card, or do I need cash?",
|
||||
a: "Cards are widely accepted at sit-down restaurants and cafés in El Poblado, Provenza, and Laureles. Carry some cash (Colombian pesos) for street food, market stalls, small family-run spots, and tips.",
|
||||
},
|
||||
{
|
||||
q: "Which neighborhoods are best for eating out?",
|
||||
a: "El Poblado and Provenza for upscale and international dining, Laureles for a more local, better-value scene, and Envigado and Sabaneta for traditional Paisa food. Each has a distinct character worth exploring.",
|
||||
},
|
||||
{
|
||||
q: "What are typical restaurant hours?",
|
||||
a: "Lunch runs roughly 12–3pm, when many places serve an affordable set menu (menú del día). Dinner is usually 7–10pm. Some kitchens close between services, and a number of restaurants close on Sundays or Mondays, so it's worth checking ahead.",
|
||||
},
|
||||
{
|
||||
q: "Do I need a reservation?",
|
||||
a: "For the city's top and fine-dining restaurants, yes — especially on weekends. For cafés, casual spots, and most neighborhood restaurants, you can simply walk in.",
|
||||
q: "How can I get in touch?",
|
||||
a: "Point people to your contact page or email, and update this answer to match how you prefer to be reached.",
|
||||
},
|
||||
];
|
||||
|
||||
|
|
@ -52,8 +33,8 @@ const jsonLd = {
|
|||
---
|
||||
|
||||
<BaseLayout
|
||||
title={`Dining in Medellín: FAQ - ${SITE.name}`}
|
||||
description="Common questions about eating out in Medellín — tap water, tipping, street food, neighborhoods, hours, and more — answered for English-speaking visitors."
|
||||
title={`FAQ - ${SITE.name}`}
|
||||
description={`Frequently asked questions about ${SITE.name}.`}
|
||||
canonical="/faq"
|
||||
jsonLd={jsonLd}
|
||||
>
|
||||
|
|
@ -63,11 +44,10 @@ const jsonLd = {
|
|||
<header class="mt-6">
|
||||
<div class="text-xs font-medium uppercase tracking-[0.2em] text-primary">FAQ</div>
|
||||
<h1 class="mt-2 font-serif text-4xl font-semibold tracking-tight sm:text-5xl">
|
||||
Dining in Medellín: FAQ
|
||||
Frequently asked questions
|
||||
</h1>
|
||||
<p class="mt-4 max-w-xl text-muted-foreground">
|
||||
Quick, practical answers to the questions English-speaking visitors ask most about eating
|
||||
out in Medellín.
|
||||
Quick answers to common questions. Edit these in <code>app/src/pages/faq.astro</code>.
|
||||
</p>
|
||||
</header>
|
||||
|
||||
|
|
|
|||
|
|
@ -59,13 +59,13 @@ const jsonLd = {
|
|||
<div class="relative mx-auto flex min-h-[calc(100svh-6rem)] max-w-6xl items-center px-5 py-20 sm:min-h-[680px] sm:py-24">
|
||||
<div class="max-w-4xl text-white drop-shadow-[0_1px_18px_rgba(0,0,0,0.28)]">
|
||||
<h1 class="font-serif text-[2.5rem] font-medium leading-[1.02] tracking-[-0.02em] sm:text-6xl lg:text-7xl">
|
||||
Medellín’s
|
||||
<span class="italic text-white"> restaurants</span>,
|
||||
<span class="italic text-white"> food news</span>, and
|
||||
<span class="italic text-white"> where to eat</span>.
|
||||
Fresh
|
||||
<span class="italic text-white"> stories</span>,
|
||||
<span class="italic text-white"> guides</span>, and
|
||||
<span class="italic text-white"> ideas</span>.
|
||||
</h1>
|
||||
<p class="mt-8 max-w-xl text-lg leading-relaxed text-white/86">
|
||||
Guides, openings, and data-driven dining picks for English-speaking expats, nomads, and travelers — researched carefully and updated often.
|
||||
Your homepage hero copy goes here — describe what {SITE.name} offers and who it’s for. Edit it in app/src/pages/index.astro.
|
||||
</p>
|
||||
<div class="mt-10 flex flex-wrap items-center gap-x-8 gap-y-4">
|
||||
<a
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import { SITE } from "../lib/blog-data.js";
|
|||
|
||||
<BaseLayout
|
||||
title={`Services - ${SITE.name}`}
|
||||
description="Work with Comiida: restaurant guides, sponsored editorial features, and local food consulting for businesses operating in Medellín."
|
||||
description={`Work with ${SITE.name} — an overview of what we offer.`}
|
||||
canonical="/services"
|
||||
>
|
||||
<div class="mx-auto max-w-3xl px-5 py-12">
|
||||
|
|
@ -15,86 +15,49 @@ import { SITE } from "../lib/blog-data.js";
|
|||
<header class="mt-6">
|
||||
<div class="text-xs font-medium uppercase tracking-[0.2em] text-primary">Work with us</div>
|
||||
<h1 class="mt-2 font-serif text-5xl font-semibold leading-[1.05] tracking-tight">
|
||||
Reach Medellín's food-curious expats, nomads, and travelers.
|
||||
What we offer.
|
||||
</h1>
|
||||
</header>
|
||||
|
||||
<div class="prose-article mt-10">
|
||||
<p>
|
||||
Comiida is the English-language guide to eating in Medellín. Our readers are expats settling in,
|
||||
digital nomads on extended stays, and travelers planning their first trip — people actively
|
||||
deciding where to eat, drink, and spend. If you want to be part of that conversation, here is how
|
||||
we can work together.
|
||||
This is a placeholder Services page. Describe how visitors can work with
|
||||
{SITE.name}, or delete this page if you don’t need it. Edit it in
|
||||
<code>app/src/pages/services.astro</code>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<section class="mt-12 border-t border-border pt-10">
|
||||
<div class="text-xs font-medium uppercase tracking-[0.2em] text-primary">01</div>
|
||||
<h2 class="mt-2 font-serif text-3xl font-semibold tracking-tight">Restaurant Guides</h2>
|
||||
<h2 class="mt-2 font-serif text-3xl font-semibold tracking-tight">Service one</h2>
|
||||
<p class="mt-4 leading-relaxed text-muted-foreground">
|
||||
We produce deep, honest restaurant guides for Medellín neighborhoods, cuisine types, and dining
|
||||
occasions — the kind of editorial that ranks in search and earns reader trust over time.
|
||||
Each guide is researched from public signals (ratings, menus, awards, local press) and written
|
||||
to the standards of a serious travel publication.
|
||||
</p>
|
||||
<ul class="mt-4 space-y-2 text-muted-foreground">
|
||||
<li class="flex items-start gap-2"><span class="mt-1 text-primary">→</span> Neighborhood round-ups (El Poblado, Laureles, Envigado, Sabaneta, and beyond)</li>
|
||||
<li class="flex items-start gap-2"><span class="mt-1 text-primary">→</span> Occasion guides: date night, family brunch, business lunch, late-night bites</li>
|
||||
<li class="flex items-start gap-2"><span class="mt-1 text-primary">→</span> Cuisine-specific lists: Colombian, Japanese, Italian, vegetarian & vegan, and more</li>
|
||||
<li class="flex items-start gap-2"><span class="mt-1 text-primary">→</span> Evergreen pieces updated as the city’s scene evolves</li>
|
||||
</ul>
|
||||
<p class="mt-4 leading-relaxed text-muted-foreground">
|
||||
Guides are driven by editorial judgment, not by who pays — but restaurants that want to
|
||||
ensure we have the most accurate, up-to-date information about their venue can reach out to
|
||||
submit details for consideration.
|
||||
Describe your first offering here — what it is, who it’s for, and
|
||||
the outcome a client can expect.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section class="mt-12 border-t border-border pt-10">
|
||||
<div class="text-xs font-medium uppercase tracking-[0.2em] text-primary">02</div>
|
||||
<h2 class="mt-2 font-serif text-3xl font-semibold tracking-tight">Sponsored Features</h2>
|
||||
<h2 class="mt-2 font-serif text-3xl font-semibold tracking-tight">Service two</h2>
|
||||
<p class="mt-4 leading-relaxed text-muted-foreground">
|
||||
A sponsored feature gives your restaurant, food business, or hospitality brand a dedicated,
|
||||
long-form placement on Comiida — written to the same editorial standard as the rest of
|
||||
the site, clearly labeled as sponsored, and built to perform in search over time.
|
||||
</p>
|
||||
<ul class="mt-4 space-y-2 text-muted-foreground">
|
||||
<li class="flex items-start gap-2"><span class="mt-1 text-primary">→</span> A full editorial profile of your venue, concept, or product</li>
|
||||
<li class="flex items-start gap-2"><span class="mt-1 text-primary">→</span> Inclusion in relevant round-up guides and category pages</li>
|
||||
<li class="flex items-start gap-2"><span class="mt-1 text-primary">→</span> SEO-optimized copy targeting the exact searches your future guests are running</li>
|
||||
<li class="flex items-start gap-2"><span class="mt-1 text-primary">→</span> Permanent placement — no monthly subscription, no expiry date</li>
|
||||
</ul>
|
||||
<p class="mt-4 leading-relaxed text-muted-foreground">
|
||||
Sponsored features are a fit for restaurants looking to build lasting organic visibility, food
|
||||
importers and producers targeting the expat market, and hospitality brands launching in
|
||||
Medellín.
|
||||
Describe your second offering. Use short paragraphs and bullet lists to keep
|
||||
it scannable.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section class="mt-12 border-t border-border pt-10">
|
||||
<div class="text-xs font-medium uppercase tracking-[0.2em] text-primary">03</div>
|
||||
<h2 class="mt-2 font-serif text-3xl font-semibold tracking-tight">Local Food Consulting</h2>
|
||||
<h2 class="mt-2 font-serif text-3xl font-semibold tracking-tight">Service three</h2>
|
||||
<p class="mt-4 leading-relaxed text-muted-foreground">
|
||||
Comiida is built by an AI engineer who lives in Medellín and has spent years mapping
|
||||
the city’s food scene. That knowledge is available for hire.
|
||||
</p>
|
||||
<ul class="mt-4 space-y-2 text-muted-foreground">
|
||||
<li class="flex items-start gap-2"><span class="mt-1 text-primary">→</span> <strong>Market research:</strong> understanding the English-speaking diner in Medellín — what they look for, where they eat, how they discover new places</li>
|
||||
<li class="flex items-start gap-2"><span class="mt-1 text-primary">→</span> <strong>Location advice:</strong> neighborhood-by-neighborhood analysis for restaurants planning a new opening or expansion</li>
|
||||
<li class="flex items-start gap-2"><span class="mt-1 text-primary">→</span> <strong>English menu & copy review:</strong> making sure your translated menu and online presence land correctly with a native-English-speaking audience</li>
|
||||
<li class="flex items-start gap-2"><span class="mt-1 text-primary">→</span> <strong>Food tours & concierge briefings:</strong> curated itineraries for corporate groups, relocation services, and travel operators</li>
|
||||
</ul>
|
||||
<p class="mt-4 leading-relaxed text-muted-foreground">
|
||||
Engagements range from a single two-hour briefing call to a multi-week research project.
|
||||
Scope and pricing are agreed before any work begins.
|
||||
Describe your third offering, or remove this section if you offer fewer services.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section class="mt-12 border-t border-border pt-10">
|
||||
<h2 class="font-serif text-2xl font-semibold tracking-tight">Get in touch</h2>
|
||||
<p class="mt-4 leading-relaxed text-muted-foreground">
|
||||
All three services start with a conversation. Tell us what you’re trying to accomplish
|
||||
and we’ll let you know quickly whether we’re a good fit.
|
||||
Everything starts with a conversation. Tell us what you’re trying to
|
||||
accomplish and we’ll let you know whether we’re a good fit.
|
||||
</p>
|
||||
<div class="mt-6">
|
||||
<a
|
||||
|
|
|
|||
Loading…
Reference in a new issue