diff --git a/src/dashboard/app.py b/src/dashboard/app.py index b4f29315..885d6283 100644 --- a/src/dashboard/app.py +++ b/src/dashboard/app.py @@ -762,7 +762,13 @@ async def swarm_agents_sidebar(): @app.get("/", response_class=HTMLResponse) async def root(request: Request): - """Serve the main dashboard page.""" + """Serve the public landing page (homepage value proposition).""" + return templates.TemplateResponse(request, "landing.html", {}) + + +@app.get("/dashboard", response_class=HTMLResponse) +async def dashboard(request: Request): + """Serve the main mission-control dashboard.""" return templates.TemplateResponse(request, "index.html", {}) diff --git a/src/dashboard/templates/base.html b/src/dashboard/templates/base.html index 19cc2e0a..be3fa272 100644 --- a/src/dashboard/templates/base.html +++ b/src/dashboard/templates/base.html @@ -127,7 +127,7 @@
- MISSION CONTROL + MISSION CONTROL MISSION CONTROL @@ -138,6 +138,7 @@
HOME + DASHBOARD
@@ -221,6 +222,7 @@
HOME + DASHBOARD CALM TASKS diff --git a/src/dashboard/templates/landing.html b/src/dashboard/templates/landing.html new file mode 100644 index 00000000..eb010fec --- /dev/null +++ b/src/dashboard/templates/landing.html @@ -0,0 +1,207 @@ +{% extends "base.html" %} + +{% block title %}Timmy AI Workshop | Lightning-Powered AI Jobs — Pay Per Task with Bitcoin{% endblock %} +{% block meta_description %}Pay sats, get AI work done. No subscription. No signup. Instant global access. Timmy AI Workshop — Lightning-powered agents by Alexander Whitestone.{% endblock %} + +{% block content %} +
+ + +
+
LIGHTNING-POWERED AI WORKSHOP
+

Hire Timmy,
the AI that takes Bitcoin.

+

+ Pay sats, get AI work done.
+ No subscription. No signup. Instant global access. +

+ +
+ + AI tasks from 200 sats — no account, no waiting +
+
+ + +
+
+
+ +

Instant Settlement

+

Jobs complete in seconds. Pay over Bitcoin Lightning — no credit card, no banking required.

+
+
+ 🔒 +

Sovereign & Private

+

All inference runs locally. No cloud round-trips. Your prompts never leave the workshop.

+
+
+ 🌐 +

Global Access

+

Anyone with a Lightning wallet can hire Timmy. No KYC. No geo-blocks. Pure open access.

+
+
+ 💰 +

Pay Per Task

+

Zero subscription. Pay only for what you use, priced in sats. Start from 200 sats per job.

+
+
+
+ + +
+

What Timmy Can Do

+

Four core capability domains — each backed by sovereign local inference.

+ +
+ +
+ + 💻 + Code + + +
+

Generate, review, refactor, and debug code across any language. Timmy can write tests, explain legacy systems, and auto-fix issues through self-correction loops.

+
    +
  • Code generation & refactoring
  • +
  • Automated test writing
  • +
  • Bug diagnosis & self-correction
  • +
  • Architecture review & documentation
  • +
+
+
+ +
+ + 🔍 + Research + + +
+

Deep-dive research on any topic. Synthesise sources, extract key insights, produce structured reports — all without leaving the workshop.

+
    +
  • Topic deep-dives & literature synthesis
  • +
  • Competitive & market intelligence
  • +
  • Structured report generation
  • +
  • Source extraction & citation
  • +
+
+
+ +
+ + + Creative + + +
+

Copywriting, ideation, storytelling, brand voice — Timmy brings creative horsepower on demand, priced to the job.

+
    +
  • Marketing copy & brand messaging
  • +
  • Long-form content & articles
  • +
  • Naming, taglines & ideation
  • +
  • Script & narrative writing
  • +
+
+
+ +
+ + 📊 + Analysis + + +
+

Data interpretation, strategic analysis, financial modelling, and executive briefings — structured intelligence from raw inputs.

+
    +
  • Data interpretation & visualisation briefs
  • +
  • Strategic frameworks & SWOT
  • +
  • Financial modelling support
  • +
  • Executive summaries & board decks
  • +
+
+
+ +
+
+ + +
+

Built on Sovereign Infrastructure

+
+
+
+
JOBS COMPLETED
+
+
+
+
SATS SETTLED
+
+
+
+
AGENTS ONLINE
+
+
+
+
UPTIME
+
+
+
+ + +
+

Choose Your Path

+
+ +
+
🧑‍💻
+

