robots.txt
# As a condition of accessing this website, you agree to abide by the following
# content signals:
# (a) If a Content-Signal = yes, you may collect content for the corresponding
# use.
# (b) If a Content-Signal = no, you may not collect content for the
# corresponding use.
# (c) If the website operator does not include a Content-Signal for a
# corresponding use, the website operator neither grants nor restricts
# permission via Content-Signal with respect to the corresponding use.
# The content signals and their meanings are:
# search: building a search index and providing search results (e.g., returning
# hyperlinks and short excerpts from your website's contents). Search does not
# include providing AI-generated search summaries.
# ai-input: inputting content into one or more AI models (e.g., retrieval
# augmented generation, grounding, or other real-time taking of content for
# generative AI search answers).
# ai-train: training or fine-tuning AI models.
# use: how AI systems may consume the content (immediate, reference, or full).
# ANY RESTRICTIONS EXPRESSED VIA CONTENT SIGNALS ARE EXPRESS RESERVATIONS OF
# RIGHTS UNDER ARTICLE 4 OF THE EUROPEAN UNION DIRECTIVE 2019/790 ON COPYRIGHT
# AND RELATED RIGHTS IN THE DIGITAL SINGLE MARKET.
# BEGIN Cloudflare Managed content
User-agent: *
Content-Signal: search=yes,ai-train=no,use=reference
Allow: /
# Training crawlers
User-agent: Amazonbot
Disallow: /
User-agent: Applebot-Extended
Disallow: /
User-agent: Bytespider
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: Diffbot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: GPTBot
Disallow: /
User-agent: omgili
Disallow: /
User-agent: anthropic-ai
Disallow: /
User-agent: Claude-Web
Disallow: /
User-agent: cohere-ai
Disallow: /
User-agent: MistralAI-Training
Disallow: /
User-agent: meta-externalagent
Disallow: /
User-agent: GoogleOther
Disallow: /
User-agent: Baiduspider
Disallow: /
User-agent: PetalBot
Disallow: /
User-agent: AwarioSmartBot
User-agent: AwarioRssBot
Disallow: /
User-agent: Google-CloudVertexBot
Disallow: /
User-agent: QualifiedBot
Disallow: /
User-agent: Cotoyogi
Disallow: /
User-agent: ICC-Crawler
Disallow: /
User-agent: atlassian-bot
Disallow: /
User-agent: FishBot
Disallow: /
User-agent: BorderxBot
Disallow: /
User-agent: NavuBot
Disallow: /
User-agent: SemrushBot-SWA
Disallow: /
User-agent: WARDBot
Disallow: /
User-agent: magpie-crawler
Disallow: /
User-agent: KimiBot
Disallow: /
User-agent: CitibotSiteCrawler
Disallow: /
# END Cloudflare Managed Content
<!DOCTYPE html>
<html lang="en">
<head><script
defer
data-website-id="dfid_DKbmT7R7WfZjgWV48F4Cd"
data-domain="focusticker.live"
src="https://datafa.st/js/script.js">
</script>
<script defer src="https://cloud.umami.is/script.js" data-website-id="7cfbc4ea-a636-4a5f-a77d-fd03fae56031"></script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Focus Ticker - Track Deep Work & Treat Focus Like a Startup</title>
<meta name="description"
content="Focus Ticker is the minimal focus timer for deep work. Track your sessions, block distractions, and treat your attention capital like a startup's runway.">
<meta name="keywords"
content="focus timer, pomodoro timer, deep work app, productivity tracker, focus ticker, task management, minimal timer, focus app">
<meta name="robots" content="index, follow">
<link rel="canonical" href="https://focusticker.live/">
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website">
<meta property="og:url" content="https://focusticker.live/">
<meta property="og:title" content="Focus Ticker - Track Deep Work & Treat Focus Like a Startup">
<meta property="og:description"
content="Focus Ticker is the minimal focus timer for deep work. Track your sessions, block distractions, and treat your attention capital like a startup's runway.">
<meta property="og:image" content="https://focusticker.live/opengraph.png">
<meta property="og:logo" content="https://focusticker.live/icon.png">
<!-- Twitter -->
<meta property="twitter:card" content="summary_large_image">
<meta property="twitter:url" content="https://focusticker.live/">
<meta property="twitter:title" content="Focus Ticker - Track Deep Work & Treat Focus Like a Startup">
<meta property="twitter:description"
content="Focus Ticker is the minimal focus timer for deep work. Track your sessions, block distractions, and treat your attention capital like a startup's runway.">
<meta property="twitter:image" content="https://focusticker.live/opengraph.png">
<link rel="icon" type="image/png" href="icon.png">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200..1000;1,200..1000&display=swap"
rel="stylesheet">
<style>
:root {
--bg-color: #050505;
--text-color: #ffffff;
--accent-color: #ffffff;
--secondary-bg: #111111;
--item-bg: #1a1a1a;
--border-color: #333333;
--text-muted: #888888;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
background-color: var(--bg-color);
color: var(--text-color);
font-family: "Nunito", sans-serif;
-webkit-font-smoothing: antialiased;
min-height: 100vh;
display: flex;
flex-direction: column;
}
nav {
padding: 2rem 2rem;
/* Reduced padding to move icon left */
position: absolute;
top: 0;
left: 0;
width: 100%;
}
nav img {
height: 40px;
/* Constrain icon size */
width: auto;
}
.logo {
font-weight: 600;
font-size: 1.1rem;
letter-spacing: -0.02em;
}
.container {
flex: 1;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 4rem;
max-width: 1200px;
margin: 0 auto;
width: 100%;
gap: 4rem;
}
main.container {
padding-bottom: 10rem;
margin-bottom: 5rem;
}
.content-left {
flex: 1;
max-width: 450px;
}
.content-left h1 {
font-size: 3.5rem;
line-height: 1.1;
margin-bottom: 1.5rem;
font-weight: 500;
letter-spacing: -0.03em;
}
.content-left p {
font-size: 1.1rem;
color: var(--text-muted);
margin-bottom: 2.5rem;
line-height: 1.5;
}
.email-form {
display: flex;
align-items: center;
border-bottom: 1px solid #444;
padding-bottom: 0.5rem;
max-width: 300px;
}
.email-form input {
background: transparent;
border: none;
outline: none;
font-size: 1rem;
color: #fff;
flex: 1;
font-family: inherit;
}
.email-form input::placeholder {
color: #888;
}
.email-form button {
background: transparent;
border: none;
cursor: pointer;
font-size: 1.2rem;
color: #fff;
padding-left: 1rem;
transition: transform 0.2s ease;
}
.email-form button:hover {
transform: translateX(3px);
}
.content-right {
flex: 1;
display: flex;
justify-content: flex-end;
align-items: center;
}
.content-right img {
max-width: 100%;
/* Responsive but limited relative to container */
width: 320px;
/* "Little screen" size */
height: auto;
border-radius: 8px;
/* Slight rounding for polish */
}
/* Responsive */
@media (max-width: 900px) {
.container {
flex-direction: column-reverse;
/* Screen on top or bottom? usually top mobile, but let's stick to simple stacking */
justify-content: center;
padding: 6rem 2rem 2rem;
gap: 3rem;
text-align: center;
}
nav {
padding: 1.5rem 2rem;
}
.content-left {
max-width: 100%;
display: flex;
flex-direction: column;
align-items: center;
}
.email-form {
width: 100%;
max-width: 100%;
}
.content-right {
justify-content: center;
width: 100%;
}
.content-right img {
width: 250px;
}
}
/* App Store Badge */
.app-store-badge-link {
display: inline-block;
margin-top: 1.5rem;
transition: transform 0.2s ease;
}
.app-store-badge-link:hover {
transform: scale(1.05);
}
.app-store-badge-img {
height: 80px;
width: auto;
}
/* Footer Form Styles */
.footer-form-wrapper {
margin-bottom: 2rem;
display: flex;
flex-direction: column;
align-items: center;
width: 100%;
}
.footer-waitlist-text {
margin-bottom: 1rem;
color: #888;
font-size: 0.9rem;
}
.footer-status-message {
margin-top: 10px;
font-size: 0.9rem;
min-height: 1.25em;
text-align: center;
}
</style>
<noscript>
<img src="https://analytics.studo.space/ingress/71a9f262-262f-4e3b-a9ac-0d6164bc4ab5/pixel.gif">
</noscript>
<script defer src="https://analytics.studo.space/ingress/71a9f262-262f-4e3b-a9ac-0d6164bc4ab5/script.js"></script>
<script
src="https://rybbit.vusal.me/api/script.js"
data-site-id="4820093c104d"
defer
></script>
</head>
<body>
<nav>
<img src="icon.png" alt="Focus Ticker Icon">
</nav>
<main class="container">
<div class="content-left">
<h1>Focus Ticker</h1>
<p>A minimal app to track your focus sessions, treat your focus sessions as startup.
</p>
<a href="https://apps.apple.com/us/app/focus-ticker-startup-timer/id6758121593" class="app-store-badge-link"
target="_blank" rel="noopener noreferrer">
<img src="Download_on_the_App_Store_Badge.svg.png" alt="Download on the App Store"
class="app-store-badge-img">
</a>
<div style="margin-top: 1.5rem;">
<a href="https://www.producthunt.com/products/focus-ticker?embed=true&utm_source=badge-featured&utm_medium=badge&utm_campaign=badge-focus-ticker"
target="_blank" rel="noopener noreferrer"><img
src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=1075279&theme=light&t=1770631973667"
alt="Focus Ticker - Treat your focus sessions as startup. | Product Hunt"
style="width: 250px; height: 54px;" width="250" height="54" /></a>
</div>
</div>
<div class="content-right">
<img src="screen.png" alt="Focus Ticker Screen">
</div>
</main>
<!-- Feature Request Section -->
<section class="board-section">
<div class="container board-layout">
<!-- Left: Requests & Form -->
<div class="board-left">
<h2>Feature Requests</h2>
<p class="subtitle">Vote on features you want to see. <span class="no-login">No login required</span>
</p>
<button id="toggleFormBtn" class="toggle-btn" onclick="toggleForm()">
+ Submit a Request
</button>
<form id="featureForm" class="feature-form" style="display: none;">
<div class="form-group">
<input type="text" id="featureTitle" placeholder="Feature Title" required maxlength="50">
</div>
<div class="form-group">
<input type="text" id="featureAuthor" placeholder="Your Name" required maxlength="30">
</div>
<div class="form-group">
<textarea id="featureDesc" placeholder="Describe the feature..." required rows="3"></textarea>
</div>
<div class="form-actions">
<button type="button" class="cancel-btn" onclick="toggleForm()">Cancel</button>
<button type="submit" class="submit-btn">Post Request</button>
</div>
</form>
<div id="featureList" class="feature-list">
<div class="loading-spinner">Loading requests...</div>
</div>
</div>
<!-- Right: Image -->
<div class="board-right">
<img src="screen2.png" alt="Focus Ticker App">
</div>
</div>
</section>
<!-- Merch Section -->
<section class="merch-section">
<div class="container merch-container">
<div class="collab-header">
<img src="icon.png" alt="Focus Ticker" class="collab-logo">
<span class="collab-x">×</span>
<img src="rer.png" alt="Viou" class="collab-logo">
</div>
<a href="https://viou.club/" target="_blank" class="cta-button">Visit Store</a>
<div class="merch-gallery">
<a href="https://viou.club/" target="_blank"><img src="merch/tellnoneuntilitsdone.jpg"
alt="Tell None Until It's Done"></a>
<a href="https://viou.club/" target="_blank"><img src="merch/focusonyouuntilfocusisyouv.jpg"
alt="Focus on You Until Focus is You"></a>
<a href="https://viou.club/" target="_blank"><img src="merch/distractionisenemyofvision.jpg"
alt="Distraction is Enemy of Vision"></a>
</div>
</div>
</section>
<!-- Social Footer -->
<footer class="social-footer">
<div class="footer-form-wrapper">
<p class="footer-waitlist-text">Join the waitlist for updates</p>
<form class="email-form" id="waitlistForm">
<input type="email" id="userEmail" name="user_email" placeholder="Email address" required>
<button type="submit">→</button>
</form>
<p id="statusMessage" class="footer-status-message"></p>
</div>
<div class="social-links">
<a href="https://x.com/" target="_blank" rel="noopener noreferrer" aria-label="Twitter">
<svg viewBox="0 0 24 24" fill="currentColor">
<path
d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z">
</path>
</svg>
</a>
<a href="https://www.instagram.com/tickerfocusapp/" target="_blank" rel="noopener noreferrer"
aria-label="Instagram">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<rect x="2" y="2" width="20" height="20" rx="5" ry="5"></rect>
<path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"></path>
<line x1="17.5" y1="6.5" x2="17.51" y2="6.5"></line>
</svg>
</a>
<a href="https://www.tiktok.com/@focusticker" target="_blank" rel="noopener noreferrer" aria-label="TikTok">
<svg viewBox="0 0 24 24" fill="currentColor">
<path
d="M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.82-1.35 4.01-1.29 1.9-3.46 3.05-5.71 3.02-4.24-.08-7.6-3.47-7.64-7.72-.02-3.79 2.75-7.1 6.51-7.71.61-.1 1.23-.15 1.85-.12v4.06c-.85-.14-1.74-.08-2.55.22-1.63.63-2.61 2.37-2.32 4.09.28 1.63 1.89 2.92 3.55 2.87 1.76-.06 3.32-1.35 3.55-3.08.06-.51.04-1.03.04-1.54V.02Z">
</path>
</svg>
</a>
<a href="blog/"
style="text-decoration: none; font-size: 0.9rem; border: 1px solid #333; padding: 0.5rem 1rem; border-radius: 20px; display: inline-flex; align-items: center; height: 32px;">Blog</a>
<a href="privacy/"
style="text-decoration: none; font-size: 0.9rem; border: 1px solid #333; padding: 0.5rem 1rem; border-radius: 20px; display: inline-flex; align-items: center; height: 32px;">Privacy
Policy</a>
<a href="https://www.apple.com/legal/internet-services/itunes/dev/stdeula/" target="_blank"
rel="noopener noreferrer"
style="text-decoration: none; font-size: 0.9rem; border: 1px solid #333; padding: 0.5rem 1rem; border-radius: 20px; display: inline-flex; align-items: center; height: 32px;">EULA</a>
</div>
</footer>
<style>
.social-footer {
display: flex;
flex-direction: column;
align-items: center;
gap: 2rem;
padding: 3rem 0 4rem;
background-color: var(--secondary-bg);
/* Seamless with board section */
}
.social-links {
display: flex;
gap: 2rem;
justify-content: center;
flex-wrap: wrap;
align-items: center;
}
.social-footer a {
color: var(--text-muted);
transition: all 0.2s ease;
opacity: 0.7;
}
.social-footer a:hover {
color: var(--text-color);
transform: translateY(-3px);
opacity: 1;
}
.social-footer svg {
width: 24px;
height: 24px;
}
.board-section {
background-color: var(--secondary-bg);
/* Dark grey background for bottom section */
padding: 4rem 0;
border-top: 1px solid var(--border-color);
}
.board-layout {
/* Inherits .container max-width/padding */
align-items: flex-start;
/* Top align */
}
.board-left {
flex: 1;
max-width: 600px;
/* Limit width of list for readability */
}
.board-right {
flex: 1;
display: flex;
justify-content: flex-end;
position: sticky;
top: 2rem;
}
.board-right img {
width: 300px;
height: auto;
border-radius: 12px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);
transform: rotate(-2deg);
/* Play