- Passwordless email OTP authentication - Event-based expense tracking with HTMX UI - AI receipt extraction via DeepSeek Vision API - CSV/PDF report generation with email filing - PWA with service worker and manifest - Mobile-first responsive design - SQLite database with auto-migration
47 lines
2.1 KiB
HTML
47 lines
2.1 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
|
<meta name="theme-color" content="#10b981">
|
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
<meta name="apple-mobile-web-app-status-bar-style" content="default">
|
|
<title>ExpenseFlow</title>
|
|
<link rel="manifest" href="/manifest.json">
|
|
<link rel="apple-touch-icon" href="/static/icons/icon-192.png">
|
|
<link rel="stylesheet" href="/static/css/style.css">
|
|
<script src="https://unpkg.com/htmx.org@1.9.10"></script>
|
|
</head>
|
|
<body>
|
|
<div class="login-page">
|
|
<div class="card login-card">
|
|
<div class="login-brand">
|
|
<div class="login-icon">
|
|
<svg width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#10b981" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
<path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/>
|
|
</svg>
|
|
</div>
|
|
<h1>ExpenseFlow</h1>
|
|
<p class="text-secondary">AI-Powered Expense Tracking</p>
|
|
</div>
|
|
|
|
<div id="otp-form">
|
|
<form hx-post="/request-otp" hx-target="#otp-form" hx-swap="outerHTML">
|
|
<div class="form-group">
|
|
<label for="email">Email Address</label>
|
|
<input type="email" id="email" name="email" placeholder="you@example.com" required autocomplete="email" inputmode="email">
|
|
</div>
|
|
<button type="submit" class="btn btn-primary btn-block">
|
|
<span class="spinner htmx-indicator"></span>
|
|
Send Verification Code
|
|
</button>
|
|
</form>
|
|
</div>
|
|
|
|
<p class="text-secondary" style="text-align: center; font-size: 0.875rem; margin-top: 1rem;">
|
|
A 6-digit verification code will be sent to your email.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|