A JavaEE + Oracle Database based web application built exclusively for manufacturing companies to fight against fake and cloned products.
The system generates unique QR codes for every product batch and provides customers with a secure way to verify authenticity, check product details, and submit feedback.
-
Manufacturer Portal
- Add products with details (name, description, expiry date, etc.)
- Generate batches with expiry date and other metadata
- Automatically generate unique QR codes for each product
- Monitor authenticity checks and feedback reports
- Mark unsafe batches as inactive/recall from market
-
Customer Portal
- Scratch & scan QR code to verify product authenticity
- View details: batch number, expiry date, authenticity status, scan history
- Detect if scanned before → prevents duplicate usage
- See if the batch is active or recalled
- Submit feedback or complaint (within 30 days of scan)
- Manufacturer can view and contact customer if necessary
-
Security
- Scratch-before-scan mechanism and watching scan history prevents duplicate QR scans
- Real-time verification against database
- Role-based access (Manufacturer, Customer)
AuthentiTrack/
├── README.md
└── src
└── main
├── java
│ ├── controllers
│ │ ├── AddProductController.java
│ │ ├── ChangePassword.java
│ │ ├── DiscontinueProduct.java
│ │ ├── GenerateProduction.java
│ │ ├── GetAllNotification.java
│ │ ├── GetAllProduction.java
│ │ ├── LoginController.java
│ │ ├── RejectBatch.java
│ │ └── SendReport.java
│ ├── dao
│ │ ├── BatchDao.java
│ │ ├── NotificationDao.java
│ │ ├── ProductDao.java
│ │ ├── ProductionDao.java
│ │ ├── UserReportDao.java
│ │ └── UsersDao.java
│ ├── entities
│ │ ├── Batch.java
│ │ ├── Notification.java
│ │ ├── Produce.java
│ │ ├── Product.java
│ │ └── User.java
│ └── helper
│ ├── ConnectionProvider.java
│ ├── LoginFilter.java
│ ├── ScanDetailsPOJO.java
│ └── UserReportPOJO.java
└── webapp
├── fake.jsp
├── index.jsp
├── manufacturer
│ ├── add_new_product.jsp
│ ├── batches.jsp
│ ├── footer.jsp
│ ├── generate_product.jsp
│ ├── logout.jsp
│ ├── nav.jsp
│ ├── products.jsp
│ ├── qr_codes.jsp
│ ├── show_report.jsp
│ └── style.css
├── META-INF
│ └── MANIFEST.MF
├── scan.jsp
└── WEB-INF
├── lib
└── web.xml
- Backend: JavaEE (Servlets, JSP)
- Frontend: JSP, CSS, JavaScript
- Database: Oracle 21c DB
- QR Code: qrious (JS library)
- Server: Apache Tomcat
- IDE: Eclipse Enterprise Edition
- Build: WAR deployable
- Java 21 (Recommended)
- Oracle Database (21c)
- Apache Tomcat 10.1
- QR Code generation library (qrious)
-
Clone the repository
git clone https://github.com/rahimuj570/AuthentiTrack cd AuthentiTrack -
Set up the Database (Oracle)
- Create a new schema
authenti_tracker - Run the script from
source files/authenti_tracker.sql
- Create a new schema
-
Configure Database Connection
- Update your ConnectionProvider.java with Oracle DB credentials*
-
Deploy the Application
-
Build WAR file and deploy in Tomcat/GlassFish
-
Access the system at:
http://localhost:8080/AuthentiTrack
-
-
Manufacturer Workflow
- Login as manufacturer
- Add product and create a new batch
- Generate QR codes (system auto-generates unique codes)
- Print and attach QR codes on product packaging
- Monitor customer scans and feedback
-
Customer Workflow
- Scratch the QR sticker
- Scan the QR code → redirected to product verification page
- View product details (authenticity, expiry, batch status)
- If batch is recalled, warning message is displayed
- Optionally, submit feedback/complaint (valid for 30 days)
- Use an IDE like Eclipse with Tomcat
- Configure Oracle JDBC driver in your server libraries
- For QR Code generation, include qrious in
qr_codes.jsp/
- Fork the repo
- Create a feature branch (
feature/my-new-feature) - Commit changes (
git commit -m 'Add feature') - Push to branch
- Open a Pull Request