Developers

+

Integrate Timmy into your stack. REST API, WebSocket streams, and Lightning payment hooks — all documented.

+ API DOCS → +
+ + + +
+
📈
+

Investors & Partners

+

Lightning-native AI marketplace. Sovereign infrastructure, global reach, pay-per-task economics.

+ VIEW LEDGER → +
+ +
+
+ + +
+

Ready to hire Timmy?

+

+ Timmy AI Workshop — Lightning-Powered Agents by Alexander Whitestone +

+ ENTER THE WORKSHOP → +
+ +
+{% endblock %} diff --git a/static/css/mission-control.css b/static/css/mission-control.css index 92140f88..0745bdb8 100644 --- a/static/css/mission-control.css +++ b/static/css/mission-control.css @@ -3075,3 +3075,347 @@ padding: 0.4rem 0.5rem; } } + + +/* ── Landing page (homepage value proposition) ────────────────── */ + +.lp-wrap { + max-width: 960px; + margin: 0 auto; + padding: 0 1.5rem 4rem; +} + +/* Hero */ +.lp-hero { + text-align: center; + padding: 4rem 0 3rem; +} +.lp-hero-eyebrow { + font-size: 10px; + font-weight: 700; + letter-spacing: 0.18em; + color: var(--purple); + margin-bottom: 1.25rem; +} +.lp-hero-title { + font-size: clamp(2rem, 6vw, 3.5rem); + font-weight: 700; + line-height: 1.1; + color: var(--text-bright); + margin-bottom: 1.25rem; + letter-spacing: -0.02em; +} +.lp-hero-sub { + font-size: 1.1rem; + color: var(--text); + line-height: 1.7; + max-width: 480px; + margin: 0 auto 2rem; +} +.lp-hero-cta-row { + display: flex; + flex-wrap: wrap; + gap: 0.75rem; + justify-content: center; + margin-bottom: 1.5rem; +} +.lp-hero-badge { + display: inline-flex; + align-items: center; + gap: 8px; + font-size: 11px; + letter-spacing: 0.06em; + color: var(--text-dim); + border: 1px solid var(--border); + border-radius: 999px; + padding: 5px 14px; +} +.lp-badge-dot { + width: 7px; + height: 7px; + border-radius: 50%; + background: var(--green); + box-shadow: 0 0 6px var(--green); + animation: lp-pulse 2s infinite; + flex-shrink: 0; +} +@keyframes lp-pulse { + 0%, 100% { opacity: 1; } + 50% { opacity: 0.35; } +} + +/* Shared buttons */ +.lp-btn { + display: inline-block; + font-family: var(--font); + font-size: 11px; + font-weight: 700; + letter-spacing: 0.12em; + border-radius: var(--radius-sm); + padding: 10px 22px; + text-decoration: none; + transition: background 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s; + cursor: pointer; +} +.lp-btn-primary { + background: var(--purple); + color: #fff; + border: 1px solid var(--purple); +} +.lp-btn-primary:hover { + background: #a855f7; + border-color: #a855f7; + box-shadow: 0 0 14px rgba(168, 85, 247, 0.45); + color: #fff; +} +.lp-btn-secondary { + background: transparent; + color: var(--text-bright); + border: 1px solid var(--border); +} +.lp-btn-secondary:hover { + border-color: var(--purple); + color: var(--purple); +} +.lp-btn-ghost { + background: transparent; + color: var(--text-dim); + border: 1px solid transparent; +} +.lp-btn-ghost:hover { + color: var(--text); + border-color: var(--border); +} +.lp-btn-sm { + font-size: 10px; + padding: 8px 16px; +} +.lp-btn-lg { + font-size: 13px; + padding: 14px 32px; +} + +/* Shared section */ +.lp-section { + padding: 3.5rem 0; + border-top: 1px solid var(--border); +} +.lp-section-title { + font-size: 1.35rem; + font-weight: 700; + color: var(--text-bright); + letter-spacing: -0.01em; + margin-bottom: 0.5rem; +} +.lp-section-sub { + color: var(--text-dim); + font-size: 0.9rem; + margin-bottom: 2.5rem; +} + +/* Value cards */ +.lp-value-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 1.25rem; +} +.lp-value-card { + background: var(--bg-panel); + border: 1px solid var(--border); + border-radius: var(--radius-md); + padding: 1.5rem 1.25rem; +} +.lp-value-icon { + font-size: 1.6rem; + display: block; + margin-bottom: 0.75rem; +} +.lp-value-card h3 { + font-size: 0.9rem; + font-weight: 700; + color: var(--text-bright); + letter-spacing: 0.05em; + margin-bottom: 0.5rem; + text-transform: uppercase; +} +.lp-value-card p { + font-size: 0.85rem; + color: var(--text); + line-height: 1.6; + margin: 0; +} + +/* Capability accordion */ +.lp-caps-list { + display: flex; + flex-direction: column; + gap: 0.5rem; +} +.lp-cap-item { + background: var(--bg-panel); + border: 1px solid var(--border); + border-radius: var(--radius-md); + overflow: hidden; + transition: border-color 0.2s; +} +.lp-cap-item[open] { + border-color: var(--purple); +} +.lp-cap-summary { + display: flex; + align-items: center; + gap: 1rem; + padding: 1rem 1.25rem; + cursor: pointer; + list-style: none; + user-select: none; +} +.lp-cap-summary::-webkit-details-marker { display: none; } +.lp-cap-icon { + font-size: 1.25rem; + flex-shrink: 0; +} +.lp-cap-label { + font-size: 0.9rem; + font-weight: 700; + letter-spacing: 0.06em; + color: var(--text-bright); + text-transform: uppercase; + flex: 1; +} +.lp-cap-chevron { + font-size: 0.7rem; + color: var(--text-dim); + transition: transform 0.2s; +} +.lp-cap-item[open] .lp-cap-chevron { + transform: rotate(180deg); +} +.lp-cap-body { + padding: 0 1.25rem 1.25rem; + border-top: 1px solid var(--border); +} +.lp-cap-body p { + font-size: 0.875rem; + color: var(--text); + line-height: 1.65; + margin: 0.875rem 0 0.75rem; +} +.lp-cap-bullets { + margin: 0; + padding-left: 1.1rem; + font-size: 0.8rem; + color: var(--text-dim); + line-height: 1.8; +} + +/* Stats */ +.lp-stats-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); + gap: 1.25rem; +} +.lp-stat-card { + background: var(--bg-panel); + border: 1px solid var(--border); + border-radius: var(--radius-md); + padding: 1.5rem 1rem; + text-align: center; +} +.lp-stat-num { + font-size: 1.75rem; + font-weight: 700; + color: var(--purple); + letter-spacing: -0.03em; + line-height: 1; + margin-bottom: 0.5rem; +} +.lp-stat-label { + font-size: 9px; + font-weight: 700; + letter-spacing: 0.14em; + color: var(--text-dim); + text-transform: uppercase; +} + +/* Audience CTAs */ +.lp-audience-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); + gap: 1.25rem; +} +.lp-audience-card { + position: relative; + background: var(--bg-panel); + border: 1px solid var(--border); + border-radius: var(--radius-md); + padding: 1.75rem 1.5rem; + display: flex; + flex-direction: column; + gap: 0.75rem; +} +.lp-audience-featured { + border-color: var(--purple); + background: rgba(124, 58, 237, 0.07); +} +.lp-audience-badge { + position: absolute; + top: -10px; + left: 50%; + transform: translateX(-50%); + background: var(--purple); + color: #fff; + font-size: 8px; + font-weight: 700; + letter-spacing: 0.14em; + padding: 3px 10px; + border-radius: 999px; + white-space: nowrap; +} +.lp-audience-icon { + font-size: 1.75rem; +} +.lp-audience-card h3 { + font-size: 0.95rem; + font-weight: 700; + color: var(--text-bright); + letter-spacing: 0.04em; + text-transform: uppercase; + margin: 0; +} +.lp-audience-card p { + font-size: 0.85rem; + color: var(--text); + line-height: 1.65; + margin: 0; + flex: 1; +} + +/* Final CTA */ +.lp-final-cta { + text-align: center; + border-top: 1px solid var(--border); + padding: 4rem 0 2rem; +} +.lp-final-cta-title { + font-size: clamp(1.5rem, 4vw, 2.5rem); + font-weight: 700; + color: var(--text-bright); + margin-bottom: 0.75rem; + letter-spacing: -0.02em; +} +.lp-final-cta-sub { + color: var(--text-dim); + font-size: 0.875rem; + letter-spacing: 0.04em; + margin-bottom: 2rem; +} + +/* Responsive */ +@media (max-width: 600px) { + .lp-hero { padding: 2.5rem 0 2rem; } + .lp-hero-cta-row { flex-direction: column; align-items: center; } + .lp-value-grid { grid-template-columns: 1fr; } + .lp-stats-grid { grid-template-columns: repeat(2, 1fr); } + .lp-audience-grid { grid-template-columns: 1fr; } +}