 Command

Pranesh Nikhar's personal site. Vim-style keybinds for navigation; theme + font pickers below.

Theme
 Font Body Code
Reader
Keybinds
Navigation
j / ↓ Next item k / ↑ Previous item g First item in region G Last item in region zz Center focused item h / l Move left/right region ] / [ Next/previous heading } / { Next/previous block d / u Half-page down/up
Layout
<zh> / <zl> Toggle left/right sidebar <zr> Toggle reader view <zj> / <zk> Focus main/navbar <S-h/j/k/l> Focus left/main/navbar/right ⌃H / ⌃L Focus left/right sidebar ⌃J / ⌃K Focus main/navbar ⇧C / ⇧E Collapse / expand all sections
Dialogs
⌃P / : Command palette ⌃X Theme picker / Search ? Show keybinds Esc / ⌃C Close dialog
History
n Next document b Previous document ⌃O History back ⌃I History forward
 Search
about: Pranesh Nikhar about/more: 🪪 More docs/test: Docs Test ideas: 💡 Ideas more: ➕ More now: Now posts: 📬 Posts projects: 📚 Projects webtui: Style posts/agentic-eda: 📊 AgenticEDA — Automated Exploratory Data Analysis with LangGraph posts/cap-theorem-outage-story: 🌐 CAP Theorem with a Real Outage Story posts/codepilot: ✈️ CodePilot — From Requirements to Deployable FastAPI Backend posts/common-auth-mistakes: 🔐 Common Auth Mistakes Developers Make posts/compiled-vs-jit-vs-interpreted: ⚡ Why Is X Language Fast or Slow? — Compiled vs JIT vs Interpreted posts/cs-degree-gaps: 🎓 Things CS Degrees Don't Teach You posts/cve-2025-breach-analysis: 🛡️ CVE-2025 Breach Analysis — Midnight Blizzard and the 16 Billion Credential Leak posts/fixloop: 🔄 FixLoop — AI Agent Loop for Self-Correcting Code posts/functional-vs-oop: ⚡ Functional vs OOP — Same Problem, Both Ways posts/getman: 🦾 Getman — Declarative API Tester for CLI & TUI posts/how-compilers-optimize: ⚙️ How Compilers Actually Optimize Your Code posts/http3-quic: ⚡ HTTP/3 and QUIC — Why They Matter posts/leetcode-vs-engineering: 🧩 LeetCode vs Real Engineering Skills posts/llm-from-scratch: 🧠 LLM from Scratch — GPT-Style Transformer in PyTorch posts/lsm-trees-bloom-filters: 🌳 LSM Trees & Bloom Filters — Production Deep Dive posts/mcp-workflow-builder: 🔧 MCP Workflow Builder — Visual DAG for MCP Tools posts/persistent-memory: 🧠 Persistent Memory — Long-Term Memory for AI Agents via MCP posts/playcli: 🎬 PlayCLI — Terminal Video Player posts/postgres-mvcc: 🗄️ How PostgreSQL MVCC Works — Multi-Version Concurrency Control Deep Dive posts/raft-consensus: ⛵ Raft Consensus Algorithm Explained posts/rust-borrow-checker: 🦀 Rust Borrow Checker — Catches Real Bugs posts/titan: 🤖 Titan — Terminal AI Coding Agent posts/what-happens-url: 🌐 What Happens Between Typing a URL and Seeing the Page posts/what-happens-when-you-run-a-program: ⚙️ What Actually Happens When You Run a Program posts/zero-knowledge-proofs: 🔐 Zero-Knowledge Proofs Explained Simply webtui/components/accordion: Accordion webtui/components/badge: Badge webtui/components/button: Button webtui/components/checkbox: Checkbox webtui/components/dialog: Dialog webtui/components/input: Input webtui/components/popover: Popover webtui/components/pre: Pre webtui/components/progress: Progress webtui/components/radio: Radio webtui/components/range: Range webtui/components/separator: Separator webtui/components/spinner: Spinner webtui/components/switch: Switch webtui/components/table: Table webtui/components/textarea: Textarea webtui/components/tooltip: Popover webtui/components/typography: Typography webtui/components/view: View webtui/contributing/contributing: Contributing webtui/contributing/contributing: ## Local Development webtui/contributing/contributing: ## Issues webtui/contributing/contributing: ## Pull Requests webtui/contributing/style-guide: Style Guide webtui/contributing/style-guide: ## CSS Units webtui/contributing/style-guide: ## Selectors webtui/contributing/style-guide: ## Documentation webtui/installation/astro: Astro webtui/installation/astro: ## Scoping webtui/installation/astro: ### Frontmatter Imports webtui/installation/astro: ### ‹style› tag webtui/installation/astro: ### Full Library Import webtui/installation/nextjs: Next.js webtui/installation/vite: Vite webtui/plugins/plugin-dev: Developing Plugins webtui/plugins/plugin-dev: ### Style Layers webtui/plugins/plugin-nf: Nerd Font Plugin webtui/plugins/theme-catppuccin: Catppuccin Theme webtui/plugins/theme-custom: Custom Theme webtui/plugins/theme-everforest: Everforest Theme webtui/plugins/theme-gruvbox: Gruvbox Theme webtui/plugins/theme-nord: Nord Theme webtui/plugins/theme-vitesse: Vitesse Theme webtui/start/ascii-boxes: ASCII Boxes webtui/start/changelog: Changelog webtui/start/installation: Installation webtui/start/installation: ## Installation webtui/start/installation: ## Using CSS webtui/start/installation: ## Using ESM webtui/start/installation: ## Using a CDN webtui/start/installation: ## Full Library Import webtui/start/installation: ### CSS webtui/start/installation: ### ESM webtui/start/installation: ### CDN webtui/start/intro: Introduction webtui/start/intro: ## Features webtui/start/plugins: Plugins webtui/start/plugins: ## Official Plugins webtui/start/plugins: ### Themes webtui/start/plugins: ## Community Plugins webtui/start/theming: Theming webtui/start/theming: ## CSS Variables webtui/start/theming: ### Font Styles webtui/start/theming: ### Colors webtui/start/theming: ### Light & Dark webtui/start/theming: ## Theme Plugins webtui/start/theming: ### Using Multiple Theme Accents webtui/start/tuis-vs-guis: TUIs vs GUIs webtui/start/tuis-vs-guis: ## Monospace Fonts webtui/start/tuis-vs-guis: ## Character Cells
 Theme Current: Light j/k or ↑/↓ + Enter

✈️ CodePilot — From Requirements to Deployable FastAPI Backend

An automation agent that reads natural-language requirements and existing FastAPI code, reverse-engineers DB schemas, generates migrations, creates databases, and produces deployment configs — all with zero external dependencies.

🎯 What It Does

CodePilot is an automation agent that reads natural-language requirements and existing FastAPI code, then generates the entire backend stack: database schema, MySQL DDL / Alembic migrations, Docker + docker-compose config, GitHub Actions CI/CD, and deployment blueprints for Railway and Render.

$ codepilot all --requirements requirements.md --code-dir ./app
┌─────────────────────────────────────────────────────┐
│ 📄 Parsing requirements...                           │
│ 🔍 Analyzing existing code...                        │
│ 💾 Generating schema...                              │
│ 🗄️  Creating database...                             │
│ 🚀 Generating deployment configs...                   │
│ ✅ Pipeline complete!                                 │
└─────────────────────────────────────────────────────┘

🧱 Tech Stack

ComponentTechnology
LanguagePython 3.10+ (stdlib only — no runtime deps)
Code analysisast module (Python standard library)
CLIargparse (standard library)
SchemaMySQL DDL / Alembic auto-generation
DeployDocker, docker-compose, GitHub Actions, Railway, Render

The key design decision: zero external runtime dependencies. Everything uses Python’s standard library — ast for code analysis, argparse for CLI, pathlib for paths, dataclasses for data structures.


🏗️ Architecture

agent_pkg/
├── main.py                  # argparse CLI: parse, analyze, schema, db, deploy, all
├── requirements_parser.py   # Regex-based NL requirements parser
├── code_analyzer.py         # AST walker: extracts models, routes, auth, deps
├── db_builder.py            # Schema generation, MySQL creation, Alembic setup
├── deployer.py              # Docker, docker-compose, GHA, Railway, Render configs
└── utils.py                 # pretty_print, env helpers, config load/save

📝 Requirements Parser

The requirements_parser.py uses regex patterns to extract structured information from natural-language requirements documents:

# E-Commerce API
## Entities
- User: id, name, email, password_hash, created_at
- Product: id, name, price, stock, category_id
- Order: id, user_id, total, status, created_at

## Endpoints
- POST /users/register
- POST /users/login
- GET /products
- POST /orders
- GET /orders/:id

## Auth
- JWT-based authentication
- Protected routes

Extracted output:

  • Project name (e.g., “E-Commerce API”)
  • Entities with fields and inferred types
  • Endpoints with HTTP methods and paths
  • Auth requirements (JWT, OAuth, API key)
  • Relationships between entities (FK references)

🔍 Code Analyzer

The code_analyzer.py walks the Python AST of an existing FastAPI project to extract:

ExtractionWhat it finds
SQLAlchemy modelsColumn(...), relationship(...), Table(...)
Route decorators@app.get(), @router.post(), etc.
DB engine typecreate_engine() or async_engine()
Auth librariesjose, passlib, fastapi.security, oauth2
DependenciesFROM/IMPORT statements

The AST approach is more reliable than regex-based code analysis — it understands the actual structure of the Python code rather than treating it as text.


💾 Schema Builder

The db_builder.py performs two functions:

  1. DDL Generation: Creates CREATE TABLE statements with auto-increment primary keys, timestamps, foreign keys with indexes
  2. MySQL Execution: Connects via mysql CLI to create the database and apply schema
  3. Alembic Integration: Optionally sets up Alembic with initial migration

Schema fields from requirements that are missing in the analyzed code are automatically added (schema enrichment).


🚀 Deployer

Generates complete deployment configuration:

OutputDescription
DockerfileMulti-stage Python 3.11 build
docker-compose.ymlApp + MySQL 8.0 with health check
.github/workflows/deploy.ymlCI/CD with test → build → deploy
railway.jsonRailway deployment config
render.yamlRender blueprint

The docker-compose includes a MySQL 8.0 service with health check and proper dependency ordering.


🚀 Quick Start

# Full pipeline
codepilot all --requirements spec.md --code-dir ./app

# Individual steps
codepilot parse --requirements spec.md
codepilot analyze --code-dir ./app
codepilot schema --requirements spec.md --code-dir ./app
codepilot db --schema output/schema.sql
codepilot deploy --output-dir ./deploy

💡 Why It’s Interesting

CodePilot solves a practical problem — connecting the dots between natural-language specs, existing code, and production infrastructure. The zero-dependency design (stdlib only) means it installs instantly and runs anywhere. The AST-based code analysis is more robust than regex approaches. And the schema enrichment feature (merging requirements fields with discovered code fields) demonstrates how automated tooling can bridge the gap between what’s specified and what’s implemented. It’s a focused, practical automation tool that does one thing well.

 praneshnikhar.site / posts / codepilot · Top 1:1