Project Overview and Objectives

The Household Product Tracking System is a web application developed to help users reduce household product waste by tracking expiration dates for food, medicine, and cosmetics. The system’s primary functionality includes enabling users to log products, categorize them, and receive email reminders about upcoming expirations. This tool aims to support better planning and reduce waste through timely notifications, providing an efficient and user-friendly experience for managing household inventory.

Technical Architecture and Tools

The project employs a full-stack architecture with a front end built in React.js and a backend developed in Express.js and Node.js. For persistent data storage, PostgreSQL is used to manage product data, categories, and expiration tracking. Email reminders are facilitated through SendGrid, an SMTP service that seamlessly integrates with the backend to send notifications based on each product’s expiration status. The front end, styled in Figma and React components, offers a clean, responsive design across mobile and desktop views, enhancing accessibility and user experience.

Key Features and Functionality

Users interact with the system through a straightforward interface that allows them to add products by name, category, subcategory, and expiration date. Categories include food, medicine, and cosmetics, each with subcategories for detailed filtering. For effective notification management, food items trigger two reminders (one on the expiration day and one the day before), while medicine and cosmetics send a single notification 31 days before expiration. These reminders are generated through automated server-side scheduling, with the backend checking for expiring items each day at a set time.

Implementation and System Structure

The backend is structured to handle API routes for adding, deleting, and retrieving products, ensuring efficient data processing and integration with the React front end. Each API route corresponds to actions within the interface, supporting real-time updates and user-triggered actions, such as sorting and filtering products by category or expiration. The project includes robust design considerations, such as a RESTful API for efficient data transfer and use of JSON for data structuring, providing a modular and maintainable codebase.