Open-source price tracking system with multi-user authentication, responsive design, and intelligent alerts. Perfect as a starter kit for building monitoring systems, learning modern full-stack architecture, or deploying your own price tracking service.
| Login | Dashboard (Light) | Dashboard (Dark) | Product Detail |
|---|---|---|---|
A professional, full-stack price tracking application built with FastAPI and React. Track product prices across multiple e-commerce sites, visualize price history with interactive charts, and receive alerts when products hit your target price.
Perfect as a starter kit for building monitoring systems, learning modern full-stack architecture, or deploying your own price tracking service.
- Multi-user registration and login with JWT tokens
- Secure password hashing with bcrypt
- Persistent sessions with localStorage tokens
- Route-level authentication middleware
- Data isolation: each user only sees their own products
- Real-time price evolution charts with Recharts
- Summary cards: total products, active alerts, potential savings
- Recent products with quick access
- Mobile-optimized responsive layout
- Multi-site scraping (Mercado Libre, Amazon, eBay + generic fallback)
- URL testing before adding products
- Automatic price updates with one click
- Complete price history table
- Target price alerts
- TailwindCSS utility-first responsive design
- Mobile hamburger navigation
- Touch-optimized buttons (44px minimum)
- Clean, modern interface
- Predicts price trends using linear regression over historical data
- Confidence scoring and estimated target date calculation
- Visual indicator in product detail view
- Full Model Context Protocol server for external AI tools
- 6 exposed tools: get_product_price, add_product, get_alerts, update_prices, get_price_history, predict_price
- Claude Code can interact directly with your price tracker
- Documentation in
docs/MCP_INTEGRATION.md
- System preference detection + manual toggle
- Full UI coverage with Tailwind dark variants
- Python 3.8 or higher
- Node.js 16 or higher
- npm or yarn
# Clone the repository
git clone https://github.com/LeonardoTemporal/price-tracker.git
cd price-tracker
# Run the setup script (Windows)
scripts/windows/start-all.bat
# Or manual steps:
python -m venv .venv
.venv\Scripts\activate
pip install -r backend/requirements.txt
playwright install chromium
python -m uvicorn backend.app.main:app --reload --host 0.0.0.0 --port 8000
# In another terminal:
cd frontend
npm install
npm run dev- Frontend: http://localhost:5173
- Backend API: http://localhost:8000
- API Docs (Swagger): http://localhost:8000/docs
- API Docs (ReDoc): http://localhost:8000/redoc
Deploy on your own server with Dokploy:
Requirements:
- Ubuntu server with Dokploy installed (port 3000)
- Docker and Docker Compose
Steps:
- Connect your GitHub repository in the Dokploy dashboard
- Copy environment variables from
dokploy.env.exampleinto Dokploy - Update
ALLOWED_ORIGINSwith your frontend domain - Deploy - Dokploy auto-detects
dokploy-compose.yml
Files used:
Dockerfile.backend- FastAPI multistage buildDockerfile.frontend- React SPA + nginxdokploy-compose.yml- Full stack orchestrationnginx.conf- SPA routing + compression
price-tracker/
├── backend/ # FastAPI REST API
│ ├── app/
│ │ ├── main.py # FastAPI app with CORS
│ │ ├── database.py # SQLAlchemy models
│ │ ├── security.py # JWT & bcrypt auth
│ │ └── routers/ # REST endpoints
│ │ ├── auth.py
│ │ └── productos.py
│ └── tests/ # Automated tests
├── frontend/ # React SPA
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── contexts/ # AuthContext
│ │ ├── services/ # Axios API client
│ │ └── App.jsx
│ └── tests/
├── src/ # Shared scraping logic
│ ├── scraper.py # Multi-strategy web scraper
│ ├── tracker.py # Tracking orchestrator
│ └── database.py
└── README.md
| Layer | Technology |
|---|---|
| Backend | FastAPI 0.104, Python 3.8+, SQLAlchemy 2.0, JWT, bcrypt |
| Frontend | React 18, Vite 5, TailwindCSS 3, React Query, Recharts |
| Scraping | BeautifulSoup4, Playwright, requests |
| Database | SQLite (dev) / PostgreSQL (production-ready) |
| Testing | pytest |
| Site | Status | Method |
|---|---|---|
| Mercado Libre | Fully supported | API + Playwright fallback |
| Amazon | Supported | Multi-selector extraction |
| eBay | Supported | Domain-specific config |
| Generic sites | Most sites work | Pattern-based fallback |
| Platform | Status | Notes |
|---|---|---|
| Dokploy | Ready | Multi-stage Docker, PostgreSQL, auto-deploy |
| Docker | Ready | docker-compose up for local development |
| Local | Ready | SQLite backend, Vite dev server |
We welcome contributions of all kinds. Whether it is a bug fix, new feature, or documentation improvement, your help is appreciated.
Please read our Contributing Guide and Code of Conduct before submitting a pull request.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with passion for modern web development and automation
- Inspired by the need for transparent price monitoring tools
- Thanks to all contributors and the open source community
- Author: Leonardo Temporal
- Email: pricy.pricetracker@gmail.com
- GitHub: @LeonardoTemporal
If you find this project useful, please consider giving it a star. It helps others discover the project and motivates continued development.