0% found this document useful (0 votes)
4 views17 pages

HTML

The document is an HTML template for an Expense Tracker application that includes user authentication, a dashboard for tracking expenses, and settings for managing budgets and categories. It features sections for logging in, registering, adding expenses, viewing all expenses, and an admin panel for user management. The layout is structured with various forms and navigation elements to facilitate user interaction and data management.

Uploaded by

joyette.silao
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views17 pages

HTML

The document is an HTML template for an Expense Tracker application that includes user authentication, a dashboard for tracking expenses, and settings for managing budgets and categories. It features sections for logging in, registering, adding expenses, viewing all expenses, and an admin panel for user management. The layout is structured with various forms and navigation elements to facilitate user interaction and data management.

Uploaded by

joyette.silao
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

<!

DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8" />

<meta name="viewport" content="width=device-width, initial-scale=1.0" />

<title>Expense Tracker</title>

<link rel="preconnect" href="[Link]

<link rel="preconnect" href="[Link] crossorigin>

<link href="[Link]
family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">

<link rel="stylesheet" href="[Link]" />

</head>

<body>

<!-- ══════════════════════════════════════ AUTH


══════════════════════════════════════ -->

<section id="authScreen" class="auth-page">

<div class="auth-brand">

<div class="logo-box auth-logo">💰</div>

<h1>Expense Tracker</h1>

<p>Manage your finances with ease</p>

</div>

<div class="auth-card">

<h2>Welcome</h2>

<p class="auth-sub">Sign in to your account or create a new one</p>

<div class="auth-tabs">

<button id="loginTabBtn" class="tab active" type="button">↪ Login</button>


<button id="registerTabBtn" class="tab" type="button">⚇ Register</button>

</div>

<form id="loginForm" class="auth-form">

<label for="loginEmail">Email</label>

<input id="loginEmail" type="email" placeholder="[Link]@[Link]" required>

<label for="loginPassword">Password</label>

<input id="loginPassword" type="password" placeholder="••••••••" required>

<button class="btn-primary full" type="submit">↪ Sign In</button>

</form>

<form id="registerForm" class="auth-form hidden">

<label for="registerName">Name</label>

<input id="registerName" type="text" placeholder="Enter your name" required>

<label for="registerEmail">Email</label>

<input id="registerEmail" type="email" placeholder="[Link]@[Link]" required>

<label for="registerPassword">Password</label>

<input id="registerPassword" type="password" placeholder="Create password" required>

<label for="registerConfirmPassword">Confirm Password</label>

<input id="registerConfirmPassword" type="password" placeholder="Confirm password" required>

<button class="btn-primary full" type="submit">⚇ Create Account</button>

</form>

<p id="authMessage" class="auth-message"></p>

</div>

</section>

<!-- ══════════════════════════════════════ APP


══════════════════════════════════════ -->
<div id="appShell" class="app-shell hidden">

<header class="topbar">

<div class="topbar-left">

<div class="logo-box small">💰</div>

<h2>Expense Tracker</h2>

</div>

<div class="topbar-right">

<span id="welcomeText">Welcome!</span>

<span id="topbarRoleBadge" class="topbar-role-badge hidden"></span>

<button id="logoutBtn" class="logout-btn" type="button">↪ Logout</button>

</div>

</header>

<div class="app-body">

<aside class="sidebar">

<nav>

<button class="nav-item active" data-page="dashboard" type="button">⌂ Dashboard</button>

<button class="nav-item" data-page="add-expense" type="button">⊕ Add Expense</button>

<button class="nav-item" data-page="all-expenses" type="button">☰ All Expenses</button>

<button class="nav-item" data-page="settings" type="button">⚙ Settings</button>

<!-- Admin nav button — hidden for regular users -->

<div class="sidebar-divider hidden" id="adminNavDivider"></div>

<button class="nav-item hidden" data-page="admin-panel" type="button" id="adminNavBtn">🛡


Admin Panel</button>

</nav>

</aside>

<main class="main-content">
<!-- ── DASHBOARD ── -->

<section class="page active" id="dashboard">

<div class="page-head">

<h1>Dashboard</h1>

<p>Overview of your spending</p>

</div>

<div class="stats-grid">

<div class="stat-card">

<h3>Total Expenses</h3>

<h2 id="dashboardTotal">₱0.00</h2>

</div>

<div class="stat-card">

<h3>This Month</h3>

<h2 id="dashboardMonthTotal">₱0.00</h2>

</div>

<div class="stat-card">

<h3>Total Transactions</h3>

<h2 id="dashboardCount">0</h2>

</div>

</div>

<!-- Budget Overview -->

