tayyab / index.html
mabdullahsibghatullah123's picture
Upload 17 files
5ae7c8f verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SustainaBite | Food Waste Assistant</title>
<link rel="stylesheet" href="style.css">
<!-- Ionicons for Icons -->
<script type="module" src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.esm.js"></script>
<script nomodule src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.js"></script>
</head>
<body>
<div class="app-container">
<!-- Header -->
<header>
<div class="logo">
<ion-icon name="leaf"></ion-icon>
Sustaina<span>Bite</span>
</div>
<nav>
<ul>
<li><button class="active" onclick="showSection('dashboard')">Dashboard</button></li>
<li><button onclick="showSection('inventory')">Inventory</button></li>
<li><button onclick="showSection('recipes')">Recipes</button></li>
<li><button onclick="showSection('settings')"><ion-icon name="settings-outline"></ion-icon></button>
</li>
</ul>
</nav>
</header>
<!-- Main Content -->
<!-- DASHBOARD VIEW -->
<main id="dashboard-section">
<div class="stats-container">
<div class="card stat-card">
<span class="stat-label">Items Tracked</span>
<div class="stat-value" id="total-items">0</div>
</div>
<div class="card stat-card">
<span class="stat-label">Expiring Soon</span>
<div class="stat-value" id="expiring-soon">0</div>
</div>
<div class="card stat-card">
<span class="stat-label">Waste Avoided</span>
<div class="stat-value" id="waste-avoided">0kg</div>
</div>
<div class="card stat-card">
<span class="stat-label">Money Saved</span>
<div class="stat-value" id="money-saved">$0</div>
</div>
</div>
<div class="card action-section">
<h3 class="mb-4">Recent Alerts</h3>
<div id="alerts-container">
<!-- Dynamic Alerts -->
<p class="text-muted">No urgent alerts.</p>
</div>
</div>
<div class="card list-section">
<h3 class="mb-4">Quick Add Item</h3>
<form id="quick-add-form">
<div class="input-group">
<label>Item Name</label>
<input type="text" id="quick-name" placeholder="e.g. Milk" required>
</div>
<div class="input-group">
<label>Expiry Date</label>
<input type="date" id="quick-date" required>
</div>
<button type="submit" class="primary-btn">
<ion-icon name="add-circle-outline"></ion-icon> Add Item
</button>
<p id="quick-msg" style="margin-top:10px; font-size: 0.9rem;"></p>
</form>
</div>
</main>
<!-- INVENTORY VIEW -->
<main id="inventory-section" class="hidden">
<div class="card action-section">
<h3 class="mb-4">Log Grocery Item</h3>
<form id="add-item-form">
<div class="input-group">
<label>Item Name</label>
<input type="text" name="name" placeholder="Avocados" required>
</div>
<div class="input-group">
<label>Category</label>
<select name="category">
<option value="Vegetables">Vegetables</option>
<option value="Fruits">Fruits</option>
<option value="Dairy">Dairy</option>
<option value="Meat">Meat</option>
<option value="Grains">Grains</option>
<option value="Other">Other</option>
</select>
</div>
<div class="input-group">
<label>Quantity</label>
<input type="text" name="quantity" placeholder="e.g. 2 pcs or 500g">
</div>
<div class="input-group">
<label>Expiry Date (Optional - AI will predict)</label>
<input type="date" name="expiryDate">
</div>
<button type="submit" class="primary-btn">
<span>Add to Inventory</span>
</button>
</form>
</div>
<div class="card list-section">
<h3 class="mb-4">Current Inventory</h3>
<div class="tools mb-4" style="display: flex; gap: 10px;">
<input type="text" placeholder="Search items..." id="search-inventory">
<button class="primary-btn" style="width: auto;" onclick="refreshInventory()">
<ion-icon name="refresh"></ion-icon>
</button>
</div>
<ul class="inventory-list" id="inventory-list-ul">
<!-- Dynamic List Items -->
</ul>
</div>
</main>
<!-- RECIPES VIEW -->
<main id="recipes-section" class="hidden">
<div class="card action-section">
<h3 class="mb-4">Cook Assistant</h3>
<p class="mb-4 text-muted">Generate recipes based on ingredients that are expiring soon.</p>
<button class="primary-btn" onclick="getRecipeSuggestions()">
<ion-icon name="restaurant"></ion-icon> Suggest Recipes
</button>
</div>
<div class="card list-section">
<h3 class="mb-4">Suggested For You</h3>
<div id="recipes-container" class="recipes-grid">
<!-- Dynamic Recipes -->
<p class="text-muted">Click "Suggest Recipes" to see ideas.</p>
</div>
</div>
</main>
<!-- SETTINGS VIEW -->
<main id="settings-section" class="hidden">
<div class="card" style="grid-column: span 12; max-width: 600px; margin: 0 auto;">
<h3 class="mb-4">Settings</h3>
<p class="mb-4">Configure your N8N Webhook URLs below to connect the backend.</p>
<div class="input-group">
<label>Base N8N Webhook URL</label>
<input type="text" id="config-webhook-url" placeholder="https://your-n8n-instance.com/webhook/...">
</div>
<div style="display: flex; gap: 10px; margin-bottom: 20px;">
<button class="primary-btn" onclick="saveSettings()">Save Configuration</button>
<button class="primary-btn" style="background: var(--secondary);" onclick="testConnection()">Test
Connection</button>
</div>
<div id="connection-log"
style="font-family: monospace; font-size: 0.85rem; padding: 10px; background: rgba(0,0,0,0.3); border-radius: 8px; display: none;">
</div>
</div>
</main>
</div>
<!-- Scripts -->
<script src="config.js"></script>
<script src="app.js"></script>
</body>
</html>