A minimal, lightweight web technology detection API built with Go. Provides simple HTTP endpoints for analyzing websites and detecting technologies using the wappalyzer engine.
π§Ή Clean & Simple: This repository has been cleaned and optimized for minimal complexity and maximum usability.
- Technology Detection: Identify web technologies, frameworks, and libraries used by websites
- Simple HTTP API: Two endpoints - health check and website analysis
- Docker Support: Easy deployment with Docker and Docker Compose
- Lightweight: Minimal dependencies and resource usage (runs in <256MB RAM)
- Fast Response: Quick analysis with appropriate timeouts
- Zero Configuration: No setup required - just build and run
- Production Ready: Includes health checks, logging, and error handling
Linux/Mac:
git clone https://github.com/your-username/webailyzer-lite-api.git
cd webailyzer-lite-api && ./deploy.shWindows:
git clone https://github.com/your-username/webailyzer-lite-api.git
cd webailyzer-lite-api && deploy.bat# Clone the repository
git clone https://github.com/your-username/webailyzer-lite-api.git
cd webailyzer-lite-api
# Start with Docker Compose
docker-compose up -d
# The API will be available at http://localhost:8080
curl http://localhost:8080/healthπ See QUICK_START.md for the fastest deployment method
# Install dependencies
go mod download
# Build the application
go build -o webailyzer-api ./cmd/webailyzer-api
# Run the application
./webailyzer-apiThe API provides two simple endpoints with no authentication required:
Check if the API is running:
curl http://localhost:8080/healthResponse:
{
"status": "ok"
}Analyze a website to detect technologies:
curl -X POST http://localhost:8080/v1/analyze \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com"
}'Response:
{
"url": "https://example.com",
"detected": {
"Nginx": {
"categories": ["Web servers"],
"confidence": 100,
"version": "",
"icon": "Nginx.svg",
"website": "http://nginx.org/en",
"cpe": "cpe:/a:nginx:nginx"
},
"Bootstrap": {
"categories": ["UI frameworks"],
"confidence": 100,
"version": "4.3.1",
"icon": "Bootstrap.svg",
"website": "https://getbootstrap.com"
}
},
"content_type": "text/html; charset=utf-8"
}No configuration is required. The API runs on port 8080 by default.
The included docker-compose.yml provides a simple setup:
version: '3.8'
services:
webailyzer-api:
build: .
ports:
- "8080:8080"
restart: unless-stoppedThe API provides two simple endpoints:
GET /health- Health check endpointPOST /v1/analyze- Analyze a website for technology detection
# Run tests
go test ./...
# Run tests with coverage
go test -cover ./...# Build for current platform
go build -o webailyzer-api ./cmd/webailyzer-api
# Build for Linux (for Docker)
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o webailyzer-api ./cmd/webailyzer-apiFor detailed deployment instructions, environment configuration, and troubleshooting, see DEPLOYMENT.md.
# Build Docker image
docker build -t webailyzer-lite-api .
# Run container
docker run -p 8080:8080 webailyzer-lite-apiThe API includes a health check endpoint at /health that returns:
{
"status": "ok"
}This endpoint is used by Docker health checks and load balancers to verify the service is running.
The project follows a clean, minimal structure focused on simplicity and maintainability:
βββ cmd/webailyzer-api/ # Main application
βββ test/ # Integration tests
βββ examples/ # Usage examples
βββ deploy.sh/deploy.bat # Deployment scripts
βββ DEPLOYMENT.md # Deployment guide
βββ API_DOCUMENTATION.md # API reference
βββ QUICK_START.md # Quick start guide
π See PROJECT_STRUCTURE.md for detailed project organization
- QUICK_START.md - One-command deployment
- DEPLOYMENT.md - Comprehensive deployment guide
- API_DOCUMENTATION.md - Complete API reference
- PROJECT_STRUCTURE.md - Project organization
- CONTRIBUTING.md - Contribution guidelines
- CHANGELOG.md - Version history
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Run the test suite:
make test - Test Docker deployment:
./test-docker.sh - Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.