.../Case-studies/smart-store-app...

Smart Store Case Study

Smart Store Case Study

Tech Stack used:

  • React & Vite for frontend
  • Node.js & Express for backend
  • MongoDB for database management
  • JWT-based Authentication
  • RFID & Arduino integration
  • MFRC522 RFID module
  • Razorpay payment integration
  • REST APIs for real-time synchronization

Introduction

SmartTantra is an IoT-powered smart shopping system built using the MERN stack and RFID technology. The project simulates a cashier-less shopping experience where RFID-tagged products are automatically detected, synchronized with a live shopping cart, and processed through an integrated payment system. The project demonstrates full-stack development combined with real-world hardware integration using Arduino and RFID modules.

Why did I build this?

Why did I build this?

I built this project to explore the integration of IoT hardware with modern full-stack web development. While working on MERN-based applications, I wanted to move beyond traditional CRUD projects and build something that interacted with physical hardware in real time. The objective was to understand how devices such as RFID readers and Arduino boards could communicate with backend systems and web applications.

The idea originated from modern smart-retail concepts where stores attempt to reduce manual checkout processes and improve customer experience. In many supermarkets, customers spend significant time waiting in billing queues while products are scanned manually. This inspired me to design a smart shopping system where products could be automatically detected through RFID tags and synchronized directly with the user’s cart. The project simulates a cashier-less workflow where users can enter the store, scan products, make payments online, and generate receipts digitally.

What problems did I face?

What problems did I face?

One of the biggest challenges during development was handling real-time RFID scanning reliably. Since RFID readers continuously scan nearby tags, the system initially produced duplicate product entries and malformed RFID values. Another issue appeared while handling serial communication between Arduino and the Node.js backend, where noisy serial outputs and repeated scans caused inconsistent API requests and synchronization problems.

I resolved these issues by implementing RFID cooldown logic, serial filtering, and duplicate scan prevention techniques. Another major challenge occurred after deployment. Authentication worked correctly on localhost but failed in production because the frontend and backend were hosted on different domains. This required proper CORS configuration, secure cookie handling, and credential-based authentication setup. I also encountered routing issues while deploying the React application on Vercel, where refreshing nested routes caused 404 errors. This was eventually fixed using Vercel rewrite configuration for SPA routing support.

What would I improve now?

What would I improve now?

If I continue working on this project, I would improve the system by introducing more advanced real-time synchronization and scalable smart-retail features. Currently, the project uses polling and serial communication for updates, but I would like to migrate towards WebSocket-based live synchronization for a smoother and more production-ready experience.

I would also enhance the hardware infrastructure by integrating industrial-grade RFID systems, smart cart displays, and admin analytics dashboards for inventory monitoring. In the future, the system could support automated inventory tracking, AI-based shopping recommendations, and multi-counter scalability for larger retail environments. Additionally, I would like to build a dedicated mobile application version to create a more seamless smart-shopping ecosystem.