Changes to wealthtrack.scroll.pub

root
root
26 days ago
Initial commit
body.html
Changed around line 1
+
+
+
+
+
+
+
+
+
+
+
+

Portfolio Dashboard

+
+
+

Total Value

+

$0.00

+
+
+

Daily Change

+

+$0.00

+
+
+
+
+

Holdings

+
+
+
+
+
+
+
+
+
+
+
+
+
+
SymbolSharesPriceValueChange
+
+
+
+
+

Add New Holding

+
+
+
+
+
+
+
+
+
+
+
+
+
    +
    +
    +
    index.scroll
    Changed around line 1
    + buildHtml
    + baseUrl https://wealthtrack.scroll.pub
    + metaTags
    + editButton /edit.html
    + title WealthTrack - Smart Portfolio Monitoring
    + style.css
    + body.html
    + script.js
    readme.scroll
    Changed around line 1
    + # wealthtrack.scroll.pub
    + Website generated by Claude from prompt: Create a website that allows me to measure my portfolio of stocks and other financial instruments.
    script.js
    Changed around line 1
    + document.addEventListener('DOMContentLoaded', () => {
    + // Mobile menu toggle
    + const mobileMenu = document.querySelector('.mobile-menu');
    + const navLinks = document.querySelector('.nav-links');
    +
    + mobileMenu.addEventListener('click', () => {
    + navLinks.classList.toggle('active');
    + });
    +
    + // Sample portfolio data
    + let portfolio = [];
    +
    + // Add holding form handler
    + const addHoldingForm = document.getElementById('add-holding-form');
    + addHoldingForm.addEventListener('submit', (e) => {
    + e.preventDefault();
    +
    + const symbol = document.getElementById('symbol').value.toUpperCase();
    + const shares = parseFloat(document.getElementById('shares').value);
    + const price = parseFloat(document.getElementById('price').value);
    +
    + addHolding(symbol, shares, price);
    + updatePortfolioDisplay();
    + addHoldingForm.reset();
    + });
    +
    + function addHolding(symbol, shares, price) {
    + const holding = {
    + symbol,
    + shares,
    + price,
    + currentPrice: price, // In a real app, this would be fetched from an API
    + value: shares * price,
    + change: 0
    + };
    +
    + portfolio.push(holding);
    + }
    +
    + function updatePortfolioDisplay() {
    + const holdingsBody = document.getElementById('holdings-body');
    + const totalValue = portfolio.reduce((sum, holding) => sum + holding.value, 0);
    + const totalChange = portfolio.reduce((sum, holding) => sum + holding.change, 0);
    +
    + // Update summary cards
    + document.querySelector('.total-value .amount').textContent =
    + formatCurrency(totalValue);
    + document.querySelector('.daily-change .amount').textContent =
    + formatCurrency(totalChange);
    +
    + // Update holdings table
    + holdingsBody.innerHTML = portfolio.map(holding => `
    +
    + ${holding.symbol}
    + ${holding.shares}
    + ${formatCurrency(holding.currentPrice)}
    + ${formatCurrency(holding.value)}
    +
    + ${formatCurrency(holding.change)}
    +
    +
    + `).join('');
    + }
    +
    + function formatCurrency(amount) {
    + return new Intl.NumberFormat('en-US', {
    + style: 'currency',
    + currency: 'USD'
    + }).format(amount);
    + }
    +
    + // Add some sample data
    + addHolding('AAPL', 10, 150.50);
    + addHolding('GOOGL', 5, 2750.25);
    + updatePortfolioDisplay();
    + });
    style.css
    Changed around line 1
    + :root {
    + --primary-color: #2c3e50;
    + --accent-color: #3498db;
    + --background-color: #f8f9fa;
    + --card-background: #ffffff;
    + --text-color: #2c3e50;
    + --success-color: #2ecc71;
    + --danger-color: #e74c3c;
    + }
    +
    + * {
    + margin: 0;
    + padding: 0;
    + box-sizing: border-box;
    + }
    +
    + body {
    + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
    + line-height: 1.6;
    + color: var(--text-color);
    + background: var(--background-color);
    + }
    +
    + .main-nav {
    + background: var(--primary-color);
    + padding: 1rem;
    + display: flex;
    + justify-content: space-between;
    + align-items: center;
    + box-shadow: 0 2px 5px rgba(0,0,0,0.1);
    + }
    +
    + .logo {
    + color: white;
    + font-size: 1.5rem;
    + font-weight: bold;
    + }
    +
    + .nav-links {
    + display: flex;
    + list-style: none;
    + gap: 2rem;
    + }
    +
    + .nav-links a {
    + color: white;
    + text-decoration: none;
    + transition: color 0.3s ease;
    + }
    +
    + .nav-links a:hover {
    + color: var(--accent-color);
    + }
    +
    + .mobile-menu {
    + display: none;
    + background: none;
    + border: none;
    + color: white;
    + font-size: 1.5rem;
    + cursor: pointer;
    + }
    +
    + .dashboard {
    + max-width: 1200px;
    + margin: 2rem auto;
    + padding: 0 1rem;
    + }
    +
    + .portfolio-summary {
    + display: grid;
    + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    + gap: 1rem;
    + margin: 2rem 0;
    + }
    +
    + .card {
    + background: var(--card-background);
    + padding: 1.5rem;
    + border-radius: 10px;
    + box-shadow: 0 4px 6px rgba(0,0,0,0.1);
    + transition: transform 0.3s ease;
    + }
    +
    + .card:hover {
    + transform: translateY(-5px);
    + }
    +
    + .card h2 {
    + font-size: 1rem;
    + color: var(--text-color);
    + margin-bottom: 0.5rem;
    + }
    +
    + .amount {
    + font-size: 2rem;
    + font-weight: bold;
    + color: var(--primary-color);
    + }
    +
    + .table-container {
    + overflow-x: auto;
    + background: var(--card-background);
    + border-radius: 10px;
    + box-shadow: 0 4px 6px rgba(0,0,0,0.1);
    + margin: 2rem 0;
    + }
    +
    + table {
    + width: 100%;
    + border-collapse: collapse;
    + }
    +
    + th, td {
    + padding: 1rem;
    + text-align: left;
    + border-bottom: 1px solid #eee;
    + }
    +
    + th {
    + background: var(--primary-color);
    + color: white;
    + }
    +
    + .add-holding {
    + background: var(--card-background);
    + padding: 2rem;
    + border-radius: 10px;
    + box-shadow: 0 4px 6px rgba(0,0,0,0.1);
    + }
    +
    + form {
    + display: grid;
    + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    + gap: 1rem;
    + margin-top: 1rem;
    + }
    +
    + input {
    + padding: 0.8rem;
    + border: 1px solid #ddd;
    + border-radius: 5px;
    + font-size: 1rem;
    + }
    +
    + button {
    + background: var(--accent-color);
    + color: white;
    + border: none;
    + padding: 0.8rem;
    + border-radius: 5px;
    + cursor: pointer;
    + transition: background 0.3s ease;
    + }
    +
    + button:hover {
    + background: #2980b9;
    + }
    +
    + footer {
    + background: var(--primary-color);
    + color: white;
    + padding: 2rem;
    + margin-top: 4rem;
    + }
    +
    + footer ul {
    + display: flex;
    + justify-content: center;
    + gap: 2rem;
    + list-style: none;
    + }
    +
    + footer a {
    + color: white;
    + text-decoration: none;
    + }
    +
    + @media (max-width: 768px) {
    + .mobile-menu {
    + display: block;
    + }
    +
    + .nav-links {
    + display: none;
    + position: absolute;
    + top: 100%;
    + left: 0;
    + right: 0;
    + background: var(--primary-color);
    + flex-direction: column;
    + padding: 1rem;
    + }
    +
    + .nav-links.active {
    + display: flex;
    + }
    +
    + .portfolio-summary {
    + grid-template-columns: 1fr;
    + }
    + }