<div class="panel">

<div class="panel-head">

<h3>Budget Overview</h3>

</div>

<div class="panel-content budget-grid">


<div class="budget-item">

<span>This Week</span>

<strong id="weeklyBudgetStatus">₱0.00 / ₱0.00</strong>

<small id="weeklyBudgetHint">Remaining: ₱0.00</small>

</div>

<div class="budget-item">

<span>This Month</span>

<strong id="monthlyBudgetStatus">₱0.00 / ₱0.00</strong>

<small id="monthlyBudgetHint">Remaining: ₱0.00</small>

</div>

<div class="budget-item">

<span>This Year</span>

<strong id="yearlyBudgetStatus">₱0.00 / ₱0.00</strong>

<small id="yearlyBudgetHint">Remaining: ₱0.00</small>

</div>

</div>

<!-- Category Budget Allocation -->

<div class="alloc-section">

<div class="alloc-header">

<div class="alloc-title-wrap">

<span class="alloc-title">📂 Category Budget Allocation</span>

<span class="alloc-subtitle">Equal split across all categories</span>

</div>

<div class="alloc-tab-group">

<button class="alloc-tab active" data-period="weekly" type="button">Week</button>

<button class="alloc-tab" data-period="monthly" type="button">Month</button>

<button class="alloc-tab" data-period="yearly" type="button">Year</button>

</div>
</div>

<div id="categoryAllocationList" class="category-allocation-list"></div>

</div>

</div>

<!-- Spending Analytics Charts -->

<div class="panel chart-panel">

<div class="panel-head">

<h3>📊 Spending Analytics</h3>

<div class="chart-tab-group">

<button class="chart-tab-btn active" data-view="today" type="button">Today</button>

<button class="chart-tab-btn" data-view="month" type="button">Month</button>

<button class="chart-tab-btn" data-view="year" type="button">Year</button>

</div>

</div>

<div class="panel-content">

<div id="chartViewToday" class="chart-view active">

<div class="chart-inner">

<div class="chart-canvas-wrap"><canvas id="todayChart"></canvas></div>

<div id="todayLegend" class="chart-legend"></div>

</div>

<p id="todayEmpty" class="chart-empty hidden">No expenses logged today.</p>

</div>

<div id="chartViewMonth" class="chart-view">

<div class="chart-inner">

<div class="chart-canvas-wrap wide"><canvas id="monthChart"></canvas></div>

</div>

<p id="monthEmpty" class="chart-empty hidden">No expenses this month.</p>

</div>
<div id="chartViewYear" class="chart-view">

<div class="chart-inner">

<div class="chart-canvas-wrap wide"><canvas id="yearChart"></canvas></div>

</div>

<p id="yearEmpty" class="chart-empty hidden">No expenses this year.</p>

</div>

</div>

</div>

<!-- Recent Expenses -->

<div class="panel">

<div class="panel-head"><h3>Recent Expenses</h3></div>

<div id="recentExpensesContainer" class="panel-content"></div>

</div>

</section>

<!-- ── ADD EXPENSE ── -->

<section class="page" id="add-expense">

<div class="page-head">

<h1>Add Expense</h1>

<p>Save a new expense</p>

</div>

<div class="form-card">

<form id="expenseForm">

<label for="amount">Amount</label>

<input id="amount" type="number" step="0.01" min="0.01" placeholder="0.00" required>

<label for="categorySelect">Category</label>

<select id="categorySelect" required></select>

<label for="description">Description</label>
<textarea id="description" placeholder="What did you spend on?" required></textarea>

<label for="expenseDate">Date</label>

<input id="expenseDate" type="date" required>

<div class="form-actions">

<button class="btn-primary" type="submit">Add Expense</button>

<button class="btn-light" id="cancelExpenseBtn" type="reset">Cancel</button>

</div>

</form>

</div>

</section>

<!-- ── ALL EXPENSES ── -->

<section class="page" id="all-expenses">

<div class="page-head between">

<div>

<h1>All Expenses</h1>

<p id="allExpenseCount">0 transactions</p>

</div>

<div class="total-box">

<span>Total</span>

<strong id="allExpenseTotal">₱0.00</strong>

</div>

</div>

<div class="panel expenses-panel">

<div id="expensesList" class="expenses-list"></div>

</div>

</section>

<!-- ── SETTINGS ── -->


<section class="page" id="settings">

<div class="page-head">

<h1>Settings</h1>

<p>Manage budgets and categories</p>

</div>

<!-- Budget form -->

<div class="settings-card">

<div class="panel-head settings-top"><h3>Budget Settings</h3></div>

<div class="budget-cascade-info">

