Retriever's Essentials is a comprehensive inventory management system designed for UMBC's student pantry. The application helps manage inventory, track vendors, and handle transactions efficiently. It features a modern web interface built with Next.js and a robust backend API using Express.js.
- Add, edit, and remove items from inventory
- Track item quantities and weights
- Categorize items by type (Grain, Lentil, Legume, Snack, etc.)
- View detailed item information including descriptions and prices
- Manage vendor information and contact details
- Track items associated with each vendor
- View vendor-specific inventory
- Modern, responsive design
- Intuitive navigation
- Real-time updates
- Error handling and success notifications
- Mobile-friendly layout
- Next.js 14 (React framework)
- CSS Modules for styling
- Context API for state management
- Fetch API for HTTP requests
- Express.js
- MySQL database
- RESTful API architecture
- JWT authentication
frontend/
├── app/ # Next.js app directory
│ ├── components/ # Reusable UI components
│ ├── context/ # React context providers
│ ├── admin/ # Admin-specific pages
│ └── vendors/ # Vendor management pages
├── styles/ # CSS modules
└── public/ # Static assets
backend/
├── controllers/ # Request handlers
├── routes/ # API route definitions
├── middleware/ # Custom middleware
└── db.js # Database connection
- Node.js (v18 or higher)
- MySQL Server
- PowerShell (for Windows users)
- Create a MySQL database
- Import the schema from
database/schema.sql - Update the database credentials in
backend/.env
cd backend
npm install
npm startThe backend server will run on port 5000.
cd frontend
npm install
npm run devThe frontend development server will run on port 3000.
GET /api/items- Get all itemsGET /api/items/:id- Get item by IDPOST /api/items- Create new itemPUT /api/items/:id- Update itemDELETE /api/items/:id- Delete itemPOST /api/items/:id/update-quantity- Update item quantity
GET /api/vendors- Get all vendorsGET /api/vendors/:id- Get vendor by IDPOST /api/vendors- Create new vendorPUT /api/vendors/:id- Update vendorDELETE /api/vendors/:id- Delete vendorGET /api/vendors/:id/items- Get vendor's items