A distributed Java-based system for tracking and visualizing product price history on Tiki.vn — built from scratch using low-level networking, custom security, and efficient data processing.
- About The Project
- Features
- Tech Stack
- Architecture Overview
- Getting Started
- Usage
- Technical Highlights
- License
Tiki Price Tracker is a distributed client-server system built entirely with Java Core that enables users to track, store, and visualize price fluctuations of products on Tiki.vn.
Unlike typical web-based solutions, this project focuses on low-level system design, implementing networking, security, and data processing from the ground up without relying on heavy frameworks.
It is designed to:
- Help users make smarter purchasing decisions during sales events
- Demonstrate strong backend, networking, and system design skills
- 📊 Track historical price changes of products
- 🔍 Monitor 4000+ products automatically
- 🖥️ Interactive desktop UI with data visualization
- 🔐 Secure communication using hybrid encryption (RSA + AES)
- ⚡ Zero-configuration client-server connection (UDP discovery)
- 🔄 Automatic background price updates every 3 hours
- 👤 Personalized tracking without login system
- 🛠️ Admin mode for global data access
| Category | Technology |
|---|---|
| Language | Java 21+ |
| Networking | TCP Sockets, UDP Broadcast |
| Security | RSA 2048-bit, AES 128-bit |
| Database | SQLite + JDBC |
| UI | Java Swing + FlatLaf + JFreeChart |
| Data Format | JSON (Gson) |
| Build Tool | Maven |
| Automation | GitHub Actions |
The system is divided into three independent modules:
- Multi-threaded TCP server (Thread Pool)
- Handles client requests and database queries
- Runs background scheduler for price updates every 3 hours
- Desktop GUI application
- Auto-discovers server via UDP broadcast (zero-config)
- Supports:
- User Mode (personalized tracking)
- Admin Mode (full database view)
- Crawls product data independently
- Handles 4000+ products per run
- Can be integrated with CI/CD (GitHub Actions)
Go to the latest release: 👉 https://github.com/ttasc/TikiPriceTracker/releases/latest
Download:
TikiTracker-Server.jarTikiTracker-Client.jarTikiTracker-Crawler.jar(optional)
- Java 21 or higher
Check your version:
java -versionjava -jar TikiTracker-Server.jarOptional flags:
--console→ enable logging & command input (update,exit)--disable-auto-update→ disable background updates
java -jar TikiTracker-Client.jar [server_ip] [--admin]- If no IP is provided → auto-discovery via UDP broadcast
--admin→ view all tracked products (bypass personalization)
java -jar TikiTracker-Crawler.jar- Crawls ~4000 products
- Takes ~30 minutes
- Can be automated using GitHub Actions
- RSA 2048-bit for key exchange
- AES 128-bit for data transmission
- Protects against packet sniffing (e.g., Wireshark)
- Retry Queue for failed requests
- Exponential Backoff strategy
- Handles HTTP 403 / 429 errors effectively
- Asynchronous image loading (multi-threaded)
- Image caching with
ConcurrentHashMap - Database pagination (
LIMIT,OFFSET)
- Local JSON file stores tracked product IDs
- Client-side filtering of server data
- No authentication system required
- UDP Broadcast for server discovery
- Eliminates manual IP configuration
This project is currently not licensed. You can add a license such as MIT or Apache 2.0 in the future.
-
Tiki.vn for product data inspiration
-
Open-source libraries:
- Gson
- FlatLaf
- JFreeChart
💡 This project is a strong demonstration of low-level system design, networking, and secure data handling in Java without relying on heavy frameworks.