fire-mission-control / index.html
LukasBe's picture
Add 3 files
f029fd1 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>FIRE Mission Control</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<style>
.gauge {
--percentage: 0;
--fill: #4ade80;
width: 150px;
height: 75px;
position: relative;
overflow: hidden;
}
.gauge::before {
content: "";
position: absolute;
width: 150px;
height: 75px;
border: 15px solid #e5e7eb;
border-bottom: none;
border-radius: 75px 75px 0 0;
box-sizing: border-box;
}
.gauge::after {
content: "";
position: absolute;
width: 150px;
height: 75px;
border: 15px solid var(--fill);
border-bottom: none;
border-radius: 75px 75px 0 0;
box-sizing: border-box;
left: 0;
top: 100%;
transform-origin: 50% 0;
transform: rotate(0.5turn);
animation: fill-gauge 1.5s ease-out forwards;
animation-delay: 0.5s;
}
@keyframes fill-gauge {
to { transform: rotate(calc(0.5turn + (1turn * var(--percentage) / 100))); }
}
.progress-ring {
--percentage: 0;
--primary: #3b82f6;
--secondary: #e5e7eb;
--size: 120px;
width: var(--size);
height: var(--size);
border-radius: 50%;
display: grid;
place-items: center;
background:
radial-gradient(closest-side, white 85%, transparent 86% 100%),
conic-gradient(var(--primary) calc(var(--percentage) * 1%), var(--secondary) 0);
}
.progress-ring::before {
content: attr(data-progress) "%";
font-weight: bold;
font-size: 1.2rem;
}
.flip-card {
perspective: 1000px;
}
.flip-card-inner {
transition: transform 0.6s;
transform-style: preserve-3d;
}
.flip-card:hover .flip-card-inner {
transform: rotateY(180deg);
}
.flip-card-front, .flip-card-back {
backface-visibility: hidden;
}
.flip-card-back {
transform: rotateY(180deg);
}
.badge {
animation: pulse 2s infinite;
}
@keyframes pulse {
0% { transform: scale(1); }
50% { transform: scale(1.05); }
100% { transform: scale(1); }
}
.glow {
box-shadow: 0 0 15px rgba(59, 130, 246, 0.5);
}
.tab-content {
display: none;
}
.tab-content.active {
display: block;
animation: fadeIn 0.5s ease-in;
}
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
</style>
</head>
<body class="bg-gray-100 font-sans">
<div class="container mx-auto px-4 py-6">
<!-- Header -->
<header class="bg-white rounded-xl shadow-md p-6 mb-6 flex flex-col md:flex-row justify-between items-center">
<div class="flex items-center mb-4 md:mb-0">
<div class="bg-blue-500 text-white p-3 rounded-lg mr-4">
<i class="fas fa-rocket text-2xl"></i>
</div>
<div>
<h1 class="text-2xl font-bold text-gray-800">FIRE Mission Control</h1>
<p class="text-gray-600">Your dashboard to financial independence</p>
</div>
</div>
<div class="flex items-center">
<div class="mr-4">
<div class="text-sm text-gray-500">Today is</div>
<div class="font-semibold" id="current-date">June 15, 2023</div>
</div>
<div class="relative">
<img src="https://randomuser.me/api/portraits/men/32.jpg" alt="User" class="w-12 h-12 rounded-full border-2 border-blue-500">
<span class="absolute bottom-0 right-0 bg-green-500 text-white text-xs font-bold px-1 rounded-full"></span>
</div>
</div>
</header>
<!-- Welcome Section -->
<section class="bg-gradient-to-r from-blue-500 to-blue-700 rounded-xl shadow-md p-6 mb-6 text-white">
<h2 class="text-2xl font-bold mb-2">Good Morning, <span id="user-name">Alex</span>!</h2>
<p class="mb-4">You are <span class="font-bold text-yellow-300" id="fi-percentage">42%</span> of the way to Financial Independence</p>
<div class="flex flex-wrap items-center justify-between">
<div class="flex items-center mb-4 md:mb-0">
<div class="progress-ring mr-4" data-progress="42" style="--percentage:42; --primary:#fbbf24; --size:80px;"></div>
<div>
<div class="text-sm">FI Progress</div>
<div class="text-xl font-bold">$425,000 / $1,000,000</div>
<div class="text-xs">Target based on 4% SWR</div>
</div>
</div>
<div class="bg-white bg-opacity-20 rounded-lg p-3 text-center">
<div class="text-sm">Days of Freedom Earned</div>
<div class="text-2xl font-bold">1,325</div>
<div class="text-xs">Based on $40/day spending</div>
</div>
<div class="bg-white bg-opacity-20 rounded-lg p-3 text-center">
<div class="text-sm">Time to FI</div>
<div class="text-2xl font-bold">8.5 years</div>
<div class="text-xs">At current savings rate</div>
</div>
<div class="bg-white bg-opacity-20 rounded-lg p-3 text-center">
<div class="text-sm">Savings Rate</div>
<div class="text-2xl font-bold">45%</div>
<div class="text-xs">Target: 50%</div>
</div>
</div>
</section>
<!-- Alerts Section -->
<section class="bg-white rounded-xl shadow-md p-6 mb-6">
<div class="flex justify-between items-center mb-4">
<h2 class="text-xl font-bold text-gray-800">Alerts & Notifications</h2>
<span class="bg-blue-100 text-blue-800 text-xs font-medium px-2.5 py-0.5 rounded-full">3 New</span>
</div>
<div class="space-y-3">
<div class="flex items-start p-3 bg-yellow-50 rounded-lg border-l-4 border-yellow-400">
<div class="mr-3 text-yellow-500">
<i class="fas fa-exclamation-circle"></i>
</div>
<div>
<div class="font-medium text-yellow-800">Market down 2.5% this week</div>
<div class="text-sm text-yellow-700">Historical data suggests staying the course. Consider tax-loss harvesting opportunities.</div>
</div>
</div>
<div class="flex items-start p-3 bg-green-50 rounded-lg border-l-4 border-green-400">
<div class="mr-3 text-green-500">
<i class="fas fa-check-circle"></i>
</div>
<div>
<div class="font-medium text-green-800">$100k invested milestone reached!</div>
<div class="text-sm text-green-700">Compound interest is now working harder for you. Keep it up!</div>
</div>
</div>
<div class="flex items-start p-3 bg-blue-50 rounded-lg border-l-4 border-blue-400">
<div class="mr-3 text-blue-500">
<i class="fas fa-info-circle"></i>
</div>
<div>
<div class="font-medium text-blue-800">IRA contribution limit reminder</div>
<div class="text-sm text-blue-700">You've contributed $3,000 of $6,500 limit for 2023.</div>
</div>
</div>
</div>
</section>
<!-- Main Dashboard Tabs -->
<div class="mb-6">
<ul class="flex flex-wrap text-sm font-medium text-center border-b border-gray-200" id="dashboard-tabs">
<li class="mr-2">
<button class="inline-block p-4 rounded-t-lg border-b-2 border-blue-600 text-blue-600 active" data-tab="income">Income & Savings</button>
</li>
<li class="mr-2">
<button class="inline-block p-4 rounded-t-lg border-b-2 border-transparent hover:text-gray-600 hover:border-gray-300" data-tab="expenses">Expenses</button>
</li>
<li class="mr-2">
<button class="inline-block p-4 rounded-t-lg border-b-2 border-transparent hover:text-gray-600 hover:border-gray-300" data-tab="investments">Investments</button>
</li>
<li class="mr-2">
<button class="inline-block p-4 rounded-t-lg border-b-2 border-transparent hover:text-gray-600 hover:border-gray-300" data-tab="retirement">Retirement</button>
</li>
<li class="mr-2">
<button class="inline-block p-4 rounded-t-lg border-b-2 border-transparent hover:text-gray-600 hover:border-gray-300" data-tab="automation">Automation</button>
</li>
</ul>
</div>
<!-- Tab Content -->
<div id="tab-content">
<!-- Income & Savings Tab -->
<div class="tab-content active" id="income-tab">
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-6">
<!-- Income Streams -->
<div class="bg-white rounded-xl shadow-md p-6">
<h3 class="text-lg font-bold text-gray-800 mb-4">Income Streams</h3>
<div class="mb-4">
<div class="flex justify-between mb-1">
<span class="text-sm font-medium text-gray-700">Primary Job</span>
<span class="text-sm font-medium">$85,000</span>
</div>
<div class="w-full bg-gray-200 rounded-full h-2.5">
<div class="bg-blue-600 h-2.5 rounded-full" style="width: 85%"></div>
</div>
</div>
<div class="mb-4">
<div class="flex justify-between mb-1">
<span class="text-sm font-medium text-gray-700">Side Hustle</span>
<span class="text-sm font-medium">$12,000</span>
</div>
<div class="w-full bg-gray-200 rounded-full h-2.5">
<div class="bg-green-500 h-2.5 rounded-full" style="width: 12%"></div>
</div>
</div>
<div class="mb-4">
<div class="flex justify-between mb-1">
<span class="text-sm font-medium text-gray-700">Investment Income</span>
<span class="text-sm font-medium">$3,000</span>
</div>
<div class="w-full bg-gray-200 rounded-full h-2.5">
<div class="bg-purple-500 h-2.5 rounded-full" style="width: 3%"></div>
</div>
</div>
<div class="mt-6">
<h4 class="text-md font-semibold mb-2">What-if Scenarios</h4>
<div class="flex space-x-2">
<button class="px-3 py-1 text-sm bg-blue-100 text-blue-800 rounded-full hover:bg-blue-200">+5% Salary</button>
<button class="px-3 py-1 text-sm bg-green-100 text-green-800 rounded-full hover:bg-green-200">New Side Hustle</button>
<button class="px-3 py-1 text-sm bg-purple-100 text-purple-800 rounded-full hover:bg-purple-200">Dividend Growth</button>
</div>
</div>
</div>
<!-- Savings Optimization -->
<div class="bg-white rounded-xl shadow-md p-6">
<h3 class="text-lg font-bold text-gray-800 mb-4">Savings Optimization</h3>
<div class="mb-6">
<div class="flex justify-between items-center mb-2">
<span class="font-medium">Employer Match</span>
<span class="text-sm bg-green-100 text-green-800 px-2 py-0.5 rounded-full">Maximized</span>
</div>
<p class="text-sm text-gray-600 mb-2">You're contributing 6% to get the full 3% match.</p>
<div class="w-full bg-gray-200 rounded-full h-2.5">
<div class="bg-green-500 h-2.5 rounded-full" style="width: 100%"></div>
</div>
</div>
<div class="mb-6">
<h4 class="font-medium mb-2">Automated Savings</h4>
<div class="space-y-3">
<div class="flex justify-between items-center">
<div class="flex items-center">
<div class="w-8 h-8 bg-blue-100 rounded-full flex items-center justify-center mr-2">
<i class="fas fa-piggy-bank text-blue-600"></i>
</div>
<span class="text-sm">401(k)</span>
</div>
<span class="text-sm font-medium">$1,062/mo</span>
</div>
<div class="flex justify-between items-center">
<div class="flex items-center">
<div class="w-8 h-8 bg-green-100 rounded-full flex items-center justify-center mr-2">
<i class="fas fa-landmark text-green-600"></i>
</div>
<span class="text-sm">Roth IRA</span>
</div>
<span class="text-sm font-medium">$541/mo</span>
</div>
<div class="flex justify-between items-center">
<div class="flex items-center">
<div class="w-8 h-8 bg-purple-100 rounded-full flex items-center justify-center mr-2">
<i class="fas fa-chart-line text-purple-600"></i>
</div>
<span class="text-sm">Taxable Brokerage</span>
</div>
<span class="text-sm font-medium">$750/mo</span>
</div>
</div>
</div>
<button class="w-full bg-blue-600 hover:bg-blue-700 text-white py-2 px-4 rounded-lg flex items-center justify-center">
<i class="fas fa-arrow-up mr-2"></i> Increase Savings Rate to 50%
</button>
</div>
</div>
<div class="bg-white rounded-xl shadow-md p-6 mb-6">
<h3 class="text-lg font-bold text-gray-800 mb-4">Pay Yourself First Efficiency</h3>
<div class="flex flex-col md:flex-row items-center">
<div class="gauge mb-4 md:mb-0 md:mr-6" style="--percentage:90; --fill:#3b82f6;"></div>
<div class="flex-1">
<div class="mb-2">
<div class="flex justify-between mb-1">
<span class="text-sm font-medium text-gray-700">Automated Savings</span>
<span class="text-sm font-medium">$2,353/mo</span>
</div>
<div class="w-full bg-gray-200 rounded-full h-2.5">
<div class="bg-blue-600 h-2.5 rounded-full" style="width: 90%"></div>
</div>
</div>
<div>
<div class="flex justify-between mb-1">
<span class="text-sm font-medium text-gray-700">Manual Savings</span>
<span class="text-sm font-medium">$250/mo</span>
</div>
<div class="w-full bg-gray-200 rounded-full h-2.5">
<div class="bg-gray-400 h-2.5 rounded-full" style="width: 10%"></div>
</div>
</div>
<p class="text-sm text-gray-600 mt-2">90% of your savings are automated - excellent! Try to reach 100%.</p>
</div>
</div>
</div>
</div>
<!-- Expenses Tab -->
<div class="tab-content" id="expenses-tab">
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-6">
<!-- Spending Analysis -->
<div class="bg-white rounded-xl shadow-md p-6">
<h3 class="text-lg font-bold text-gray-800 mb-4">Spending Analysis</h3>
<div class="h-64">
<canvas id="spendingChart"></canvas>
</div>
<div class="mt-4 grid grid-cols-2 gap-2">
<div class="bg-blue-50 p-3 rounded-lg">
<div class="text-sm text-blue-800">Biggest Category</div>
<div class="font-bold">Housing</div>
<div class="text-xs">$1,500/mo (30%)</div>
</div>
<div class="bg-green-50 p-3 rounded-lg">
<div class="text-sm text-green-800">Most Improved</div>
<div class="font-bold">Dining Out</div>
<div class="text-xs">↓15% from last month</div>
</div>
</div>
</div>
<!-- Latte Factor -->
<div class="bg-white rounded-xl shadow-md p-6">
<h3 class="text-lg font-bold text-gray-800 mb-4">Latte Factor</h3>
<div class="mb-4">
<div class="flex justify-between items-center mb-2">
<div class="flex items-center">
<i class="fas fa-coffee text-brown-500 mr-2"></i>
<span>Daily Coffee</span>
</div>
<span class="font-medium">$5/day</span>
</div>
<div class="text-sm text-gray-600 mb-2">Invested instead, this could grow to <span class="font-bold">$42,000</span> in 20 years</div>
<div class="w-full bg-gray-200 rounded-full h-2.5">
<div class="bg-yellow-500 h-2.5 rounded-full" style="width: 60%"></div>
</div>
</div>
<div class="mb-4">
<div class="flex justify-between items-center mb-2">
<div class="flex items-center">
<i class="fas fa-utensils text-red-500 mr-2"></i>
<span>Lunch Out</span>
</div>
<span class="font-medium">$12/day</span>
</div>
<div class="text-sm text-gray-600 mb-2">Invested instead, this could grow to <span class="font-bold">$101,000</span> in 20 years</div>
<div class="w-full bg-gray-200 rounded-full h-2.5">
<div class="bg-red-500 h-2.5 rounded-full" style="width: 75%"></div>
</div>
</div>
<div class="mb-4">
<div class="flex justify-between items-center mb-2">
<div class="flex items-center">
<i class="fas fa-tv text-purple-500 mr-2"></i>
<span>Streaming Services</span>
</div>
<span class="font-medium">$45/mo</span>
</div>
<div class="text-sm text-gray-600 mb-2">Invested instead, this could grow to <span class="font-bold">$23,000</span> in 20 years</div>
<div class="w-full bg-gray-200 rounded-full h-2.5">
<div class="bg-purple-500 h-2.5 rounded-full" style="width: 40%"></div>
</div>
</div>
<button class="w-full bg-green-600 hover:bg-green-700 text-white py-2 px-4 rounded-lg flex items-center justify-center">
<i class="fas fa-lightbulb mr-2"></i> Show Me More Opportunities
</button>
</div>
</div>
<!-- Debt Management -->
<div class="bg-white rounded-xl shadow-md p-6 mb-6">
<h3 class="text-lg font-bold text-gray-800 mb-4">Debt Management</h3>
<div class="overflow-x-auto">
<table class="w-full text-sm text-left text-gray-500">
<thead class="text-xs text-gray-700 uppercase bg-gray-50">
<tr>
<th class="px-6 py-3">Debt Type</th>
<th class="px-6 py-3">Balance</th>
<th class="px-6 py-3">Interest Rate</th>
<th class="px-6 py-3">Minimum Payment</th>
<th class="px-6 py-3">Payoff Date</th>
<th class="px-6 py-3">Action</th>
</tr>
</thead>
<tbody>
<tr class="bg-white border-b">
<td class="px-6 py-4 font-medium text-gray-900">Mortgage</td>
<td class="px-6 py-4">$245,000</td>
<td class="px-6 py-4">3.25%</td>
<td class="px-6 py-4">$1,350</td>
<td class="px-6 py-4">2043</td>
<td class="px-6 py-4">
<button class="text-blue-600 hover:text-blue-800">Refi Check</button>
</td>
</tr>
<tr class="bg-white border-b">
<td class="px-6 py-4 font-medium text-gray-900">Student Loan</td>
<td class="px-6 py-4">$22,500</td>
<td class="px-6 py-4">5.8%</td>
<td class="px-6 py-4">$250</td>
<td class="px-6 py-4">2030</td>
<td class="px-6 py-4">
<button class="text-blue-600 hover:text-blue-800">Pay Extra</button>
</td>
</tr>
<tr class="bg-white border-b">
<td class="px-6 py-4 font-medium text-gray-900">Auto Loan</td>
<td class="px-6 py-4">$8,750</td>
<td class="px-6 py-4">4.5%</td>
<td class="px-6 py-4">$275</td>
<td class="px-6 py-4">2027</td>
<td class="px-6 py-4">
<button class="text-blue-600 hover:text-blue-800">Payoff Plan</button>
</td>
</tr>
</tbody>
</table>
</div>
<div class="mt-4 flex flex-col md:flex-row space-y-2 md:space-y-0 md:space-x-2">
<button class="flex-1 bg-blue-100 hover:bg-blue-200 text-blue-800 py-2 px-4 rounded-lg">
<i class="fas fa-snowflake mr-2"></i> Snowball Method
</button>
<button class="flex-1 bg-green-100 hover:bg-green-200 text-green-800 py-2 px-4 rounded-lg">
<i class="fas fa-mountain mr-2"></i> Avalanche Method
</button>
<button class="flex-1 bg-purple-100 hover:bg-purple-200 text-purple-800 py-2 px-4 rounded-lg">
<i class="fas fa-calculator mr-2"></i> Compare Strategies
</button>
</div>
</div>
</div>
<!-- Investments Tab -->
<div class="tab-content" id="investments-tab">
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-6">
<!-- Portfolio Overview -->
<div class="bg-white rounded-xl shadow-md p-6">
<h3 class="text-lg font-bold text-gray-800 mb-4">Portfolio Overview</h3>
<div class="h-64 mb-4">
<canvas id="allocationChart"></canvas>
</div>
<div class="grid grid-cols-2 gap-2">
<div class="bg-blue-50 p-3 rounded-lg">
<div class="text-sm text-blue-800">Total Invested</div>
<div class="font-bold">$425,000</div>
</div>
<div class="bg-green-50 p-3 rounded-lg">
<div class="text-sm text-green-800">YTD Return</div>
<div class="font-bold">8.2%</div>
</div>
<div class="bg-purple-50 p-3 rounded-lg">
<div class="text-sm text-purple-800">Dividends</div>
<div class="font-bold">$3,200/yr</div>
</div>
<div class="bg-yellow-50 p-3 rounded-lg">
<div class="text-sm text-yellow-800">Expense Ratio</div>
<div class="font-bold">0.12%</div>
</div>
</div>
</div>
<!-- Performance -->
<div class="bg-white rounded-xl shadow-md p-6">
<h3 class="text-lg font-bold text-gray-800 mb-4">Investment Performance</h3>
<div class="h-64 mb-4">
<canvas id="performanceChart"></canvas>
</div>
<div class="overflow-x-auto">
<table class="w-full text-sm text-left text-gray-500">
<thead class="text-xs text-gray-700 uppercase bg-gray-50">
<tr>
<th class="px-6 py-3">Period</th>
<th class="px-6 py-3">Your Return</th>
<th class="px-6 py-3">S&P 500</th>
<th class="px-6 py-3">Difference</th>
</tr>
</thead>
<tbody>
<tr class="bg-white border-b">
<td class="px-6 py-4">YTD</td>
<td class="px-6 py-4">8.2%</td>
<td class="px-6 py-4">9.5%</td>
<td class="px-6 py-4 text-red-500">-1.3%</td>
</tr>
<tr class="bg-white border-b">
<td class="px-6 py-4">1 Year</td>
<td class="px-6 py-4">12.1%</td>
<td class="px-6 py-4">14.2%</td>
<td class="px-6 py-4 text-red-500">-2.1%</td>
</tr>
<tr class="bg-white border-b">
<td class="px-6 py-4">3 Year</td>
<td class="px-6 py-4">7.8%</td>
<td class="px-6 py-4">8.3%</td>
<td class="px-6 py-4 text-red-500">-0.5%</td>
</tr>
<tr class="bg-white border-b">
<td class="px-6 py-4">5 Year</td>
<td class="px-6 py-4">9.2%</td>
<td class="px-6 py-4">9.7%</td>
<td class="px-6 py-4 text-red-500">-0.5%</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- Tax Optimization -->
<div class="bg-white rounded-xl shadow-md p-6 mb-6">
<h3 class="text-lg font-bold text-gray-800 mb-4">Tax Optimization</h3>
<div class="grid grid-cols-1 md:grid-cols-3 gap-4 mb-6">
<div class="bg-blue-50 p-4 rounded-lg">
<div class="flex justify-between items-start mb-2">
<div class="font-medium">401(k) Contributions</div>
<span class="bg-blue-100 text-blue-800 text-xs px-2 py-0.5 rounded-full">$12,500</span>
</div>
<div class="text-sm text-gray-600 mb-2">$20,500 limit for 2023</div>
<div class="w-full bg-gray-200 rounded-full h-2">
<div class="bg-blue-600 h-2 rounded-full" style="width: 61%"></div>
</div>
</div>
<div class="bg-green-50 p-4 rounded-lg">
<div class="flex justify-between items-start mb-2">
<div class="font-medium">Roth IRA Contributions</div>
<span class="bg-green-100 text-green-800 text-xs px-2 py-0.5 rounded-full">$3,000</span>
</div>
<div class="text-sm text-gray-600 mb-2">$6,500 limit for 2023</div>
<div class="w-full bg-gray-200 rounded-full h-2">
<div class="bg-green-600 h-2 rounded-full" style="width: 46%"></div>
</div>
</div>
<div class="bg-purple-50 p-4 rounded-lg">
<div class="flex justify-between items-start mb-2">
<div class="font-medium">HSA Contributions</div>
<span class="bg-purple-100 text-purple-800 text-xs px-2 py-0.5 rounded-full">$1,200</span>
</div>
<div class="text-sm text-gray-600 mb-2">$3,650 limit for 2023</div>
<div class="w-full bg-gray-200 rounded-full h-2">
<div class="bg-purple-600 h-2 rounded-full" style="width: 33%"></div>
</div>
</div>
</div>
<div class="flex flex-col md:flex-row space-y-2 md:space-y-0 md:space-x-2">
<button class="flex-1 bg-blue-600 hover:bg-blue-700 text-white py-2 px-4 rounded-lg">
<i class="fas fa-search-dollar mr-2"></i> Tax-Loss Harvesting
</button>
<button class="flex-1 bg-green-600 hover:bg-green-700 text-white py-2 px-4 rounded-lg">
<i class="fas fa-balance-scale mr-2"></i> Roth vs Traditional
</button>
<button class="flex-1 bg-purple-600 hover:bg-purple-700 text-white py-2 px-4 rounded-lg">
<i class="fas fa-project-diagram mr-2"></i> Withdrawal Strategy
</button>
</div>
</div>
</div>
<!-- Retirement Tab -->
<div class="tab-content" id="retirement-tab">
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-6">
<!-- FI Number Calculator -->
<div class="bg-white rounded-xl shadow-md p-6">
<h3 class="text-lg font-bold text-gray-800 mb-4">FI Number Calculator</h3>
<div class="mb-4">
<label class="block text-sm font-medium text-gray-700 mb-1">Annual Retirement Spending</label>
<div class="relative">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<span class="text-gray-500">$</span>
</div>
<input type="number" class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full pl-7 p-2.5" value="40000">
</div>
</div>
<div class="mb-4">
<label class="block text-sm font-medium text-gray-700 mb-1">Safe Withdrawal Rate</label>
<select class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5">
<option selected>4% (Traditional)</option>
<option>3.5% (Conservative)</option>
<option>3% (Very Conservative)</option>
<option>5% (Aggressive)</option>
</select>
</div>
<div class="bg-blue-50 p-4 rounded-lg mb-4">
<div class="text-sm text-blue-800 mb-1">Your FI Number</div>
<div class="text-2xl font-bold">$1,000,000</div>
<div class="text-xs text-blue-700">Based on $40k spending at 4% SWR</div>
</div>
<button class="w-full bg-blue-600 hover:bg-blue-700 text-white py-2 px-4 rounded-lg">
<i class="fas fa-calculator mr-2"></i> Recalculate
</button>
</div>
<!-- SWR Modeler -->
<div class="bg-white rounded-xl shadow-md p-6">
<h3 class="text-lg font-bold text-gray-800 mb-4">Safe Withdrawal Rate Modeler</h3>
<div class="h-64 mb-4">
<canvas id="swrChart"></canvas>
</div>
<div class="grid grid-cols-2 gap-2">
<div class="bg-green-50 p-3 rounded-lg">
<div class="text-sm text-green-800">4% SWR Success</div>
<div class="font-bold">95%</div>
<div class="text-xs">Historical 30-year periods</div>
</div>
<div class="bg-yellow-50 p-3 rounded-lg">
<div class="text-sm text-yellow-800">3.5% SWR Success</div>
<div class="font-bold">98%</div>
<div class="text-xs">Historical 30-year periods</div>
</div>
<div class="bg-blue-50 p-3 rounded-lg">
<div class="text-sm text-blue-800">Your Current SWR</div>
<div class="font-bold">3.8%</div>
<div class="text-xs">$40k / $1.05M</div>
</div>
<div class="bg-purple-50 p-3 rounded-lg">
<div class="text-sm text-purple-800">Variable SWR</div>
<div class="font-bold">3-5%</div>
<div class="text-xs">Flexible spending</div>
</div>
</div>
</div>
</div>
<!-- Healthcare & One More Year -->
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-6">
<!-- Healthcare Estimator -->
<div class="bg-white rounded-xl shadow-md p-6">
<h3 class="text-lg font-bold text-gray-800 mb-4">Healthcare Cost Estimator</h3>
<div class="mb-4">
<label class="block text-sm font-medium text-gray-700 mb-1">Retirement Age</label>
<select class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5">
<option selected>50</option>
<option>55</option>
<option>60</option>
<option>65</option>
</select>
</div>
<div class="bg-red-50 p-4 rounded-lg mb-4">
<div class="text-sm text-red-800 mb-1">Estimated Annual Cost</div>
<div class="text-2xl font-bold">$8,400 - $12,000</div>
<div class="text-xs text-red-700">ACA Marketplace Plan (Silver)</div>
</div>
<div class="bg-green-50 p-4 rounded-lg">
<div class="text-sm text-green-800 mb-1">HSA Balance</div>
<div class="text-2xl font-bold">$18,500</div>
<div class="text-xs text-green-700">$3,650 annual contribution limit</div>
</div>
</div>
<!-- One More Year -->
<div class="bg-white rounded-xl shadow-md p-6">
<h3 class="text-lg font-bold text-gray-800 mb-4">"One More Year" Syndrome Analyzer</h3>
<div class="mb-4">
<label class="block text-sm font-medium text-gray-700 mb-1">Additional Years Worked</label>
<input type="range" min="1" max="5" value="1" class="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer">
<div class="flex justify-between text-xs text-gray-500">
<span>1 year</span>
<span>2 years</span>
<span>3 years</span>
<span>4 years</span>
<span>5 years</span>
</div>
</div>
<div class="bg-blue-50 p-4 rounded-lg mb-4">
<div class="text-sm text-blue-800 mb-1">Portfolio Growth</div>
<div class="text-2xl font-bold">+$84,000</div>
<div class="text-xs text-blue-700">7% annual growth + contributions</div>
</div>
<div class="bg-purple-50 p-4 rounded-lg">
<div class="text-sm text-purple-800 mb-1">SWR Improvement</div>
<div class="text-2xl font-bold">3.5% → 3.2%</div>
<div class="text-xs text-purple-700">Increased safety margin</div>
</div>
</div>
</div>
</div>
<!-- Automation Tab -->
<div class="tab-content" id="automation-tab">
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-6">
<!-- Automation Status -->
<div class="bg-white rounded-xl shadow-md p-6">
<h3 class="text-lg font-bold text-gray-800 mb-4">Automation Status</h3>
<div class="mb-6">
<div class="flex items-center justify-between mb-2">
<span class="font-medium">Automation Score</span>
<span class="bg-green-100 text-green-800 text-xs font-medium px-2.5 py-0.5 rounded-full">85/100</span>
</div>
<div class="w-full bg-gray-200 rounded-full h-2.5">
<div class="bg-green-500 h-2.5 rounded-full" style="width: 85%"></div>
</div>
<p class="text-sm text-gray-600 mt-2">You're doing great! Just a few more automations to reach "set and forget" status.</p>
</div>
<div class="space-y-4">
<div class="flex items-center">
<div class="w-10 h-10 rounded-full bg-green-100 flex items-center justify-center mr-3">
<i class="fas fa-check text-green-600"></i>
</div>
<div>
<div class="font-medium">Paycheck Savings</div>
<div class="text-sm text-gray-600">Automated transfers to investment accounts</div>
</div>
</div>
<div class="flex items-center">
<div class="w-10 h-10 rounded-full bg-green-100 flex items-center justify-center mr-3">
<i class="fas fa-check text-green-600"></i>
</div>
<div>
<div class="font-medium">Bill Payments</div>
<div class="text-sm text-gray-600">All recurring bills on autopay</div>
</div>
</div>
<div class="flex items-center">
<div class="w-10 h-10 rounded-full bg-yellow-100 flex items-center justify-center mr-3">
<i class="fas fa-exclamation text-yellow-600"></i>
</div>
<div>
<div class="font-medium">Rebalancing</div>
<div class="text-sm text-gray-600">Semi-automated - needs annual review</div>
</div>
</div>
<div class="flex items-center">
<div class="w-10 h-10 rounded-full bg-red-100 flex items-center justify-center mr-3">
<i class="fas fa-times text-red-600"></i>
</div>
<div>
<div class="font-medium">Tax Optimization</div>
<div class="text-sm text-gray-600">Manual process - consider automation</div>
</div>
</div>
</div>
</div>
<!-- Behavioral Nudges -->
<div class="bg-white rounded-xl shadow-md p-6">
<h3 class="text-lg font-bold text-gray-800 mb-4">Behavioral Nudges</h3>
<div class="mb-6">
<div class="flex items-center justify-between mb-2">
<span class="font-medium">Consistency Streak</span>
<span class="bg-blue-100 text-blue-800 text-xs font-medium px-2.5 py-0.5 rounded-full">18 months</span>
</div>
<div class="w-full bg-gray-200 rounded-full h-2.5">
<div class="bg-blue-500 h-2.5 rounded-full" style="width: 75%"></div>
</div>
<p class="text-sm text-gray-600 mt-2">Longest streak: 24 months. You're getting close!</p>
</div>
<div class="grid grid-cols-2 gap-2 mb-4">
<div class="bg-blue-50 p-3 rounded-lg text-center">
<div class="text-sm text-blue-800">Badges Earned</div>
<div class="text-2xl font-bold">12</div>
</div>
<div class="bg-purple-50 p-3 rounded-lg text-center">
<div class="text-sm text-purple-800">Current Level</div>
<div class="text-2xl font-bold">Gold</div>
</div>
</div>
<div class="flex flex-wrap gap-2">
<span class="bg-yellow-100 text-yellow-800 text-xs font-medium px-2.5 py-0.5 rounded-full flex items-center">
<i class="fas fa-medal mr-1"></i> Saver
</span>
<span class="bg-green-100 text-green-800 text-xs font-medium px-2.5 py-0.5 rounded-full flex items-center">
<i class="fas fa-bolt mr-1"></i> Fast Starter
</span>
<span class="bg-blue-100 text-blue-800 text-xs font-medium px-2.5 py-0.5 rounded-full flex items-center">
<i class="fas fa-robot mr-1"></i> Automator
</span>
<span class="bg-purple-100 text-purple-800 text-xs font-medium px-2.5 py-0.5 rounded-full flex items-center">
<i class="fas fa-chart-line mr-1"></i> Growth Seeker
</span>
</div>
</div>
</div>
<!-- Knowledge Base -->
<div class="bg-white rounded-xl shadow-md p-6 mb-6">
<h3 class="text-lg font-bold text-gray-800 mb-4">Knowledge Base</h3>
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
<div class="flip-card cursor-pointer h-48">
<div class="flip-card-inner h-full">
<div class="flip-card-front bg-blue-50 rounded-lg p-4 flex flex-col h-full">
<div class="bg-blue-100 text-blue-800 w-10 h-10 rounded-full flex items-center justify-center mb-3">
<i class="fas fa-book"></i>
</div>
<h4 class="font-bold text-blue-800 mb-2">The Automatic Millionaire</h4>
<p class="text-sm text-gray-600 flex-grow">Key takeaways: Pay yourself first, make it automatic, own your home...</p>
<div class="text-xs text-blue-600 mt-2">Click to flip for summary</div>
</div>
<div class="flip-card-back bg-blue-100 rounded-lg p-4 h-full">
<h4 class="font-bold text-blue-800 mb-2">Key Principles</h4>
<ul class="text-sm space-y-1 list-disc list-inside">
<li>Automate your savings and investments</li>
<li>Own your home outright</li>
<li>Pay yourself first (10-15% of income)</li>
<li>Automatic 401(k) contributions</li>
</ul>
<div class="text-xs text-blue-600 mt-2">Click to return</div>
</div>
</div>
</div>
<div class="flip-card cursor-pointer h-48">
<div class="flip-card-inner h-full">
<div class="flip-card-front bg-green-50 rounded-lg p-4 flex flex-col h-full">
<div class="bg-green-100 text-green-800 w-10 h-10 rounded-full flex items-center justify-center mb-3">
<i class="fas fa-video"></i>
</div>
<h4 class="font-bold text-green-800 mb-2">The Shockingly Simple Math</h4>
<p class="text-sm text-gray-600 flex-grow">Mr. Money Mustache's famous post on savings rate vs. time to retirement...</p>
<div class="text-xs text-green-600 mt-2">Click to flip for chart</div>
</div>
<div class="flip-card-back bg-green-100 rounded-lg p-4 h-full">
<h4 class="font-bold text-green-800 mb-1">Savings Rate vs. Years to FI</h4>
<div class="text-xs mb-1">10% → 51 years</div>
<div class="text-xs mb-1">30% → 28 years</div>
<div class="text-xs mb-1">50% → 17 years</div>
<div class="text-xs mb-1">70% → 8.5 years</div>
<div class="text-xs">90% → <3 years</div>
<div class="text-xs text-green-600 mt-2">Click to return</div>
</div>
</div>
</div>
<div class="flip-card cursor-pointer h-48">
<div class="flip-card-inner h-full">
<div class="flip-card-front bg-purple-50 rounded-lg p-4 flex flex-col h-full">
<div class="bg-purple-100 text-purple-800 w-10 h-10 rounded-full flex items-center justify-center mb-3">
<i class="fas fa-link"></i>
</div>
<h4 class="font-bold text-purple-800 mb-2">FIRE Resources</h4>
<p class="text-sm text-gray-600 flex-grow">Curated list of blogs, forums, calculators and communities to help your journey...</p>
<div class="text-xs text-purple-600 mt-2">Click to flip for links</div>
</div>
<div class="flip-card-back bg-purple-100 rounded-lg p-4 h-full">
<h4 class="font-bold text-purple-800 mb-2">Top Resources</h4>
<ul class="text-sm space-y-1">
<li><a href="#" class="hover:underline">Mr. Money Mustache</a></li>
<li><a href="#" class="hover:underline">Early Retirement Now</a></li>
<li><a href="#" class="hover:underline">Bogleheads Forum</a></li>
<li><a href="#" class="hover:underline">FIRE Calculator</a></li>
</ul>
<div class="text-xs text-purple-600 mt-2">Click to return</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Net Worth Trend -->
<section class="bg-white rounded-xl shadow-md p-6 mb-6">
<h2 class="text-xl font-bold text-gray-800 mb-4">Net Worth Trend</h2>
<div class="h-80">
<canvas id="netWorthChart"></canvas>
</div>
<div class="grid grid-cols-2 md:grid-cols-4 gap-4 mt-4">
<div class="bg-blue-50 p-3 rounded-lg">
<div class="text-sm text-blue-800">Current Net Worth</div>
<div class="font-bold">$512,000</div>
</div>
<div class="bg-green-50 p-3 rounded-lg">
<div class="text-sm text-green-800">YTD Change</div>
<div class="font-bold text-green-600">+$42,500</div>
</div>
<div class="bg-purple-50 p-3 rounded-lg">
<div class="text-sm text-purple-800">1 Year Growth</div>
<div class="font-bold text-purple-600">+$85,200</div>
</div>
<div class="bg-yellow-50 p-3 rounded-lg">
<div class="text-sm text-yellow-800">5 Year Growth</div>
<div class="font-bold text-yellow-600">+$312,000</div>
</div>
</div>
</section>
<!-- Footer -->
<footer class="bg-gray-800 text-white rounded-xl shadow-md p-6">
<div class="flex flex-col md:flex-row justify-between items-center">
<div class="mb-4 md:mb-0">
<div class="flex items-center">
<div class="bg-blue-500 text-white p-2 rounded-lg mr-2">
<i class="fas fa-rocket"></i>
</div>
<span class="font-bold">FIRE Mission Control</span>
</div>
<p class="text-sm text-gray-400 mt-1">Your dashboard to financial independence</p>
</div>
<div class="flex space-x-4">
<a href="#" class="text-gray-400 hover:text-white">
<i class="fab fa-twitter"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white">
<i class="fab fa-github"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white">
<i class="fab fa-discord"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white">
<i class="fab fa-reddit"></i>
</a>
</div>
</div>
<div class="border-t border-gray-700 mt-6 pt-6 text-sm text-gray-400">
<div class="flex flex-col md:flex-row justify-between">
<div class="mb-4 md:mb-0">
© 2023 FIRE Mission Control. All rights reserved.
</div>
<div class="flex flex-col md:flex-row space-y-2 md:space-y-0 md:space-x-4">
<a href="#" class="hover:text-white">Privacy Policy</a>
<a href="#" class="hover:text-white">Terms of Service</a>
<a href="#" class="hover:text-white">Contact Us</a>
</div>
</div>
<div class="mt-4 text-xs">
Disclaimer: This dashboard is for informational purposes only and should not be considered financial advice. Please consult with a qualified professional for financial advice.
</div>
</div>
</footer>
</div>
<script>
// Set current date
const now = new Date();
const options = { year: 'numeric', month: 'long', day: 'numeric' };
document.getElementById('current-date').textContent = now.toLocaleDateString('en-US', options);
// Tab functionality
const tabs = document.querySelectorAll('[data-tab]');
tabs.forEach(tab => {
tab.addEventListener('click', () => {
// Remove active class from all tabs and content
document.querySelectorAll('[data-tab]').forEach(t => {
t.classList.remove('border-blue-600', 'text-blue-600');
t.classList.add('border-transparent', 'hover:text-gray-600', 'hover:border-gray-300');
});
document.querySelectorAll('.tab-content').forEach(c => {
c.classList.remove('active');
});
// Add active class to clicked tab and corresponding content
tab.classList.remove('border-transparent', 'hover:text-gray-600', 'hover:border-gray-300');
tab.classList.add('border-blue-600', 'text-blue-600');
const tabId = tab.getAttribute('data-tab');
document.getElementById(`${tabId}-tab`).classList.add('active');
});
});
// Charts
// Spending Chart
const spendingCtx = document.getElementById('spendingChart').getContext('2d');
const spendingChart = new Chart(spendingCtx, {
type: 'doughnut',
data: {
labels: ['Housing', 'Transportation', 'Food', 'Utilities', 'Entertainment', 'Healthcare', 'Other'],
datasets: [{
data: [1500, 450, 600, 200, 300, 150, 400],
backgroundColor: [
'#3b82f6',
'#10b981',
'#f59e0b',
'#6366f1',
'#ec4899',
'#ef4444',
'#6b7280'
],
borderWidth: 1
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: {
position: 'right',
}
}
}
});
// Allocation Chart
const allocationCtx = document.getElementById('allocationChart').getContext('2d');
const allocationChart = new Chart(allocationCtx, {
type: 'pie',
data: {
labels: ['US Stocks', 'International Stocks', 'Bonds', 'Real Estate', 'Cash'],
datasets: [{
data: [55, 25, 10, 5, 5],
backgroundColor: [
'#3b82f6',
'#10b981',
'#f59e0b',
'#6366f1',
'#6b7280'
],
borderWidth: 1
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: {
position: 'right',
}
}
}
});
// Performance Chart
const performanceCtx = document.getElementById('performanceChart').getContext('2d');
const performanceChart = new Chart(performanceCtx, {
type: 'line',
data: {
labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
datasets: [
{
label: 'Your Portfolio',
data: [400, 410, 415, 420, 425, 430, 420, 425, 430, 435, 440, 445],
borderColor: '#3b82f6',
backgroundColor: 'rgba(59, 130, 246, 0.1)',
tension: 0.4,
fill: true
},
{
label: 'S&P 500',
data: [400, 405, 410, 415, 420, 425, 415, 420, 425, 430, 435, 440],
borderColor: '#10b981',
backgroundColor: 'rgba(16, 185, 129, 0.1)',
tension: 0.4,
fill: true
}
]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: {
position: 'top',
}
},
scales: {
y: {
beginAtZero: false
}
}
}
});
// SWR Chart
const swrCtx = document.getElementById('swrChart').getContext('2d');
const swrChart = new Chart(swrCtx, {
type: 'bar',
data: {
labels: ['3%', '3.5%', '4%', '4.5%', '5%'],
datasets: [{
label: 'Success Rate',
data: [99, 98, 95, 85, 70],
backgroundColor: [
'#10b981',
'#10b981',
'#f59e0b',
'#ef4444',
'#ef4444'
],
borderWidth: 1
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: {
display: false
}
},
scales: {
y: {
beginAtZero: true,
max: 100,
title: {
display: true,
text: 'Success Rate (%)'
}
}
}
}
});
// Net Worth Chart
const netWorthCtx = document.getElementById('netWorthChart').getContext('2d');
const netWorthChart = new Chart(netWorthCtx, {
type: 'line',
data: {
labels: ['2018', '2019', '2020', '2021', '2022', '2023'],
datasets: [{
label: 'Net Worth',
data: [200, 250, 300, 380, 425, 512],
borderColor: '#3b82f6',
backgroundColor: 'rgba(59, 130, 246, 0.1)',
tension: 0.4,
fill: true
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: {
display: false
},
tooltip: {
callbacks: {
label: function(context) {
return '$' + context.parsed.y + 'k';
}
}
}
},
scales: {
y: {
beginAtZero: true,
ticks: {
callback: function(value) {
return '$' + value + 'k';
}
}
}
}
}
});
// Flip cards
document.querySelectorAll('.flip-card').forEach(card => {
card.addEventListener('click', function() {
this.querySelector('.flip-card-inner').classList.toggle('rotate-y-180');
});
});
</script>
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=LukasBe/fire-mission-control" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>