<div class="cascade-rule">

<span class="cascade-icon">📅</span>

<div><strong>Set Yearly</strong> → Monthly &amp; Weekly auto-calculated</div>

</div>

<div class="cascade-rule">

<span class="cascade-icon">🗓</span>

<div><strong>Set Monthly</strong> → Weekly auto-calculated · Yearly untouched</div>

</div>

<div class="cascade-rule">

<span class="cascade-icon">📆</span>

<div><strong>Set Weekly</strong> → Monthly &amp; Yearly untouched</div>

</div>

</div>

<form id="budgetForm" class="budget-form">

<div class="budget-field">

<label for="currencyInput">Currency</label>

<input type="text" id="currencyInput" maxlength="3" placeholder="PHP" required>

</div>

<div class="budget-field" id="yearlyBudgetField">


<div class="budget-label-row">

<label for="yearlyBudgetInput">Yearly Budget</label>

<span class="cascade-source-badge">Master</span>

</div>

<input type="number" id="yearlyBudgetInput" min="0" step="0.01" placeholder="0.00">

<small class="budget-cascade-hint" id="yearlyHint"></small>

</div>

<div class="budget-field" id="monthlyBudgetField">

<div class="budget-label-row">

<label for="monthlyBudgetInput">Monthly Budget</label>

<span class="auto-badge hidden" id="monthlyAutoBadge">⚡ Auto</span>

</div>

<input type="number" id="monthlyBudgetInput" min="0" step="0.01" placeholder="0.00">

<small class="budget-cascade-hint" id="monthlyHint"></small>

</div>

<div class="budget-field" id="weeklyBudgetField">

<div class="budget-label-row">

<label for="weeklyBudgetInput">Weekly Budget</label>

<span class="auto-badge hidden" id="weeklyAutoBadge">⚡ Auto</span>

</div>

<input type="number" id="weeklyBudgetInput" min="0" step="0.01" placeholder="0.00">

<small class="budget-cascade-hint" id="weeklyHint"></small>

</div>

<button type="submit" class="btn-primary budget-save-btn">💾 Save Budget Settings</button>

</form>

<p id="budgetSaveMsg" class="budget-save-msg hidden"></p>

</div>

<!-- Default categories — read-only -->


<div class="settings-card">

<div class="panel-head settings-top">

<h3>Default Categories</h3>

<span class="admin-badge">🔒 Admin Managed</span>

</div>

<p class="admin-note">These are the default categories available to all users. Only an admin can
add, edit, or remove them via the Supabase dashboard.</p>

<div id="settingsCategoryGrid" class="settings-category-grid"></div>

</div>

<!-- User custom categories -->

<div class="settings-card">

<div class="panel-head settings-top">

<h3>My Custom Categories</h3>

<span class="user-cat-count-badge" id="userCatCount">0 custom</span>

</div>

<p class="admin-note">Create your own categories. You can delete any category you created as
long as it has no expenses linked to it.</p>

<form id="addUserCategoryForm" class="user-cat-form">

<div class="user-cat-inputs">

<div class="user-cat-field">

<label for="newCategoryName">Category Name</label>

<input type="text" id="newCategoryName" placeholder="e.g. Gym, Hobbies…"


maxlength="40" required>

</div>

<div class="user-cat-field narrow">

<label for="newCategoryIcon">Icon (emoji)</label>

<input type="text" id="newCategoryIcon" placeholder="🏷" maxlength="4">

</div>

<div class="user-cat-field narrow">


<label for="newCategoryColor">Color</label>

<select id="newCategoryColor">

<option value="pink">🌸 Pink</option>

<option value="blue">🔵 Blue</option>

<option value="lavender">💜 Lavender</option>

<option value="yellow">🟡 Yellow</option>

<option value="mint">🟢 Mint</option>

<option value="sky">🩵 Sky</option>

<option value="gray" selected>⬜ Gray</option>

</select>

</div>

</div>

<button type="submit" class="btn-primary user-cat-submit">+ Add Category</button>

<p id="userCatMsg" class="user-cat-msg hidden"></p>

</form>

<div id="userCategoryGrid" class="settings-category-grid" style="margin-top:16px;"></div>

</div>

</section>

<!-- ══════════════════════════════════════ ADMIN PANEL


══════════════════════════════════════ -->

<section class="page" id="admin-panel">

<div class="page-head between">

<div>

<h1>Admin Panel</h1>

<p id="adminPanelSubtitle">Manage users, expenses, and categories</p>

</div>

<span id="adminRoleBadge" class="role-badge role-admin">🛡 Admin</span>

</div>
<!-- Admin Summary Stats -->

