Problem
Docker Compose files are YAML-based, so typos and structural errors go undetected in the IDE:
- Port conflicts (two services binding the same host port) only discovered at deploy time
- Volume path errors, nonexistent image tag references
- No warnings for deprecated options (version field, links, etc.)
- Cannot detect circular dependencies in depends_on graphs
- Environment variable reference errors (
${VAR}undefined) only surface at runtime
Pain Intensity: 8/10 - Daily config debugging for every developer using Docker Compose
Market
- Primary Market: Global full-stack developers, DevOps engineers
- Segment: Teams using Docker Compose for local dev environments and staging
- TAM: Developer tools market ~$6.4B (2025), CAGR 16%
- Key Fact: Among VSCode’s 30M+ active users, Docker extension installs exceed 10M. No deep Docker Compose-specific linting tool exists
Solution
SpecLint Mono - A VSCode/Cursor inline linter specialized for Docker Compose files
Core Features
- Port Conflict Detection: Instantly warns about services sharing the same host port
- Circular Dependency Detection: Visual indicators when depends_on graphs contain cycles
- Image Tag Validation: Verifies image:tag existence via Docker Hub API
- Deprecated Option Warnings: Highlights deprecated fields per latest Compose Spec
- Environment Variable Tracking: Cross-validates against
.envfiles, warns on undefined vars - Quick Fix Suggestions: One-click fix proposals for each error (Code Actions)
Usage Scenario
# docker-compose.yml
services:
web:
image: nginx:latst # ⚠️ Tag 'latst' not found on Docker Hub. Did you mean 'latest'?
ports:
- "8080:80"
api:
image: node:20
ports:
- "8080:3000" # 🔴 Port conflict: host port 8080 already used by 'web'
depends_on:
- db
db:
image: postgres:16
depends_on:
- api # 🔴 Circular dependency: api → db → api
environment:
- POSTGRES_PASSWORD=${DB_PASS} # ⚠️ DB_PASS not defined in .env
Competition
| Competitor | Price | Weakness |
|---|---|---|
| Docker VSCode Extension | Free | Basic YAML syntax only, no semantic validation |
| YAML Language Server | Free | Generic YAML, no Docker Compose-specific rules |
| hadolint | Free OSS | Dockerfile only, no Compose support |
| Spectral (Stoplight) | Free/$99+/mo | OpenAPI only, no Docker support |
| OPA/Conftest | Free OSS | Policy engine, no IDE integration, steep learning curve |
Competition Intensity: Low - No Docker Compose-specific inline linter exists Differentiation: “ESLint for Docker Compose” — deep semantic validation + native IDE integration + Quick Fix
MVP Development
- MVP Timeline: 4 weeks
- Full Version: 3 months
- Tech Complexity: Low
- Stack: TypeScript, VSCode Extension API, Docker Compose JSON Schema, Docker Hub API
MVP Scope
- Port conflict detection + circular dependency detection
- Deprecated option warnings (Compose Spec v2)
- Environment variable .env cross-validation
- VSCode Diagnostic + Code Action integration
Revenue Model
- Model: Freemium + Subscription
- Pricing:
- Free: Core linting rules (port conflicts, circular deps, deprecated options)
- Pro: $9/mo (image tag validation, custom rules, team shared configs)
- Team: $29/mo (CI pipeline integration, org policy enforcement)
- Expected MRR (6 months): $3,000
- Expected MRR (12 months): $12,000
Risk
| Type | Level | Mitigation |
|---|---|---|
| Technical | Low | Docker Compose spec is based on public JSON Schema. Low parsing difficulty |
| Market | Medium | VSCode marketplace doesn’t support native payments → need external licensing (Paddle/LemonSqueezy) |
| Execution | Low | Narrow scope (Compose only) is ideal for solo development. 4-week MVP feasible |
Recommendation
Score: 93/100 ⭐⭐⭐⭐⭐
Why Recommended
- Zero direct competition for deep Docker Compose linting — clear blue ocean
- “Micro-niche” strategy delivering overwhelming depth in a narrow scope
- Natural distribution on top of VSCode’s 30M+ user base
- 4-week MVP enables rapid market validation
- Perfect dev_tools + devops domain fit with 100% stack match
Risk Factors
- VSCode marketplace lacks payment infrastructure → external payment system integration needed
- Docker’s official extension could add Compose linting features
- High value of free core features may reduce Pro conversion motivation
First Actions
- Implement parser based on Compose Spec JSON Schema
- Develop port conflict + circular dependency detection rules
- Package as VSCode Extension and publish free on marketplace
- Launch on r/docker, r/selfhosted, Hacker News (Show HN)
This idea was inspired by Vastlint (ad tag linter), creatively constrained from a “universal config linter” to Docker Compose single-domain focus, maximizing depth and completeness.