ai-code-guardian 0.2.0

Security scanner for AI-generated code - detects vulnerabilities before you commit
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AI Code Guardian - Security Scanner for AI-Generated Code</title>
    <meta name="description" content="Catch security vulnerabilities in AI-generated code before you commit. Fast, free, and open source.">
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
            line-height: 1.6;
            color: #e6edf3;
            background: #0d1117;
        }

        .container {
            max-width: 1200px;
            margin: 0 auto;
            padding: 0 20px;
        }

        header {
            padding: 60px 0 40px;
            text-align: center;
            border-bottom: 1px solid #30363d;
        }

        .logo {
            font-size: 4rem;
            margin-bottom: 20px;
        }

        h1 {
            font-size: 3rem;
            margin-bottom: 20px;
            color: #58a6ff;
        }

        .tagline {
            font-size: 1.5rem;
            color: #8b949e;
            margin-bottom: 40px;
        }

        .install-box {
            background: #161b22;
            border: 1px solid #30363d;
            border-radius: 6px;
            padding: 20px;
            margin: 40px auto;
            max-width: 600px;
        }

        .install-box code {
            font-family: 'Monaco', 'Courier New', monospace;
            font-size: 1.2rem;
            color: #79c0ff;
        }

        .buttons {
            display: flex;
            gap: 20px;
            justify-content: center;
            margin: 30px 0;
            flex-wrap: wrap;
        }

        .btn {
            padding: 12px 30px;
            border-radius: 6px;
            text-decoration: none;
            font-weight: 600;
            transition: all 0.2s;
            display: inline-block;
        }

        .btn-primary {
            background: #238636;
            color: white;
        }

        .btn-primary:hover {
            background: #2ea043;
        }

        .btn-secondary {
            background: #21262d;
            color: #c9d1d9;
            border: 1px solid #30363d;
        }

        .btn-secondary:hover {
            background: #30363d;
        }

        .features {
            padding: 80px 0;
        }

        .features h2 {
            text-align: center;
            font-size: 2.5rem;
            margin-bottom: 60px;
            color: #58a6ff;
        }

        .feature-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
            gap: 40px;
        }

        .feature {
            background: #161b22;
            border: 1px solid #30363d;
            border-radius: 6px;
            padding: 30px;
        }

        .feature-icon {
            font-size: 2.5rem;
            margin-bottom: 15px;
        }

        .feature h3 {
            font-size: 1.5rem;
            margin-bottom: 15px;
            color: #e6edf3;
        }

        .feature p {
            color: #8b949e;
        }

        .demo {
            padding: 80px 0;
            background: #161b22;
        }

        .demo h2 {
            text-align: center;
            font-size: 2.5rem;
            margin-bottom: 40px;
            color: #58a6ff;
        }

        .demo-output {
            background: #0d1117;
            border: 1px solid #30363d;
            border-radius: 6px;
            padding: 30px;
            font-family: 'Monaco', 'Courier New', monospace;
            font-size: 0.9rem;
            overflow-x: auto;
            max-width: 800px;
            margin: 0 auto;
        }

        .demo-output .high {
            color: #f85149;
        }

        .demo-output .medium {
            color: #d29922;
        }

        .demo-output .file {
            color: #8b949e;
        }

        .demo-output .code {
            color: #79c0ff;
        }

        footer {
            padding: 40px 0;
            text-align: center;
            border-top: 1px solid #30363d;
            color: #8b949e;
        }

        footer a {
            color: #58a6ff;
            text-decoration: none;
        }

        footer a:hover {
            text-decoration: underline;
        }

        @media (max-width: 768px) {
            h1 {
                font-size: 2rem;
            }

            .tagline {
                font-size: 1.2rem;
            }

            .buttons {
                flex-direction: column;
                align-items: center;
            }
        }
    </style>
