> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kafkalabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Supported Languages

> Programming languages and file types supported by KafkaCode

## Overview

KafkaCode supports **7 major programming languages** commonly used in modern application development. The scanner automatically detects file types and applies appropriate analysis techniques.

## Supported Languages

<CardGroup cols={2}>
  <Card title="Python" icon="python" color="#3776ab">
    `.py` files

    Full support for Python 2 and 3
  </Card>

  <Card title="JavaScript" icon="js" color="#f7df1e">
    `.js` files

    ES5, ES6+, Node.js, Browser JS
  </Card>

  <Card title="TypeScript" icon="code" color="#3178c6">
    `.ts` files

    All TypeScript versions
  </Card>

  <Card title="Java" icon="java" color="#007396">
    `.java` files

    Java 8 through Java 21
  </Card>

  <Card title="Go" icon="golang" color="#00add8">
    `.go` files

    All Go versions
  </Card>

  <Card title="Ruby" icon="gem" color="#cc342d">
    `.rb` files

    Ruby 2.x and 3.x
  </Card>

  <Card title="PHP" icon="php" color="#777bb4">
    `.php` files

    PHP 7.x and 8.x
  </Card>
</CardGroup>

## Language-Specific Features

### Python

<Tabs>
  <Tab title="Detection">
    **What KafkaCode detects in Python:**

    ```python theme={null}
    # ❌ Secrets detection
    AWS_ACCESS_KEY = "AKIAIOSFODNN7EXAMPLE"
    db_password = "mypassword123"

    # ❌ PII detection
    user_email = "john.doe@company.com"
    phone = "+1-555-123-4567"

    # ❌ Sensitive assignments
    SECRET_KEY = "django-insecure-key"
    API_KEY = "sk_live_abc123..."
    ```
  </Tab>

  <Tab title="Best Practices">
    **Recommended patterns:**

    ```python theme={null}
    # ✅ Use environment variables
    import os
    AWS_ACCESS_KEY = os.getenv('AWS_ACCESS_KEY')
    SECRET_KEY = os.environ.get('SECRET_KEY')

    # ✅ Use configuration files
    from django.conf import settings
    API_KEY = settings.API_KEY

    # ✅ Use secrets management
    from aws_secretsmanager import get_secret
    db_password = get_secret('db_password')
    ```
  </Tab>

  <Tab title="Frameworks">
    **Supported Python frameworks:**

    * Django
    * Flask
    * FastAPI
    * Pyramid
    * Bottle
  </Tab>
</Tabs>

### JavaScript / TypeScript

<Tabs>
  <Tab title="Detection">
    **What KafkaCode detects in JS/TS:**

    ```javascript theme={null}
    // ❌ Hardcoded secrets
    const apiKey = 'sk_live_abc123...';
    const dbUrl = 'mongodb://user:pass@localhost';

    // ❌ PII in code
    const adminEmail = 'admin@company.com';
    const userPhone = '+1-555-0123';

    // ❌ Exposed tokens
    const githubToken = 'ghp_abc123...';
    ```
  </Tab>

  <Tab title="Best Practices">
    **Recommended patterns:**

    ```javascript theme={null}
    // ✅ Environment variables
    const apiKey = process.env.API_KEY;
    const dbUrl = process.env.DATABASE_URL;

    // ✅ Config files
    import config from './config';
    const apiKey = config.get('apiKey');

    // ✅ Secrets manager
    const { getSecret } = require('./secrets');
    const token = await getSecret('github_token');
    ```
  </Tab>

  <Tab title="Frameworks">
    **Supported JS/TS frameworks:**

    * Node.js
    * React / Next.js
    * Vue.js / Nuxt.js
    * Angular
    * Express / Fastify
    * NestJS
  </Tab>
</Tabs>

### Java

<Tabs>
  <Tab title="Detection">
    **What KafkaCode detects in Java:**

    ```java theme={null}
    // ❌ Hardcoded credentials
    String apiKey = "AKIAIOSFODNN7EXAMPLE";
    String password = "mypassword123";

    // ❌ Connection strings
    String dbUrl = "jdbc:postgresql://localhost/db?user=admin&password=pass";

    // ❌ PII in constants
    private static final String ADMIN_EMAIL = "admin@company.com";
    ```
  </Tab>

  <Tab title="Best Practices">
    **Recommended patterns:**

    ```java theme={null}
    // ✅ Environment variables
    String apiKey = System.getenv("API_KEY");

    // ✅ Properties files
    Properties props = new Properties();
    props.load(new FileInputStream("config.properties"));
    String apiKey = props.getProperty("api.key");

    // ✅ Spring configuration
    @Value("${api.key}")
    private String apiKey;
    ```
  </Tab>

  <Tab title="Frameworks">
    **Supported Java frameworks:**

    * Spring Boot
    * Spring Framework
    * Jakarta EE
    * Micronaut
    * Quarkus
  </Tab>
