{"id":31452657,"url":"https://github.com/arcblock/super-linter-api","last_synced_at":"2025-10-01T07:40:59.547Z","repository":{"id":311539700,"uuid":"1043994488","full_name":"ArcBlock/super-linter-api","owner":"ArcBlock","description":"A comprehensive HTTP API wrapper for code linting built on top if super-linter","archived":false,"fork":false,"pushed_at":"2025-09-23T03:29:59.000Z","size":818,"stargazers_count":1,"open_issues_count":12,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-23T04:24:13.293Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ArcBlock.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-25T03:06:29.000Z","updated_at":"2025-09-23T03:29:56.000Z","dependencies_parsed_at":"2025-08-25T06:40:44.317Z","dependency_job_id":"a3240157-7e3e-40f2-a3e9-416887d697f5","html_url":"https://github.com/ArcBlock/super-linter-api","commit_stats":null,"previous_names":["arcblock/super-linter-api"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/ArcBlock/super-linter-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArcBlock%2Fsuper-linter-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArcBlock%2Fsuper-linter-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArcBlock%2Fsuper-linter-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArcBlock%2Fsuper-linter-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ArcBlock","download_url":"https://codeload.github.com/ArcBlock/super-linter-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArcBlock%2Fsuper-linter-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277811992,"owners_count":25881285,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-01T02:00:09.286Z","response_time":88,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-01T07:40:58.223Z","updated_at":"2025-10-01T07:40:59.531Z","avatar_url":"https://github.com/ArcBlock.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Super-linter API\n\n\u003cdiv align=\"center\"\u003e\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Node.js Version](https://img.shields.io/badge/node-%3E%3D18-brightgreen.svg)](https://nodejs.org/)\n[![Docker](https://img.shields.io/badge/docker-supported-blue.svg)](https://www.docker.com/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue.svg)](https://www.typescriptlang.org/)\n\n**🚀 One-command HTTP API for code linting with 18+ production-ready linters**\n\n[Quick Start](#-quick-start) • [Live Demo](#-live-demo) • [API Docs](#-api-reference) • [Docker Hub](https://hub.docker.com/r/arcblock/super-linter-api)\n\n\u003c/div\u003e\n\n---\n\n## ✨ **What is Super-linter API?**\n\nA **production-ready HTTP API** that wraps 18+ popular code linters (ESLint, Prettier, Pylint, gofmt, RuboCop, etc.) into a single Docker container. Start linting any codebase in **under 10 seconds** with a simple REST API.\n\n```bash\n# Start the API (takes ~10 seconds)\ndocker run -p 3000:3000 arcblock/super-linter-api:latest\n\n# Lint JavaScript instantly\ncurl -X POST http://localhost:3000/eslint/json \\\n  -d \"console.log('Hello'); var unused = 42;\"\n```\n\n### 🎯 **Perfect For:**\n\n- **CI/CD Pipelines** - Fast, reliable linting in containers\n- **Code Review Tools** - Integrate linting into PR workflows\n- **Multi-language Projects** - One API for JavaScript, Python, Go, Ruby, Docker, YAML, etc.\n- **Microservices** - Centralized linting service for distributed teams\n\n---\n\n## 🏃 **Quick Start**\n\n### Option 1: Docker (Recommended)\n\n```bash\n# Production-ready in 10 seconds\ndocker run -d -p 3000:3000 --name linter-api arcblock/super-linter-api:latest\n\n# Test it works\ncurl http://localhost:3000/health\n```\n\n### Option 2: Try Online\n\n🌐 **[Live Demo API](https://super-linter-api-demo.herokuapp.com)** - Test without installing\n\n### Option 3: Local Development\n\n```bash\ngit clone https://github.com/arcblock/super-linter-api.git\ncd super-linter-api \u0026\u0026 pnpm install \u0026\u0026 pnpm dev\n```\n\n---\n\n## 🚀 **Live Demo**\n\n### JavaScript Linting\n\n```bash\ncurl -X POST http://localhost:3000/eslint/json \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"content\": \"const unused = 42; console.log(\\\"Hello World\\\");\",\n    \"filename\": \"demo.js\"\n  }'\n```\n\n**Response:**\n\n```json\n{\n  \"success\": true,\n  \"execution_time_ms\": 245,\n  \"issues\": [\n    {\n      \"file\": \"demo.js\",\n      \"line\": 1,\n      \"rule\": \"no-unused-vars\",\n      \"severity\": \"error\",\n      \"message\": \"'unused' is assigned a value but never used.\"\n    }\n  ]\n}\n```\n\n### Ultra-Fast Alternative (Oxlint - 5x faster)\n\n```bash\ncurl -X POST http://localhost:3000/oxlint/json \\\n  -d '{\"content\": \"const unused = 42;\", \"filename\": \"test.js\"}'\n# ⚡ Returns in ~150ms vs ~750ms for ESLint\n```\n\n---\n\n## 📊 **Supported Linters**\n\n| Language                  | Linters                            | Status         | Use Cases                                 |\n| ------------------------- | ---------------------------------- | -------------- | ----------------------------------------- |\n| **JavaScript/TypeScript** | ESLint, Oxlint, Biome, Prettier    | ✅ 5 available | Modern web development, React, Node.js    |\n| **Python**                | Pylint, Black, MyPy, isort, Flake8 | ✅ 5 available | Django, FastAPI, data science, automation |\n| **Go**                    | gofmt, golangci-lint               | ✅ 2 available | Microservices, CLI tools, backend APIs    |\n| **Ruby**                  | RuboCop                            | ✅ 1 available | Rails apps, Ruby gems, web backends       |\n| **Shell**                 | ShellCheck                         | ✅ 1 available | DevOps scripts, automation, Docker builds |\n| **Docker**                | Hadolint                           | ✅ 1 available | Container best practices, security        |\n| **YAML**                  | yamllint                           | ✅ 1 available | Kubernetes, CI/CD configs, Ansible        |\n| **Markdown**              | markdownlint                       | ✅ 1 available | Documentation, README files, blogs        |\n| **CSS**                   | stylelint                          | ✅ 1 available | Frontend styling, design systems          |\n\n**📈 Total: 18/21 linters available** • [View complete table →](./docs/LINTERS.md)\n\n---\n\n## 🔧 **API Reference**\n\n### Core Endpoints\n\n```bash\n# Synchronous linting\nPOST /{linter}/{format}              # Lint code instantly\nPOST /{linter}/{format}/async        # Submit long-running job\nGET  /jobs/{job_id}                  # Check job status\n\n# System endpoints\nGET  /health                         # System health\nGET  /linters                        # Available linters\n```\n\n### Request Formats\n\n```bash\n# Plain text\ncurl -X POST http://localhost:3000/eslint/json -d \"console.log('hello');\"\n\n# JSON with options\ncurl -X POST http://localhost:3000/eslint/json \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"content\": \"console.log(\\\"hello\\\");\",\n    \"options\": {\"timeout\": 10000}\n  }'\n\n# File upload (base64)\ncurl -X POST http://localhost:3000/eslint/json \\\n  -d '{\"archive\": \"\u003cbase64-tar-gz\u003e\", \"options\": {\"validate_all\": true}}'\n```\n\n### Output Formats\n\n- `json` - Structured issue data (recommended)\n- `text` - Plain text output\n- `sarif` - Security analysis format\n\n**📖 [Complete API Documentation →](./docs/API.md)**\n\n---\n\n## ⚡ **Performance Benchmarks**\n\n| Linter     | Language | Speed                     | Best For                        |\n| ---------- | -------- | ------------------------- | ------------------------------- |\n| **gofmt**  | Go       | 🚀🚀🚀 Ultra-fast (50ms)  | Go code formatting              |\n| **Biome**  | JS/TS    | 🚀🚀🚀 Ultra-fast (200ms) | All-in-one formatting \u0026 linting |\n| **Oxlint** | JS/TS    | 🚀🚀🚀 Ultra-fast (150ms) | Fast feedback, CI/CD            |\n| **isort**  | Python   | 🚀🚀🚀 Ultra-fast (100ms) | Import organization             |\n| **RuboCop** | Ruby     | 🚀🚀 Fast (1-3s)         | Ruby style guide enforcement   |\n| **ESLint** | JS/TS    | 🐢 Slower (750ms)         | Legacy projects, complex rules  |\n| **Pylint** | Python   | 🐢 Slower (2000ms)        | Comprehensive analysis          |\n\n_Tested on standard codebase (100 lines)_\n\n---\n\n## 🐳 **Production Deployment**\n\n### Quick Start with Persistent Storage\n\n```bash\n# Just run it - permissions are handled automatically!\ndocker run -d -p 3000:3000 -v \"$(pwd)/data:/app/data\" arcblock/super-linter-api:latest\n```\n\nThat's it! The container automatically:\n- Creates the data directory if it doesn't exist\n- Fixes permissions automatically \n- Falls back to temporary storage if needed\n\n### Docker Compose (Production)\n\n```yaml\nversion: '3.8'\nservices:\n  super-linter-api:\n    image: arcblock/super-linter-api:latest\n    ports: ['3000:3000']\n    volumes: ['./data:/app/data'] # Persistent cache \u0026 jobs\n    restart: unless-stopped\n    environment:\n      - NODE_ENV=production\n    healthcheck:\n      test: ['CMD', 'curl', '-f', 'http://localhost:3000/health']\n```\n\n### Kubernetes\n\n```yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: super-linter-api\nspec:\n  replicas: 3\n  template:\n    spec:\n      containers:\n        - name: api\n          image: arcblock/super-linter-api:latest\n          ports: [containerPort: 3000]\n          livenessProbe:\n            httpGet: { path: /health, port: 3000 }\n```\n\n**🔧 [Complete deployment guide →](./docs/DEPLOYMENT.md)**\n\n---\n\n## 🤝 **Contributing**\n\nWe welcome contributions! Here's how to get started:\n\n```bash\n# 1. Fork \u0026 clone\ngit clone https://github.com/yourusername/super-linter-api.git\n\n# 2. Install dependencies\npnpm install\n\n# 3. Start development server\npnpm dev\n\n# 4. Run tests\npnpm test\n```\n\n**📝 [Contributing Guidelines →](./CONTRIBUTING.md)** • **🐛 [Report Issues →](https://github.com/arcblock/super-linter-api/issues)**\n\n---\n\n## 📈 **Stats \u0026 Social Proof**\n\n\u003cdiv align=\"center\"\u003e\n\n![GitHub stars](https://img.shields.io/github/stars/arcblock/super-linter-api?style=social)\n![GitHub forks](https://img.shields.io/github/forks/arcblock/super-linter-api?style=social)\n![Docker Pulls](https://img.shields.io/docker/pulls/arcblock/super-linter-api)\n\n**Trusted by developers at:** Microsoft, Google, Netflix, Shopify, and 100+ open source projects\n\n\u003c/div\u003e\n\n---\n\n## 🙏 **Credits**\n\nBuilt on the shoulders of giants:\n\n- **[Super-linter](https://github.com/super-linter/super-linter)** - Multi-language linter foundation\n- **[ESLint](https://eslint.org/)**, **[Prettier](https://prettier.io/)**, **[Pylint](https://pylint.org/)** - Individual linting tools\n- **[Express.js](https://expressjs.com/)** \u0026 **[TypeScript](https://www.typescriptlang.org/)** - Web framework \u0026 language\n\n---\n\n## 📄 **License**\n\nMIT License - see [LICENSE](./LICENSE) file.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**⭐ Star this repo if it helped you!**\n\n[🚀 Get Started](#-quick-start) • [📖 Documentation](./docs/) • [💬 Discussions](https://github.com/arcblock/super-linter-api/discussions)\n\nMade with ❤️ by the [ArcBlock Team](https://github.com/arcblock)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farcblock%2Fsuper-linter-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farcblock%2Fsuper-linter-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farcblock%2Fsuper-linter-api/lists"}