Skip to content

Ishar007/page-pulse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

12 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ Page Pulse – Production-grade URL Audit Service

CI Node.js Express Jest License

A production-ready backend REST API built with Node.js and Express.js that audits websites by validating URLs, fetching metadata, measuring response time, caching results, and exposing a scalable API.


🌐 Live API

Render Deployment

https://page-pulse-r2vl.onrender.com


✨ Features

  • βœ… URL Validation using Zod
  • βœ… Website Health Audit
  • βœ… HTML Title Extraction
  • βœ… HTTP Status Detection
  • βœ… Response Time Measurement
  • βœ… Configurable Request Timeout
  • βœ… In-Memory Caching
  • βœ… Rate Limiting
  • βœ… Concurrency Control
  • βœ… Structured Logging (Winston)
  • βœ… Unique Request IDs
  • βœ… Unit Testing (Jest + Supertest)
  • βœ… GitHub Actions Continuous Integration
  • βœ… Render Cloud Deployment

πŸ› οΈ Tech Stack

Category Technologies
Backend Node.js, Express.js
HTTP Client Axios
HTML Parser Cheerio
Validation Zod
Cache Node Cache
Logging Winston
Rate Limiting Express Rate Limit
Concurrency p-limit
Testing Jest, Supertest
CI/CD GitHub Actions
Deployment Render

πŸ“‚ Project Structure

page-pulse/
β”‚
β”œβ”€β”€ .github/
β”‚   └── workflows/
β”‚       └── ci.yml
β”‚
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ cache/
β”‚   β”œβ”€β”€ config/
β”‚   β”œβ”€β”€ controllers/
β”‚   β”œβ”€β”€ logger/
β”‚   β”œβ”€β”€ middleware/
β”‚   β”œβ”€β”€ routes/
β”‚   β”œβ”€β”€ services/
β”‚   β”œβ”€β”€ tests/
β”‚   └── utils/
β”‚
β”œβ”€β”€ Task-B/
β”‚   β”œβ”€β”€ Task-B-Architecture.md
β”‚   β”œβ”€β”€ Technology-Decision-Record.md
β”‚   β”œβ”€β”€ Failure-Mode-Analysis.md
β”‚   β”œβ”€β”€ Observability-and-Rollback.md
β”‚   └── diagrams/
β”‚       └── architecture-diagram.png
β”‚
β”œβ”€β”€ assets/
β”œβ”€β”€ server.js
β”œβ”€β”€ package.json
β”œβ”€β”€ render.yaml
└── README.md

βš™οΈ Installation

Clone the repository

git clone https://github.com/Ishar007/page-pulse.git

Install dependencies

npm install

Create a .env file

PORT=5000
REQUEST_TIMEOUT=10000
CACHE_TTL=300
MAX_CONCURRENT=20

Start the development server

npm run dev

πŸ“‘ API

POST /api/audit

Request

{
  "url": "https://google.com"
}

Successful Response

{
  "requestId": "uuid",
  "success": true,
  "url": "https://google.com",
  "status": 200,
  "title": "Google",
  "responseTime": 267,
  "cached": false
}

πŸ§ͺ Running Tests

npm test

πŸš€ Continuous Integration

GitHub Actions automatically:

  • Install project dependencies
  • Execute all unit tests
  • Validate every push and pull request to the main branch

πŸ“Έ Screenshots

API Response

API Response


GitHub Actions

GitHub Actions


Render Deployment

Render Deployment

πŸš€ Future Improvements

  • Redis Distributed Cache
  • Authentication & Authorization
  • Docker Support
  • Kubernetes Deployment
  • Audit History
  • Scheduled Website Audits
  • Email Notifications
  • Dashboard & Analytics

πŸ“š Task B – System Design & Architecture

This repository includes the complete design documentation required for Task B of the Digital Heroes Software Development assignment.

Documents

Architecture Diagram

Highlights

  • Designed to support 10,000 audits per day
  • Handles 500 concurrent requests
  • Stateless API architecture for horizontal scaling
  • Redis-based distributed caching strategy
  • RabbitMQ for asynchronous job processing
  • PostgreSQL for persistent audit storage
  • Prometheus & Grafana for monitoring
  • 99.9% availability target with rollback and observability planning

πŸ‘¨β€πŸ’» Author

Ishar Roy

B.Tech – Computer Science & Engineering

Future Institute of Engineering and Management


⭐ If you found this project helpful, consider giving it a star!

About

Production-ready URL Audit REST API built with Node.js, Express.js, Jest, GitHub Actions and Render.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages