PricePulse is a modern, premium web application built to monitor product prices across major e-commerce websites (Amazon India, Myntra, Meesho, Nykaa, Purplle) and automatically alert users when prices fall below their targets.
This project is optimized for performance, security, and high reliability in production environments.
- Java 21 Virtual Threads: Web scraping tasks are executed in parallel using Spring-integrated lightweight virtual threads, scaling effortlessly without blocking database pools.
- Transactional Separation: The price monitoring scheduler runs queries asynchronously; each product update runs in its own isolated transaction, preventing transaction leaks.
- REST Validation & Sanitized Handlers: Every API request is checked against strict validation constraints. Generic internal exceptions (HTTP 500) are sanitized to prevent security leaks.
- OpenAPI Swagger Docs: Interactive API documentation is available out of the box.
- Stand-alone Dockerization: The backend and frontend are dockerized and configured for multi-stage production deployment, leveraging Next.js standalone optimization.
- Backend: Spring Boot 3.4, Java 21 (Virtual Threads), Spring Security, Spring Mail, Hibernate, JSoup, PostgreSQL
- Frontend: Next.js 16 (App Router, Standalone mode), React, TypeScript, TailwindCSS, Recharts, Framer Motion
- Infrastructure: Docker, Docker Compose
For installation, execution, and deployment, please refer to the following documentation:
- Local Installation Guide: Local installation, prerequisites, environment setup, local execution, and verification.
- Production Deployment Guide: Production configurations, security constraints, Docker Compose setups, and service scaling.
To quickly build and run the entire application cluster (PostgreSQL, Backend API, Frontend client) locally:
- Copy the environment variables template:
cp .env.example .env
- Build and launch the stack:
docker compose up -d --build
- Access the services:
- Web Interface: http://localhost:3000
- Backend Swagger UI: http://localhost:8080/swagger-ui.html
- Backend OpenAPI Docs: http://localhost:8080/v3/api-docs
Configurations are configured using standard environment variables:
| Variable | Description | Default |
|---|---|---|
POSTGRES_DB |
PostgreSQL database name | pricepulse |
POSTGRES_USER |
PostgreSQL superuser username | postgres |
POSTGRES_PASSWORD |
PostgreSQL database password | postgres |
DB_DDL_AUTO |
Hibernate schema creation strategy | validate |
CORS_ALLOWED_ORIGINS |
Permitted origins (comma separated) | http://localhost:3000 |
JWT_SECRET |
Secret key used for signing JWT tokens | (Default secret) |
APP_SCHEDULER_CRON |
Schedule interval expression for price checks | 0 0 * * * * |
SMTP_HOST |
SMTP server address for email dispatch | (Disabled) |
NEXT_PUBLIC_API_URL |
Base URL of the backend API | http://localhost:8080/api/v1 |