<div class="stats-grid" id="adminStatsGrid">

<div class="stat-card">

<h3>Total Users</h3>

<h2 id="adminStatUsers">—</h2>

</div>

<div class="stat-card">

<h3>Total Expenses</h3>

<h2 id="adminStatExpenses">—</h2>

</div>

<div class="stat-card">

<h3>All-User Spend</h3>

<h2 id="adminStatTotalSpent">—</h2>

</div>

</div>

<!-- Admin Sub-tab Bar -->

<div class="admin-tab-bar">

<button class="admin-tab active" data-admin-tab="users" type="button">👥 Users</button>

<button class="admin-tab" data-admin-tab="expenses" type="button">💸 All


Expenses</button>

<button class="admin-tab" data-admin-tab="categories" type="button">📂


Categories</button>

</div>

<!-- ── USERS TAB ── -->

<div class="admin-tab-content active" id="adminTabUsers">

<div class="panel">
<div class="panel-head">

<h3>All Users</h3>

<span id="adminUserCount" class="user-cat-count-badge">0 users</span>

</div>

<div class="panel-content" id="adminUsersList">

<div class="empty-state"><p>Loading users…</p></div>

</div>

</div>

</div>

<!-- ── ALL EXPENSES TAB ── -->

<div class="admin-tab-content" id="adminTabExpenses">

<div class="panel">

<div class="panel-head admin-expenses-head">

<h3>All Expenses</h3>

<div class="admin-filter-row">

<input type="text" id="adminExpenseSearch" placeholder="🔍 Search description…"


class="admin-search-input">

<select id="adminExpenseUserFilter" class="admin-filter-select">

<option value="">All Users</option>

</select>

</div>

</div>

<div class="admin-expense-meta">

<span id="adminExpenseCount">0 results</span>

<strong id="adminExpenseFilterTotal">₱0.00</strong>

</div>

<div class="panel-content" id="adminExpensesList">

<div class="empty-state"><p>Loading expenses…</p></div>


</div>

</div>

</div>

<!-- ── CATEGORIES TAB ── -->

<div class="admin-tab-content" id="adminTabCategories">

<!-- Default categories section -->

<div class="settings-card">

<div class="panel-head settings-top">

<h3>Default Categories</h3>

<span class="admin-badge">🌐 Global</span>

</div>

<p class="admin-note">Toggle 🔒 lock to control if users can use each category. Super admins can
add or delete default categories.</p>

<!-- Add default category (super_admin only) -->

<div id="adminAddDefaultCatSection" class="hidden">

<div class="admin-section-label">➕ Add New Default Category</div>

<form id="adminAddDefaultCatForm" class="user-cat-form">

<div class="user-cat-inputs">

<div class="user-cat-field">

<label for="adminNewCatName">Category Name</label>

<input type="text" id="adminNewCatName" placeholder="e.g. Investments…"


maxlength="40" required>

</div>

<div class="user-cat-field narrow">

<label for="adminNewCatIcon">Icon (emoji)</label>

<input type="text" id="adminNewCatIcon" placeholder="🏷" maxlength="4">


</div>

<div class="user-cat-field narrow">

<label for="adminNewCatColor">Color</label>

<select id="adminNewCatColor">

<option value="pink">🌸 Pink</option>

<option value="blue">🔵 Blue</option>

<option value="lavender">💜 Lavender</option>

<option value="yellow">🟡 Yellow</option>

<option value="mint">🟢 Mint</option>

<option value="sky">🩵 Sky</option>

<option value="gray" selected>⬜ Gray</option>

</select>

</div>

</div>

<button type="submit" class="btn-primary user-cat-submit">+ Add Default Category</button>

</form>

<p id="adminCatMsg" class="user-cat-msg hidden"></p>

</div>

<div id="adminDefaultCatGrid" class="settings-category-grid" style="margin-top:16px;"></div>

</div>

<!-- User-created categories section -->

<div class="settings-card" style="margin-top:20px;">

<div class="panel-head settings-top">

<h3>User-Created Categories</h3>

<span id="adminUserCatCount" class="user-cat-count-badge">0 categories</span>

</div>
<p class="admin-note">Lock a user's custom category to prevent them from deleting it. Unlock
to allow deletion.</p>

<div id="adminUserCatGrid" class="settings-category-grid" style="margin-top:16px;"></div>

</div>

</div>

</section>

<!-- ══════════════════════════════════════ END ADMIN PANEL


══════════════════════════════════════ -->

</main>

</div>

</div>

<script src="[Link]

<script src="[Link]

<script src="[Link]"></script>

</body>

</html>

You might also like