</Tabs>

### Go

<Tabs>
  <Tab title="Detection">
    **What KafkaCode detects in Go:**

    ```go theme={null}
    // ❌ Hardcoded secrets
    const apiKey = "sk_live_abc123..."
    var dbPassword = "mypassword"

    // ❌ Connection strings
    dsn := "user:password@tcp(localhost:3306)/db"

    // ❌ API tokens
    token := "ghp_abc123..."
    ```
  </Tab>

  <Tab title="Best Practices">
    **Recommended patterns:**

    ```go theme={null}
    // ✅ Environment variables
    import "os"
    apiKey := os.Getenv("API_KEY")

    // ✅ Config packages
    import "github.com/spf13/viper"
    viper.SetConfigFile(".env")
    apiKey := viper.GetString("API_KEY")

    // ✅ Secrets from vault
    secret, err := vault.GetSecret("api-key")
    ```
  </Tab>

  <Tab title="Frameworks">
    **Supported Go frameworks:**

    * Gin
    * Echo
    * Fiber
    * Chi
    * Gorilla
  </Tab>
</Tabs>

### Ruby

<Tabs>
  <Tab title="Detection">
    **What KafkaCode detects in Ruby:**

    ```ruby theme={null}
    # ❌ Hardcoded credentials
    api_key = "sk_live_abc123..."
    db_password = "mypassword"

    # ❌ PII in code
    admin_email = "admin@company.com"

    # ❌ Secret tokens
    secret_token = "abc123..."
    ```
  </Tab>

  <Tab title="Best Practices">
    **Recommended patterns:**

    ```ruby theme={null}
    # ✅ Environment variables
    api_key = ENV['API_KEY']
    db_password = ENV.fetch('DB_PASSWORD')

    # ✅ Rails credentials
    api_key = Rails.application.credentials.api_key

    # ✅ Configuration gems
    require 'dotenv'
    Dotenv.load
    api_key = ENV['API_KEY']
    ```
  </Tab>

  <Tab title="Frameworks">
    **Supported Ruby frameworks:**

    * Ruby on Rails
    * Sinatra
    * Hanami
    * Grape
    * Padrino
  </Tab>
</Tabs>

### PHP

<Tabs>
  <Tab title="Detection">
    **What KafkaCode detects in PHP:**

    ```php theme={null}
    // ❌ Hardcoded secrets
    $apiKey = "sk_live_abc123...";
    $dbPassword = "mypassword";

    // ❌ Connection strings
    $dsn = "mysql:host=localhost;dbname=db;user=admin;password=pass";

    // ❌ PII exposure
    define('ADMIN_EMAIL', 'admin@company.com');
    ```
  </Tab>

  <Tab title="Best Practices">
    **Recommended patterns:**

    ```php theme={null}
    // ✅ Environment variables
    $apiKey = getenv('API_KEY');
    $apiKey = $_ENV['API_KEY'];

    // ✅ Config files
    $config = require 'config.php';
    $apiKey = $config['api_key'];

    // ✅ Laravel configuration
    $apiKey = config('services.stripe.key');
    ```
  </Tab>

  <Tab title="Frameworks">
    **Supported PHP frameworks:**

    * Laravel
    * Symfony
    * CodeIgniter
    * Yii
    * CakePHP
  </Tab>
</Tabs>

## File Type Recognition

KafkaCode automatically recognizes files by extension:

