Crunchy Garden: Building a Community Site

April 2024 - Present

Live at Crunchy.Garden

Why

Robert, a close friend of mine with whom I built Pick a Kit, has a vision for a community site for sustainability and gardening enthusiasts.

This site may go in any number of directions depending on how things turn out, but at a minimum, it'll give us a chance to use technologies we want to learn.

How

Crunchy Garden is built with Next.js, mostly in order to give me a chance to own a Next app larger than a toy project.

First, we used remark and other Markdown packages to support writing rich blog posts in Markdown.

Since then, Robert, I, a designer named Will, and others put in a few hours each week, split between design, dev, and planning time, and we've just about got a working forum:

Crunchy Garden post

The Next.js backend connects to a Postgres database that stores posts, and also publishes messages to a Confluent Kafka topic.

This last detail might seem particularly odd, but Kafka is something Robert and I both want to learn, and it'll enable some of the more event-driven features we have planned for Crunchy Garden's future.

Technical Highlights

Crunchy Garden is still in its infancy, but we have encountered and worked around a few issues. One that comes to mind:

iframe Support in Markdown

For the "Introducing Chip Drop" post on the blog, we needed to include a fun video by the guys over at Chip Drop.

Remark doesn't support iframe elements natively, and though packages like remark-iframes, we ran into issues trying to get them to work.

When our first attempts to debug these issues failed, I instead threw together this kludge:

function applyHackyHacks(html: string) {
  return html.replaceAll(/<p>iframe:([\S]*)<\/p>/g,
    `<iframe clas="w-full"
        sr="$1" frameborde="0" allowfullscreen>
     </iframe>`
  )
}

This is far from ideal, but it got us around the issue - we can now embed Youtube videos in our blog posts with the custom syntax iframe:https://www.youtube.com/embed/....

This function's odd name also makes it clear that eventually we should replace it with a proper solution, possibly when we move from Remark to another Markdown parser.

Crunchy Garden in 2025 and beyond

Crunchy Garden is under active development, giving us a chance to hone our development, design, and product skills.

Stay tuned for updates as this site grows!