|
|
## Diagram Draw.io
|
|
|
https://drive.google.com/file/d/1U3z9awKPSR87_BAfbhGwMDf_M8W0wWpE/view?usp=sharing
|
|
|
**System Architecture Discussion**
|
|
|
The Smart Grocery Management Mobile App adopts a modular and scalable architecture consisting of four main layers: **Client Devices, Backend Server, Database, and External Services**. This structure ensures a clear separation of concerns, high maintainability, and strong support for collaborative and intelligent grocery management features.
|
|
|
|
|
|
**Client Devices (Mobile App)**
|
|
|
The client is built using React Native and runs on both Android and iOS platforms via Expo Go. It allows users to:
|
|
|
- Log in and register securely
|
|
|
- Manage grocery inventory
|
|
|
- Share data with group members
|
|
|
- View reminders, expense charts, and calorie tracking
|
|
|
- Receive AI generated recipe suggestions
|
|
|
The app communicates with the backend using HTTPS and JSON via REST API, ensuring secure and standardized data exchange.
|
|
|
|
|
|
**Backend Server (Node.js/Express)**
|
|
|
The backend uses Node.js with Express to expose REST API endpoints for:
|
|
|
- /users: Handles login, registration, and password reset
|
|
|
- /group: Manages group creation, joining, leaving, and ownership transfer
|
|
|
- /items: Manages grocery inventory actions (add, update, delete)
|
|
|
These endpoints are organized under a RESTful architecture, simplifying integration and promoting modularity. The backend also includes business logic for:
|
|
|
- Email based password verification using Nodemailer
|
|
|
- AI recipe querying
|
|
|
- Calorie and BMI analysis
|
|
|
-
|
|
|
**Database (MongoDB via Mongoose)**
|
|
|
All data is persistently stored in a MongoDB database with the help of Mongoose for schema validation and object modeling. Collections include:
|
|
|
- users: Account data, BMI, preferences
|
|
|
- groups: Group metadata and member mapping
|
|
|
- items: Inventory items with expiry, price, calories
|
|
|
- logs: Food consumption and financial records
|
|
|
This design allows flexible schema evolution and efficient querying, supporting features like group synchronization and historical analytics
|
|
|
|
|
|
**External Services**
|
|
|
Two external APIs enhance app intelligence and communication:
|
|
|
- Gmail SMTP (via Nodemailer): Used to send 6 digit verification codes for password reset. This ensures secure identity validation
|
|
|
- Spoonacular API: Allows the backend to generate intelligent meal suggestions based on real time inventory and nutritional goals
|
|
|
|
|
|
| Attribute | Architectural Support |
|
|
|
| ------ | ------ |
|
|
|
| Secure authentication | HTTPS, JWT tokens, and email verification via SMTP |
|
|
|
| Group collaboration | Shared MongoDB model with role based logic and API synchronization |
|
|
|
| Expiry and usage notifications | REST API tracks expiry dates; frontend highlights them dynamically |
|
|
|
| Expense tracking | MongoDB logs combined with frontend charting |
|
|
|
| AI powered recipes | API connection to Spoonacular via backend HTTP requests |
|
|
|
| Cross platform compatibility | React Native enables iOS and Android support |
|
|
|
| Scalability | RESTful, modular backend + NoSQL flexibility |
|
|
|
| Maintainability and Testability | Clear separation of API logic, database schema, and external modules | |