Production-grade URL Audit Service that analyzes websites and provides performance and metadata insights.
Built for Digital Heroes Training Task
https://page-pulse-grmx.onrender.com
- URL auditing service
- Input validation
- Request timeout handling
- Redirect support
- Concurrency limiting
- Configurable response caching
- Client-based rate limiting
- Structured logging with request IDs
- Health monitoring endpoint
- Automated testing
- GitHub Actions CI
- Docker support
- Node.js
- TypeScript
- Express.js
- Axios
- Cheerio
- Pino Logger
- Jest
- Docker
- Render
Response: 200 OK
Returns the health status of the service. Checks service availability.
{
"status": "UP",
"timestamp": "2026-07-24T12:00:00.000Z"
}200 OK400 Bad Request429 Too Many Requests500 Internal Server Error
Audits a given website URL.
{
"url": "https://example.com"
}{
"url": "https://example.com",
"status": 200,
"responseTime": 245,
"title": "Example Domain",
"contentLength": 1256,
"headers": {}
}Example:
{
"error": "Invalid URL",
"message": "Please provide a valid URL"
}Copy .env.example to .env and update the values as needed.
PORT=3000
REQUEST_TIMEOUT=5000
CACHE_TTL=300
CONCURRENCY_LIMIT=10
RATE_LIMIT_WINDOW_MS=60000
RATE_LIMIT_MAX=100npm installnpm run devnpm run buildnpm startRun:
npm testCurrent test coverage includes:
- Health endpoint validation
- Audit endpoint behavior
- API response verification
GitHub Actions automatically runs:
- Dependency installation
- TypeScript build
- Test execution
on every push and pull request.
The service uses:
- In-memory caching for repeated URL audits
- Rate limiting to prevent abuse
- Concurrency control to protect resources
- Request IDs for request tracing
- Structured logs for debugging
Build image:
docker build -t page-pulse .Run:
docker run -p 3000:3000 page-pulseThe scalable system design documentation is available here:
- Architecture Document
- Technology Decision Record
- Failure Mode Analysis
- Observability and Rollback Plan
Built for Digital Heroes Training Task