| Extension | Language           | Supported |
| --------- | ------------------ | --------- |
| `.py`     | Python             | ✅ Yes     |
| `.js`     | JavaScript         | ✅ Yes     |
| `.ts`     | TypeScript         | ✅ Yes     |
| `.jsx`    | JavaScript (React) | ✅ Yes     |
| `.tsx`    | TypeScript (React) | ✅ Yes     |
| `.java`   | Java               | ✅ Yes     |
| `.go`     | Go                 | ✅ Yes     |
| `.rb`     | Ruby               | ✅ Yes     |
| `.php`    | PHP                | ✅ Yes     |
| `.c`      | C                  | ❌ Not yet |
| `.cpp`    | C++                | ❌ Not yet |
| `.cs`     | C#                 | ❌ Not yet |
| `.swift`  | Swift              | ❌ Not yet |
| `.kt`     | Kotlin             | ❌ Not yet |
| `.rs`     | Rust               | ❌ Not yet |

<Info>
  More languages are coming soon! Check our [roadmap](https://github.com/nikhil-kapu/KafkacodeFnpm/issues) for upcoming support.
</Info>

## Ignored Files & Directories

KafkaCode automatically skips:

### Built-in Ignores

<CardGroup cols={2}>
  <Card title="Version Control" icon="code-branch">
    * `.git/`
    * `.svn/`
    * `.hg/`
  </Card>

  <Card title="Dependencies" icon="box">
    * `node_modules/`
    * `vendor/`
    * `bower_components/`
  </Card>

  <Card title="Python" icon="python">
    * `venv/`
    * `.venv/`
    * `__pycache__/`
    * `.pytest_cache/`
    * `*.pyc`
  </Card>

  <Card title="Build Outputs" icon="hammer">
    * `build/`
    * `dist/`
    * `target/`
    * `out/`
    * `.next/`
  </Card>
</CardGroup>

### Gitignore Support

KafkaCode automatically respects your `.gitignore`:

```gitignore theme={null}
# .gitignore
*.env
secrets/
config/local.js
*.key
*.pem
```

All files matching these patterns are automatically excluded from scanning.

## Multi-Language Projects

KafkaCode handles polyglot repositories seamlessly:

```bash theme={null}
project/
├── backend/          # Python + Go
│   ├── api.py
│   └── server.go
├── frontend/         # TypeScript + React
│   ├── App.tsx
│   └── utils.ts
├── mobile/          # Java (Android)
│   └── MainActivity.java
└── scripts/         # Ruby + PHP
    ├── deploy.rb
    └── migrate.php
```

All files are scanned with appropriate language-specific rules.

## Language-Specific Patterns

Each language has custom detection patterns:

<AccordionGroup>
  <Accordion title="Python-specific">
    * Django `SECRET_KEY` detection
    * Flask `app.secret_key` patterns
    * SQLAlchemy connection strings
    * Environment variable misuse
  </Accordion>

  <Accordion title="JavaScript-specific">
    * `process.env` misuse detection
    * JWT secret patterns
    * API key in fetch/axios calls
    * LocalStorage/Cookie PII
  </Accordion>

  <Accordion title="Java-specific">
    * JDBC connection string patterns
    * Spring `@Value` misuse
    * Properties file secrets
    * Hibernate credentials
  </Accordion>

  <Accordion title="Go-specific">
    * Connection DSN patterns
    * Const secret detection
    * Environment variable handling
    * Config struct analysis
  </Accordion>
</AccordionGroup>

## Coming Soon

<CardGroup cols={2}>
  <Card title="C / C++" icon="c">
    Support planned for Q2 2025
  </Card>

  <Card title="C# / .NET" icon="microsoft">
    Support planned for Q2 2025
  </Card>

  <Card title="Rust" icon="rust">
    Support planned for Q3 2025
  </Card>

  <Card title="Kotlin" icon="android">
    Support planned for Q3 2025
  </Card>

  <Card title="Swift" icon="apple">
    Support planned for Q4 2025
  </Card>

  <Card title="Scala" icon="code">
    Support planned for Q4 2025
  </Card>
</CardGroup>

<Tip>
  **Want a specific language?** [Request it on GitHub](https://github.com/nikhil-kapu/KafkacodeFnpm/issues) or contribute a PR!
</Tip>

## Next Steps

<CardGroup cols={2}>
  <Card title="Detection Methods" icon="magnifying-glass" href="/concepts/detection-methods">
    Learn what KafkaCode detects
  </Card>

  <Card title="Basic Scanning" icon="play" href="/usage/basic-scanning">
    Start scanning your code
  </Card>

  <Card title="Custom Patterns" icon="wrench" href="/advanced/custom-patterns">
    Add language-specific rules
  </Card>

  <Card title="Examples" icon="book" href="/examples/basic-scan">
    See real-world examples
  </Card>
</CardGroup>