</head>
<body>
    <header>
        <div class="container">
            <div class="logo">🛡️</div>
            <h1>AI Code Guardian</h1>
            <p class="tagline">Security scanner for AI-generated code</p>
            
            <div class="install-box">
                <code>cargo install ai-code-guardian</code>
            </div>

            <div class="buttons">
                <a href="https://github.com/dinakars777/ai-code-guardian" class="btn btn-primary">View on GitHub</a>
                <a href="https://crates.io/crates/ai-code-guardian" class="btn btn-secondary">View on Crates.io</a>
            </div>
        </div>
    </header>

    <section class="features">
        <div class="container">
            <h2>What It Detects</h2>
            <div class="feature-grid">
                <div class="feature">
                    <div class="feature-icon">🔑</div>
                    <h3>Hardcoded Secrets</h3>
                    <p>API keys, passwords, tokens, and credentials exposed in source code</p>
                </div>

                <div class="feature">
                    <div class="feature-icon">💉</div>
                    <h3>SQL Injection</h3>
                    <p>Unsafe query construction with string concatenation</p>
                </div>

                <div class="feature">
                    <div class="feature-icon">🔓</div>
                    <h3>Insecure HTTP</h3>
                    <p>Unencrypted connections transmitting data in plain text</p>
                </div>

                <div class="feature">
                    <div class="feature-icon">☁️</div>
                    <h3>AWS Credentials</h3>
                    <p>Exposed AWS access keys and secrets</p>
                </div>

                <div class="feature">
                    <div class="feature-icon">🗄️</div>
                    <h3>Database URLs</h3>
                    <p>Connection strings with embedded credentials</p>
                </div>

                <div class="feature">
                    <div class="feature-icon">⚠️</div>
                    <h3>Dangerous Code</h3>
                    <p>eval() usage and other risky patterns</p>
                </div>
            </div>
        </div>
    </section>

    <section class="demo">
        <div class="container">
            <h2>Example Output</h2>
            <div class="demo-output">
<span style="color: #58a6ff;">🛡️  AI Code Guardian - Security Scan</span>

Scanning: ./src

<span class="high">❌ HIGH: Hardcoded API Key</span>
   <span class="file">File: api.js:12</span>
   <span class="file">Code:</span> <span class="code">const API_KEY = "sk-1234567890abcdef"</span>
   <span class="file">Risk: API key found in source code. Store in environment variables instead.</span>
   <span style="color: #3fb950; font-weight: bold;">Fix: Use process.env.API_KEY or import from .env file</span>

<span class="high">❌ HIGH: SQL Injection Risk</span>
   <span class="file">File: db.js:45</span>
   <span class="file">Code:</span> <span class="code">query = "SELECT * FROM users WHERE id = " + userId</span>
   <span class="file">Risk: String concatenation in SQL query. Use parameterized queries.</span>
   <span style="color: #3fb950; font-weight: bold;">Fix: Use parameterized queries: db.query('SELECT * FROM users WHERE id = ?', [userId])</span>

<span class="medium">❌ MEDIUM: Insecure HTTP Connection</span>
   <span class="file">File: api.js:8</span>
   <span class="file">Code:</span> <span class="code">fetch("http://api.example.com/data")</span>
   <span class="file">Risk: Using HTTP instead of HTTPS. Data transmitted in plain text.</span>
   <span style="color: #3fb950; font-weight: bold;">Fix: Change to HTTPS: https://...</span>

<span style="color: #e6edf3; font-weight: bold;">Scan complete: 3 issues found (2 high, 1 medium, 0 low)</span>
Scanned 15 files
            </div>
        </div>
    </section>

    <section class="features">
        <div class="container">
            <h2>Why AI Code Guardian?</h2>
            <div class="feature-grid">
                <div class="feature">
                    <div class="feature-icon">💡</div>
                    <h3>Auto-Fix Suggestions</h3>
                    <p>Don't just find issues - get actionable fixes. Every vulnerability includes a specific solution.</p>
                </div>

                <div class="feature">
                    <div class="feature-icon"></div>
                    <h3>Lightning Fast</h3>
                    <p>Written in Rust. Scans entire codebases in seconds. 10x faster than Node.js alternatives.</p>
                </div>

                <div class="feature">
                    <div class="feature-icon">📦</div>
                    <h3>Single Binary</h3>
                    <p>No npm, no node_modules, no dependencies. Just one executable.</p>
                </div>

                <div class="feature">
                    <div class="feature-icon">🎯</div>
                    <h3>Zero Config</h3>
                    <p>Works out of the box. No setup required.</p>
                </div>

                <div class="feature">
                    <div class="feature-icon">🔒</div>
                    <h3>100% Local</h3>
                    <p>No data leaves your machine. Complete privacy.</p>
                </div>

                <div class="feature">
                    <div class="feature-icon">🎨</div>
                    <h3>Beautiful Output</h3>
                    <p>Color-coded, easy to read results with clear explanations.</p>
                </div>
            </div>
        </div>
    </section>

    <footer>
        <div class="container">
            <p>Built with ❤️ by <a href="https://github.com/dinakars777">Dinakar Sarbada</a></p>
            <p style="margin-top: 10px;">
                <a href="https://github.com/dinakars777/ai-code-guardian">GitHub</a><a href="https://crates.io/crates/ai-code-guardian">Crates.io</a><a href="https://github.com/dinakars777/ai-code-guardian/issues">Report Issue</a>
            </p>
        </div>
    </footer>
</body>
</html>