Built and run by one person.

Security Checklist for AI-Coded Analytics & Data Apps

For builders shipping analytics and data tools with AI coders. 120 items across 13 categories (React, FastAPI, Postgres, DuckDB, Cloudflare, MCP, Server, Auth). Distilled from real production hardening of 20+ live microservices. Pick a category to start.

120checklist items
13categories
No loginfree, open
2026-08-20last updated

Overview

A production security checklist for builders shipping AI-coded analytics and data apps - dashboards, data tools and SQL/LLM agents written with Cursor or Claude Code. 120 items across 13 categories, distilled from real production hardening of 20+ live microservices. Each item gives the risk, a plain-English fix, and working code.

It is organized by layer. Pick a category on the left (or from the list below) to see its items - the biggest categories are Frontend, Backend and Perimeter/Edge; the whole thing is searchable and every item has its own permalink.

Written for a mixed audience: each item leads with plain language and an everyday example before the technical specifics, so a non-engineer can grasp what the risk is and why it matters, while the code fix stays fully technical.

The 13 categories

  • React Frontend Security26 itemsSecuring the React + Vite app and its Vercel serverless proxies: security headers, CSP, CORS, rate limiting, auth, and safe handling of secrets and user input.
  • FastAPI Backend Security20 itemsHardening the FastAPI services: input validation, authentication, rate limits, safe error handling, logging hygiene, and streaming-safe middleware.
  • Database Layer Security (Postgres)7 itemsProtecting the Postgres layer: least-privilege roles, parameterized queries, row-level security, backups, and safe connection handling.
  • DuckDB-Specific Security6 itemsDuckDB-specific risks: read-only attach, query and resource limits, file-path safety, and containing what an analytical SQL surface can reach.
  • Perimeter and Edge Protection (Cloudflare)14 itemsCloudflare edge protection: WAF, rate limiting, bot and abuse controls, and keeping the origin off the open internet.
  • Infrastructure Security5 itemsInfrastructure hygiene: environment isolation, secrets management, safe deploys, and least-privilege service credentials.
  • Incident Response4 itemsBeing ready when something goes wrong: logging, alerting, an incident playbook, and safe rollback.
  • MCP Security (fastapi-mcp)4 itemsSecuring MCP (Model Context Protocol) servers: authentication, scoping what an AI agent can call, and rate/abuse limits on tool endpoints.
  • Server Security (VPS / Self-Hosted)5 itemsVPS and self-hosted server hardening: SSH, firewall, fail2ban, patching, and least-privilege OS users.
  • Authentication and Authorization11 itemsAuthentication and authorization: session and JWT handling, brute-force protection, and enforcing who can do what.
  • Supply Chain (Dependencies + CDN)8 itemsSupply-chain safety: pinning dependencies, vetting packages, CDN integrity, and reducing what a compromised dependency can reach.
  • Self-Hosted and Third-Party Apps3 itemsSelf-hosted and third-party apps: gating admin UIs behind auth, and safe defaults for tools you run but did not build.
  • Monitoring, Observability and Alerting7 itemsWatching every layer and getting alerted the moment something breaks: layered monitoring, real-path liveness probes, a tiered alerting system, a public status page with zero database exposure, and a two-tier automated-plus-human review.

How this is maintained

Every item comes from hardening real, live services (React on Vercel, FastAPI on VPS/OCI, Postgres and DuckDB behind Cloudflare, plus MCP servers for AI agents). The list grows as new attack patterns show up in the logs. Each category page has a "Copy page" button for handing the checklist straight to an AI coding agent, and every item can be copied on its own.

For AI agents: the full machine-readable checklist is at /ai/apps/security-checklist-full.md, and each category has a Markdown twin at /security/{category}.md.