fix(landing): update Docker build sources for BUG-080
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 11m59s

- Update public/src/index.html (Docker build source)
- Remove signup modal partial include
- Remove Free tier, add playground, update CTAs
- Update structured data
This commit is contained in:
DocFast CEO 2026-02-20 08:10:29 +00:00
parent 0295dc1dae
commit a178a1b06d
2 changed files with 29 additions and 31 deletions

View file

@ -96,12 +96,8 @@ footer .container { display: flex; align-items: center; justify-content: space-b
.modal .close { position: absolute; top: 16px; right: 20px; color: var(--muted); font-size: 1.4rem; cursor: pointer; background: none; border: none; transition: color 0.2s; } .modal .close { position: absolute; top: 16px; right: 20px; color: var(--muted); font-size: 1.4rem; cursor: pointer; background: none; border: none; transition: color 0.2s; }
.modal .close:hover { color: var(--fg); } .modal .close:hover { color: var(--fg); }
/* Signup states */ /* Playground */
#signupInitial, #signupLoading, #signupVerify, #signupResult { display: none; } #demoHtml:focus { border-color: var(--accent); outline: none; }
#signupInitial.active { display: block; }
#signupLoading.active { display: flex; flex-direction: column; align-items: center; padding: 40px 0; text-align: center; }
#signupResult.active { display: block; }
#signupVerify.active { display: block; }
.spinner { width: 36px; height: 36px; border: 3px solid var(--border); border-top-color: var(--accent); border-radius: 50%; animation: spin 0.7s linear infinite; margin-bottom: 16px; } .spinner { width: 36px; height: 36px; border: 3px solid var(--border); border-top-color: var(--accent); border-radius: 50%; animation: spin 0.7s linear infinite; margin-bottom: 16px; }
@keyframes spin { to { transform: rotate(360deg); } } @keyframes spin { to { transform: rotate(360deg); } }

View file

@ -16,10 +16,7 @@
<meta name="twitter:image" content="https://docfast.dev/og-image.png"> <meta name="twitter:image" content="https://docfast.dev/og-image.png">
<link rel="canonical" href="https://docfast.dev/"> <link rel="canonical" href="https://docfast.dev/">
<script type="application/ld+json"> <script type="application/ld+json">
{"@context":"https://schema.org","@type":"SoftwareApplication","name":"DocFast","url":"https://docfast.dev","applicationCategory":"DeveloperApplication","operatingSystem":"Web","description":"Convert HTML and Markdown to beautiful PDFs with a simple API call. Fast, reliable, developer-friendly.","offers":[{"@type":"Offer","price":"0","priceCurrency":"EUR","name":"Free","description":"100 PDFs/month"},{"@type":"Offer","price":"9","priceCurrency":"EUR","name":"Pro","description":"5,000 PDFs per month","billingIncrement":"P1M"}]} {"@context":"https://schema.org","@type":"SoftwareApplication","name":"DocFast","url":"https://docfast.dev","applicationCategory":"DeveloperApplication","operatingSystem":"Web","description":"Convert HTML and Markdown to beautiful PDFs with a simple API call. Fast, reliable, developer-friendly.","offers":[{"@type":"Offer","price":"9","priceCurrency":"EUR","name":"Pro","description":"5,000 PDFs per month","billingIncrement":"P1M"}]}
</script>
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebApplication","name":"DocFast","url":"https://docfast.dev","browserRequirements":"Requires JavaScript. Requires HTML5.","applicationCategory":"DeveloperApplication","operatingSystem":"All","offers":[{"@type":"Offer","price":"0","priceCurrency":"EUR","name":"Free Tier","description":"100 PDFs per month, all endpoints included"},{"@type":"Offer","price":"9","priceCurrency":"EUR","name":"Pro","description":"5,000 PDFs per month, priority support","billingIncrement":"P1M"}]}
</script> </script>
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>⚡</text></svg>"> <link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>⚡</text></svg>">
{{> styles_base}} {{> styles_base}}
@ -39,8 +36,8 @@
<h1>HTML to <span class="gradient">PDF</span><br>in one API call</h1> <h1>HTML to <span class="gradient">PDF</span><br>in one API call</h1>
<p>Convert HTML, Markdown, or URLs to pixel-perfect PDFs. Built-in templates for invoices &amp; receipts. No headless browser headaches.</p> <p>Convert HTML, Markdown, or URLs to pixel-perfect PDFs. Built-in templates for invoices &amp; receipts. No headless browser headaches.</p>
<div class="hero-actions"> <div class="hero-actions">
<button class="btn btn-primary" id="btn-signup" aria-label="Get free API key">Get Free API Key →</button> <a href="#playground" class="btn btn-primary">Try Demo →</a>
<a href="/docs" class="btn btn-secondary">Read the Docs</a> <button class="btn btn-secondary" id="btn-checkout-hero">Get Pro API Key — €9/mo</button>
</div> </div>
<p style="margin-top:16px;color:var(--muted);font-size:0.9rem;">Already have an account? <a href="#" class="open-recover" style="color:var(--accent);">Lost your API key? Recover it →</a></p> <p style="margin-top:16px;color:var(--muted);font-size:0.9rem;">Already have an account? <a href="#" class="open-recover" style="color:var(--accent);">Lost your API key? Recover it →</a></p>
@ -135,23 +132,30 @@
</div> </div>
</section> </section>
<section class="playground" id="playground" style="padding:80px 0;">
<div class="container">
<h2 class="section-title">Try it now</h2>
<p class="section-sub">Paste HTML, get a watermarked PDF. No signup required.</p>
<div style="max-width:660px;margin:0 auto;">
<textarea id="demoHtml" rows="6" placeholder="<h1>Hello World</h1><p>Paste your HTML here…</p>" style="width:100%;padding:16px;border:1px solid var(--border);background:var(--card);color:var(--fg);border-radius:var(--radius);font-family:'SF Mono','Fira Code',monospace;font-size:0.85rem;resize:vertical;margin-bottom:16px;"></textarea>
<div style="display:flex;gap:12px;align-items:center;flex-wrap:wrap;">
<button class="btn btn-primary" id="demoGenerateBtn">Generate PDF →</button>
<span id="demoStatus" style="color:var(--muted);font-size:0.9rem;"></span>
</div>
<div class="signup-error" id="demoError" style="margin-top:12px;"></div>
<div id="demoResult" style="display:none;margin-top:16px;padding:16px;background:var(--card);border:1px solid var(--accent);border-radius:var(--radius);">
<p style="margin:0;">✅ PDF generated! <a id="demoDownload" href="#" download="docfast-demo.pdf" style="font-weight:600;">Download PDF →</a></p>
<p style="margin:8px 0 0;color:var(--muted);font-size:0.85rem;">Demo PDFs include a watermark. Get a Pro key for clean output.</p>
</div>
</div>
</div>
</section>
<section class="pricing" id="pricing"> <section class="pricing" id="pricing">
<div class="container"> <div class="container">
<h2 class="section-title">Simple, transparent pricing</h2> <h2 class="section-title">Simple, transparent pricing</h2>
<p class="section-sub">Start free. Upgrade when you're ready. No surprise charges.</p> <p class="section-sub">One plan. Everything included. No surprises.</p>
<div class="pricing-grid"> <div style="max-width:400px;margin:0 auto;">
<div class="price-card">
<div class="price-name">Free</div>
<div class="price-amount">€0<span> /mo</span></div>
<div class="price-desc">Perfect for side projects and testing</div>
<ul class="price-features">
<li>100 PDFs per month</li>
<li>All conversion endpoints</li>
<li>All templates included</li>
<li>Rate limiting: 10 req/min</li>
</ul>
<button class="btn btn-secondary" style="width:100%" id="btn-signup-2" aria-label="Get free API key">Get Free API Key</button>
</div>
<div class="price-card featured"> <div class="price-card featured">
<div class="price-name">Pro</div> <div class="price-name">Pro</div>
<div class="price-amount">€9<span> /mo</span></div> <div class="price-amount">€9<span> /mo</span></div>
@ -160,9 +164,10 @@
<li>5,000 PDFs per month</li> <li>5,000 PDFs per month</li>
<li>All conversion endpoints</li> <li>All conversion endpoints</li>
<li>All templates included</li> <li>All templates included</li>
<li>No watermarks</li>
<li>Priority support (<a href="mailto:support@docfast.dev">support@docfast.dev</a>)</li> <li>Priority support (<a href="mailto:support@docfast.dev">support@docfast.dev</a>)</li>
</ul> </ul>
<button class="btn btn-primary" style="width:100%" id="btn-checkout" aria-label="Get started with Pro plan">Get Started →</button> <button class="btn btn-primary" style="width:100%" id="btn-checkout" aria-label="Get Pro API key">Get Pro API Key — €9/mo</button>
</div> </div>
</div> </div>
</div> </div>
@ -172,9 +177,6 @@
{{> footer}} {{> footer}}
{{> modals}}
<!-- Recovery Modal --> <!-- Recovery Modal -->
<div class="modal-overlay" id="recoverModal" role="dialog" aria-modal="true" aria-label="Recover API key"> <div class="modal-overlay" id="recoverModal" role="dialog" aria-modal="true" aria-label="Recover API key">
<div class="modal"> <div class="modal">