repos
/ finance-rust master

finance-rust

mirror archived upstream

Single-binary self-hosted market watcher for stocks, ETFs, indexes, and futures: live charts, key stats, fundamentals, SEC filings, and SSE streaming.

axumdockerfinancerustself-hostedsqlitestocksvite

5.1 KB · 98 lines · HTML Raw History
 1<!doctype html>
 2<html lang="en">
 3<head>
 4  <meta charset="utf-8">
 5  <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
 6  <title>{% block title %}{{ title }}{% endblock %} · {{ site.title }}</title>
 7  <meta name="description" content="{% block description %}Track stocks, ETFs, and indexes with live charts, fundamentals, and SEC filings.{% endblock %}">
 8  {% if base_url %}<base href="{{ base_url }}">{% endif %}
 9  <meta name="theme-color" content="#f0ece1">
10  <link rel="icon" type="image/svg+xml" href="/favicon.ico">
11  {% block extra_head %}{% endblock %}
12  <link rel="stylesheet" href="{{ vite_asset('static_src/base/index.js', 'css') }}">
13  {% block extra_css %}{% endblock %}
14</head>
15<body>
16  <header class="topbar">
17    <div class="topbar__inner">
18      <a class="brand" href="/">
19        {# Paper Ledger mark: a rising figures line over the accountant's
20           double underline (the ledger sign for a finalized total). #}
21        <svg viewBox="0 0 32 32" fill="none" aria-hidden="true">
22          <polyline points="4,20 12,14 19,17 28,7" stroke="currentColor" stroke-width="2.6" stroke-linecap="round" stroke-linejoin="round"/>
23          <circle cx="28" cy="7" r="2" fill="currentColor"/>
24          <line x1="4" y1="26" x2="28" y2="26" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
25          <line x1="4" y1="30" x2="28" y2="30" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
26        </svg>
27        <span class="brand__name">{{ site.title }}</span>
28      </a>
29      <form class="search" action="/search" method="get" role="search">
30        <input type="search" name="q" placeholder="Search ticker or company" autocomplete="off" aria-label="Search">
31      </form>
32      <nav class="topnav">
33        <a href="/"{% if request.path == '/' %} class="is-active"{% endif %}>Markets</a>
34        <a href="/search"{% if request.path == '/search' %} class="is-active"{% endif %}>Search</a>
35      </nav>
36      {% include "includes/status_indicator.html" %}
37    </div>
38  </header>
39
40  <main>
41    {% block main %}{% endblock %}
42  </main>
43
44  <nav class="bottomnav">
45    <a href="/"{% if request.path == '/' %} class="is-active"{% endif %}>
46      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M4 19V11M10 19V5M16 19v-6M21 19H3"/></svg>
47      <span>Markets</span>
48    </a>
49    <a href="/search"{% if request.path == '/search' %} class="is-active"{% endif %}>
50      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><circle cx="11" cy="11" r="7"/><path d="M21 21l-4.3-4.3"/></svg>
51      <span>Search</span>
52    </a>
53  </nav>
54
55  {# Two-tier footer (Phase 7), modeled on the sibling apps' pattern (repos'
56     `footer__grid` with `// LABEL` mono headers) but in Paper Ledger tokens: a
57     multi-column upper block over a slim copyright bar. The data attribution
58     (was the old one-line footer) folds into the About column. #}
59  <footer class="footer">
60    <div class="wrap footer__grid">
61      <div class="footer__about">
62        <div class="footer__label">// {{ site.title }}</div>
63        <p>A self-hosted market watcher for stocks, ETFs, indexes, and
64          commodities: live charts, key stats, fundamentals, SEC filings, and
65          at-a-glance health reads. For watching the market only &mdash; no
66          portfolio, no accounts.</p>
67        <p class="footer__attrib">Market data via <span>Yahoo Finance</span> ·
68          fundamentals &amp; filings via <span>SEC EDGAR</span> · prices are
69          delayed · <strong>not investment advice</strong>.</p>
70      </div>
71      <div class="footer__col">
72        <div class="footer__label">// Pages</div>
73        <ul>
74          <li><a href="/">Markets</a></li>
75          <li><a href="/search">Search</a></li>
76          <li><a href="/health">Data health</a></li>
77          <li><a href="https://github.com/overshard/finance-rust" target="_blank" rel="noopener">Source</a></li>
78        </ul>
79      </div>
80    </div>
81  </footer>
82
83  <div class="footer-bar">
84    <div class="wrap footer-bar__row">
85      <small>&copy; {{ now.year }} Isaac Bythewood · Some rights reserved</small>
86      <a href="https://github.com/overshard/finance-rust" target="_blank" rel="noopener" class="footer-bar__link" aria-label="Source on GitHub">
87        <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16" aria-hidden="true">
88          <path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"/>
89        </svg>
90      </a>
91    </div>
92  </div>
93
94  <script type="module" src="{{ vite_asset('static_src/base/index.js') }}"></script>
95  {% block extra_js %}{% endblock %}
96</body>
97</html>