WatchTheDrop is a cutting-edge full-stack price tracking application built with modern web technologies. Originally developed during a 24-hour hackathon at IIT Jodhpur, this enhanced version provides comprehensive price monitoring, intelligent predictions, and seamless user experience across all devices. The platform specializes in Amazon price tracking with advanced bot detection avoidance and real-time notifications.
- Amazon Integration: Advanced web scraping with BrightData proxy support
- Intelligent URL Cleaning: Automatically removes tracking parameters and extracts product IDs
- Indian Currency Support: Handles complex number formatting (βΉ2,999, βΉ1,29,999)
- Anti-Bot Detection: Sophisticated measures to ensure reliable data extraction
- Price Prediction Models: Machine learning algorithms predict future price trends
- Smart Recommendations: AI-driven buying recommendations (Excellent, Good, Moderate)
- Price Drop Analysis: Calculate probability of future price drops
- Historical Trends: Advanced price history analysis with insights
- Instant Alerts: Sonner toast notifications for all user interactions
- Email Notifications: Automated price drop alerts via Nodemailer
- Smart Timing: Notifications only when significant price changes occur
- Cross-Platform: Works seamlessly on desktop and mobile devices
- Rate Limiting: Redis-powered request throttling to prevent abuse
- Cron Jobs: Automated price updates using Next.js API routes
- Error Handling: Comprehensive error management with user-friendly messages
- Platform Detection: Smart URL analysis for supported platforms
- Responsive Design: Optimized for all screen sizes with Tailwind CSS
- Interactive UI: Smooth animations with Framer Motion
- Loading States: Beautiful loading indicators for better UX
- Search Functionality: Dual support for product URLs and name-based search
- Next.js 14: App Router with Server Components and Client Components
- TypeScript: Full type safety and enhanced developer experience
- Tailwind CSS: Utility-first CSS framework for rapid styling
- Framer Motion: Smooth animations and micro-interactions
- Sonner: Beautiful toast notifications
- React Hook Form: Efficient form handling
- Next.js Server Actions: Type-safe server-side operations
- Node.js: Runtime environment for server-side logic
- RESTful APIs: Clean API design with proper error handling
- Cron Jobs: Automated background tasks for price updates
- MongoDB: NoSQL database for flexible data storage
- Mongoose: Object modeling for Node.js and MongoDB
- Redis: High-performance caching and rate limiting
- BrightData: Professional proxy service for reliable scraping
- Custom Scrapers: Intelligent product data extraction
- PriceHistoryApp: Integration for enhanced price analytics
- SerpAPI: Google Shopping results for product search
- Vercel: Deployment and hosting platform
- Git: Version control and collaboration
- ESLint: Code linting and quality assurance
- Prettier: Code formatting for consistency
- Node.js 18+ and npm
- MongoDB database
- Redis instance
- BrightData proxy credentials (optional)
Create a .env.local file in the root directory:
# Database
MONGODB_URI=your_mongodb_connection_string
# Redis
REDIS_URL=your_redis_url
# BrightData Proxy (Optional)
BRIGHT_DATA_USERNAME=your_username
BRIGHT_DATA_PASSWORD=your_password
# Email Service
SMTP_HOST=your_smtp_host
SMTP_PORT=587
SMTP_USER=your_email
SMTP_PASS=your_password
# API Keys
SERPAPI_KEY=your_serpapi_key-
Clone the repository:
git clone https://github.com/krishkumar84/WatchTheDrop-v2.git cd WatchTheDrop-v2 -
Install dependencies:
npm install
-
Set up environment variables:
cp .env.example .env.local # Edit .env.local with your configuration -
Run the development server:
npm run dev
-
Open your browser: Navigate to http://localhost:3000
- Product Tracking: Paste Amazon product URLs or search by product name
- Smart Notifications: Get alerts when prices drop significantly
- Price History: View detailed price trends and predictions
- Buying Recommendations: Receive AI-powered purchase timing advice
- API Endpoints: Use
/api/cron/route.tsfor automated price updates - Custom Scrapers: Extend scraping functionality in
/lib/scrape/ - Database Models: Modify schemas in
/models/directory - UI Components: Customize components in
/app/components/
WatchTheDrop-v2/
βββ src/
β βββ app/ # Next.js App Router
β β βββ components/ # Reusable UI components
β β βββ products/[id]/ # Product detail pages
β β βββ shopping/[q]/ # Search results pages
β β βββ api/ # API routes and cron jobs
β βββ lib/ # Utility functions and actions
β β βββ actions/ # Server actions
β β βββ scrape/ # Web scraping logic
β β βββ nodemailer/ # Email service
β βββ models/ # Database schemas
β βββ types/ # TypeScript type definitions
βββ public/ # Static assets
βββ README.md # Project documentation
- URL Cleaning: Removes complex tracking parameters
- Price Extraction: Handles Indian number formatting
- Product Detection: Smart product ID extraction
- Error Handling: Comprehensive fallback mechanisms
- Loading States: Sonner toasts for all interactions
- Mobile Responsive: Optimized for all screen sizes
- Platform Detection: Automatic URL validation
- Search Flexibility: Support for both URLs and product names
- Historical Data: Integration with PriceHistoryApp
- Trend Analysis: Price movement predictions
- Smart Alerts: Only notify for significant changes
- Buying Recommendations: AI-powered purchase timing
- Next.js App Router: Modern file-based routing with server components
- Server Actions: Type-safe server-side operations without API routes
- MongoDB Integration: Efficient data storage with Mongoose ODM
- Redis Caching: Fast data retrieval and rate limiting
- Proxy Integration: BrightData for reliable web scraping
- User Input: Product URL or search query
- Validation: Platform detection and URL cleaning
- Scraping: Secure data extraction with proxy rotation
- Processing: Price analysis and trend calculation
- Storage: MongoDB for persistence, Redis for caching
- Notifications: Real-time alerts via email and toast
We welcome contributions! Here's how you can help:
- Fork the repository on GitHub
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and test thoroughly
- Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request with a detailed description
- Follow the existing code style and conventions
- Add tests for new features
- Update documentation as needed
- Ensure mobile responsiveness for UI changes
- Test across different browsers and devices
- π¨ UI/UX Improvements: Enhance user interface and experience
- π§ Performance Optimization: Improve loading times and efficiency
- π Platform Support: Add support for more e-commerce platforms
- π€ ML Models: Enhance price prediction algorithms
- π± Mobile Features: Add mobile-specific functionality
- π Security: Strengthen authentication and data protection
This project is licensed under the MIT License - see the LICENSE file for details.
- Developer: Krish
- Project Repository: WatchTheDrop-v2
- Issues: Report bugs or request features
- IIT Jodhpur: For hosting the original hackathon
- BrightData: For reliable proxy services
- PriceHistoryApp: For enhanced price analytics
- Vercel: For seamless deployment and hosting
- MongoDB: For flexible and scalable database solutions
Made with β€οΈ by Krish | Star β this repo if you found it helpful!