---
title: Comments, Captcha, and CSV Stats
slug: comments-captcha-stats
type: post
status: published
date: 2026-07-02T11:45:00-04:00
modified: 2026-07-02T11:45:00-04:00
category: Features
tags: [comments, sqlite, stats]
summary: Comments are stored in SQLite, protected by a math captcha and a honeypot field, while visits stream into an Excel-friendly CSV.
author: Editor
cover:
allow_comments: true
menu_order: 0
---

Comments use SQLite with moderation enabled by default. Visitors answer a small math captcha, and a hidden honeypot field catches many automated submissions before they hit the database.

Approved comments render below each post. Pending, approved, spam, and deleted states are managed from the CLI:

```bash
php cli/blog.php comments:list --status=pending
php cli/blog.php comments:approve 1
```

Stats are written to `storage/stats/visits.csv` with date, time, path, route type, hashed IP, referrer, user agent, and status code. The file is intentionally human readable and importable into Excel.
