A Quiet Way to Add Comments

Notes on integrating a comment section with Astro, motion, and modular simplicity.

By WiL

July 11, 2025

On Waiting to Be Heard: Comment Moderation with Cusdis | Writ In Light | Writ In Light

There’s something gentle about the idea of a comment section. Not as a forum. Not a battleground.
But a small space — where something written can ripple outward, and sometimes return.

For Writ in Light, I wanted a way to allow that kind of response.
Quiet. Lightweight. Easy to step into.

This is how I built it.


Choosing a Tool That Doesn’t Shout

I explored a few options. First, it had to support static-only deployment. The uncertainty of the reach of this site led me hesitant to yet change to a full web page deployment. Keeping it static would keep my financial risk to a minimum.

This tightened the possibilities to just Giscus, Disqus and a nice little open-source project called Cusdis. Giscus was too developer-centric, requiring Github signin.
Disqus was too heavy and tracker-laden, too eager.

I ended up choosing Curdis — an free, cloud-hosted service.
It doesn’t require users to sign in. It doesn’t track.
It just works.


Built in Layers

The site follows atomic design principles. So the comment section became its own organism:

  • PulseLine — A single placeholder shimmer
  • CommentLoader — Three staggered lines to mimic text loading
  • CommentSection — The full block, including heading, intro text, and the embedded thread

This kept things flexible and poetic.
Even the loading state became a soft invitation, not just a spinner.


Letting It Breathe In

Rather than load upfront, the comment section only appears when scrolled to.
That’s done with IntersectionObserver — a native browser API.

Once it appears, the script for Cusdis is injected.
Until then, a gentle pulse animation shows the space waiting.

The motion is handled with Framer Motion , so the entry feels organic — like something appearing under candlelight. To think the last post I was stating my choice of only Astro, and now returns React.


Making It Visibly Gentle

Because Cusdis renders inside an iframe, I needed to make sure it wasn’t clipped or stuck.

I added styles like:

#cusdis_thread iframe {
  width: 100%;
  height: auto;
  min-height: 350px;
  overflow: visible;
  background: transparent;
  border: none;
}

And made sure no parent containers had overflow: hidden that could trap it.

The result: no scrollbars, no cutoff. Just words, when they arrive.

At least, that’s what I hoped for. I still faced issues with the scrollbar even after making sure there were no hidden overflows. Perhaps I will try the self-hosted version when I require a back-end for my tools section. Else, migration to my own custom comment section may be more suitable then. Until then, this current setup is more than sufficient.


A Slow Production Process

Screenshot of the Cusdis comment interface showing the comment form and existing comments

The Cusdis implementation only allows manually approved comments to be visible. Each thought rests in quiet waiting, seen in its own time. I’ll bring your words to light, when the moment is right.


The Text Beneath the Text

At the end of each post, the section appears:

Write something in the light. A quiet sentence. An open box.

If someone leaves something, it lingers there — as a kind of echo. If not, the space still held it open.

That felt like the right balance.

It loads fast, respects silence, and lets readers choose when to speak.

That’s all I wanted from it.

Write something in the light

Leave a thought, reflection, or a quiet ripple below.