--- 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.