# TickBeep: Finden Sie Zecken an sich selbst mit Ihrem Handy

> Fahren Sie mit Ihrem Handy über Kleidung, Haut und Ausrüstung. TickBeep meldet krabbelnde Zecken früh. Jetzt für die kostenlose Feld-Beta anmelden.

<section class="hero-wrap">
  <div class="hero">
    <div>
      <div class="tags-row">
        <span class="tag now">Geschlossene Beta</span>
        <span class="tag next">Feldtester gesucht</span>
      </div>
      <h1>Finden Sie die Zecke, bevor sie Ihre Haut findet.</h1>
      <p class="lead">TickBeep macht Ihr Handy zum Zeckendetektor. Fahren Sie damit an Ihren Hosenbeinen, Ärmeln, Ihrem Rücken und Ihrer Ausrüstung entlang. Wenn etwas Kleines krabbelt, piept das Handy, vibriert und setzt auf dem Bildschirm einen Rahmen darum. Wie ein Metalldetektor, nur für Zecken.</p>
      <a class="cta" href="#beta">Zur Feld-Beta anmelden<small>geschlossene Beta für diese Saison, noch kein Store-Link</small></a>
    </div>
    <figure class="hero-visual">
      <picture>
        <source srcset="/hero-tick-on-trousers.webp" type="image/webp">
        <img src="/hero-tick-on-trousers.jpg" width="1280" height="853" loading="eager" decoding="async"
             alt="Eine Person sitzt am Waldrand und fährt mit einem Handy über ihr eigenes Hosenbein. Auf dem Handybildschirm ist der Stoff vergrößert und zwei Zecken sind jeweils mit einem hellgrünen Rahmen markiert.">
      </picture>
      <figcaption>Mockup der App im Einsatz. TickBeep ist noch in Entwicklung, das ist kein Screenshot eines ausgelieferten Produkts.</figcaption>
    </figure>
  </div>
</section>

<section id="why">
  <h2>Warum Ihre Augen nicht reichen</h2>
  <p class="lead narrow">Der Spaziergang ist vorbei. Am Auto bürsten Sie sich ab und denken, Sie hätten alles gesehen. Hier ist, was ein bloßer Blick übersieht.</p>
  <div class="pain-grid">
    <div class="card">
      <svg width="40" height="40" viewBox="0 0 40 40" fill="none" aria-hidden="true">
        <circle cx="20" cy="20" r="3" fill="#ff5a36"/>
        <circle cx="13" cy="13" r="2" fill="#ffb060"/>
        <rect x="8" y="34" width="24" height="3" rx="1.5" fill="#2c3940"/>
      </svg>
      <h3>Die kleinen sind das Problem</h3>
      <p>Eine ausgewachsene Zecke sehen Sie und schnipsen sie weg. Eine Nymphe ist ein bis zwei Millimeter groß, und auf dunklen Hosen gleitet Ihr Blick direkt daran vorbei. Genau die fahren mit Ihnen nach Hause und saugen sich tagelang fest, bevor es jemand merkt.</p>
    </div>
    <div class="card">
      <svg width="40" height="40" viewBox="0 0 40 40" fill="none" aria-hidden="true">
        <path d="M20 4 L36 32 L4 32 Z" fill="none" stroke="#ffb060" stroke-width="2"/>
        <circle cx="20" cy="20" r="2.5" fill="#ff5a36"/>
      </svg>
      <h3>Ihren eigenen Rücken sehen Sie nicht</h3>
      <p>Die Rückseite Ihrer Beine, der untere Rücken, hinter dem Kragen, zwischen den Schulterblättern. Sie können sich drehen und verrenken und sehen trotzdem nicht die Stellen, zu denen eine Zecke tatsächlich hochkrabbelt. Deshalb kontrollieren Menschen sich gegenseitig. TickBeep ist für die Momente, in denen Sie allein sind.</p>
    </div>
    <div class="card">
      <svg width="40" height="40" viewBox="0 0 40 40" fill="none" aria-hidden="true">
        <circle cx="20" cy="20" r="15" stroke="#ff5a36" stroke-width="2"/>
        <path d="M20 5 L20 12 M20 28 L20 35 M5 20 L12 20 M28 20 L35 20" stroke="#ff5a36" stroke-width="2" stroke-linecap="round"/>
      </svg>
      <h3>Zuhause ist es schon spät</h3>
      <p>Während Sie gelaufen sind, ist sie schon gekrabbelt. Wenn Sie auf dem Sofa sitzen, kann sie schon unter dem Bund oder im Ärmel sein. Der richtige Moment zum Prüfen ist am Startpunkt des Weges, bevor Sie ins Auto steigen.</p>
    </div>
  </div>
  <p class="aside">Es geht nicht darum, Ihnen Angst zu machen. Es geht darum, dass gerade die kleinen, stillen die sind, die man bei der Selbstkontrolle übersieht.</p>
</section>

<section id="how" class="tight">
  <h2>So funktioniert es</h2>
  <p class="lead narrow">Drei Schritte. Fahren, piepen, schauen.</p>
  <div class="steps">
    <div class="step">
      <span class="n"></span>
      <h3>Ton statt Bildschirm</h3>
      <p>Wenn Sie das Handy an der Rückseite Ihres eigenen Beins entlangführen, sehen Sie das Display gar nicht. Deshalb verlässt sich TickBeep nicht darauf. Es piept und vibriert in dem Moment, in dem es etwas erfasst. Sie fahren weiter und lassen Ihre Ohren aufpassen.</p>
    </div>
    <div class="step">
      <span class="n"></span>
      <h3>Ein grüner Rahmen, wenn Sie hinschauen</h3>
      <p>Alles, was die App erfasst, bekommt im Live-Kamerabild einen hellgrünen Rahmen. Kein Zusammenkneifen der Augen, kein Suchen im Bild. Das Handy zeigt Ihnen genau wo.</p>
    </div>
    <div class="step">
      <span class="n"></span>
      <h3>Sie achtet auf Bewegung, nicht auf Form</h3>
      <p>Nach einem Waldspaziergang sind Sie voller kleiner Partikel: Dreck, Samen, Fusseln, Kiefernnadeln. Das alles liegt still. Eine Zecke krabbelt. TickBeep sucht nach einem kleinen Objekt in ungefähr der richtigen Größe, das sich bewegt.</p>
    </div>
  </div>
  <p class="aside">Zwei weitere Dinge helfen Ihren eigenen Augen: ein Farb-Umkehrmodus, bei dem ein dunkler Punkt auf umgekehrtem Hintergrund hell hervorsticht, und ein Streiflicht-Tipp, bei dem ein echtes dreidimensionales Objekt einen Schatten wirft und ein Fleck nicht. Alles läuft auf dem Handy. Keine Kamerabilder verlassen Ihr Gerät.</p>
</section>

<section id="where" class="tight">
  <h2>Wo es schaut</h2>
  <p class="lead narrow">Sie selbst, was Sie getragen haben und was Sie dabeihatten.</p>
  <div class="grid-3">
    <div class="where-card">
      <svg width="44" height="44" viewBox="0 0 44 44" fill="none" aria-hidden="true">
        <path d="M14 8 h8 v8 M14 8 c-6 6 -7 14 -5 22 l4 4 M14 8 v32 M22 16 v28 M26 20 l4 -4 c4 2 5 6 3 10 l-6 6" stroke="#ff5a36" stroke-width="2.4" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
      </svg>
      <h3>Kleidung</h3>
      <p>Hosenbeine, Ärmel, Bündchen, Kragen, die Nähte, in denen sie sich verstecken. Fahren Sie über den Stoff, bevor er mit Ihnen ins Auto steigt.</p>
    </div>
    <div class="where-card">
      <svg width="44" height="44" viewBox="0 0 44 44" fill="none" aria-hidden="true">
        <path d="M22 6 c-6 0 -9 6 -9 13 v16 h5 v-20 h8 v20 h5 V19 c0 -7 -3 -13 -9 -13 Z" stroke="#ff5a36" stroke-width="2.4" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
        <line x1="22" y1="6" x2="22" y2="22" stroke="#ff5a36" stroke-width="2.4"/>
      </svg>
      <h3>Bloße Haut</h3>
      <p>Arme, Hals, Knöchel, die Rückseite des Knies. Die Stellen, zu denen eine Zecke will, und die Stellen, die Sie selbst kaum sehen.</p>
    </div>
    <div class="where-card">
      <svg width="44" height="44" viewBox="0 0 44 44" fill="none" aria-hidden="true">
        <rect x="8" y="12" width="28" height="20" rx="4" stroke="#ff5a36" stroke-width="2.4" fill="none"/>
        <path d="M14 14 v-5 h16 v5" stroke="#ff5a36" stroke-width="2.4" fill="none" stroke-linecap="round"/>
        <line x1="22" y1="12" x2="22" y2="8" stroke="#ff5a36" stroke-width="2.4" stroke-linecap="round"/>
        <path d="M16 24 h12" stroke="#ffb060" stroke-width="2.4" stroke-linecap="round"/>
      </svg>
      <h3>Ihre Ausrüstung</h3>
      <p>Rucksack, Stiefel, Zelt, Isomatte. Eine Zecke fährt auf Ihrer Ausrüstung mit nach Hause und findet Sie später. Prüfen Sie, was Sie getragen und eingepackt haben, nicht nur sich selbst.</p>
    </div>
  </div>
</section>

<section id="status" class="tight">
  <h2>Was es heute kann und was noch in Arbeit ist</h2>
  <p class="lead narrow">Wir sind lieber ehrlich, als zu viel zu versprechen. Hier ist die klare Aufteilung.</p>
  <div class="grid-2">
    <div class="panel">
      <span class="tag now">Funktioniert schon</span>
      <ul>
        <li>Live-Erkennung kleiner beweglicher Objekte im Kamerabild</li>
        <li>Hellgrüner Rahmen um alles, was erfasst wird</li>
        <li>Piepton und Vibration, damit es auch ohne Blick aufs Display funktioniert</li>
        <li>Farb-Umkehrmodus</li>
        <li>Streiflicht-Hinweise</li>
        <li>Läuft komplett auf dem Handy, keine Bilder werden hochgeladen</li>
      </ul>
    </div>
    <div class="panel">
      <span class="tag next">In Arbeit</span>
      <ul class="next">
        <li>Abdeckungs-Karte mit dem Tiefensensor, damit die App erkennt, welche Bereiche von Ihnen schon abgesucht wurden und welche Sie ausgelassen haben</li>
        <li>Ein späterer Modus für Tierfell</li>
        <li>Ein Wärme-Aufsatz zur Erkennung warmer Körper</li>
      </ul>
    </div>
  </div>
  <p class="aside">Wir setzen keine Termine an die Liste mit Dingen in Arbeit. Es kommt raus, wenn es gut ist, nicht früher.</p>
</section>

<section id="beta">
  <div class="form-panel">
    <span class="tag now">Geschlossene Beta</span>
    <h2>Für die Beta anmelden</h2>
    <p class="lead">Wir suchen für diese Saison Feldtester. Ein Platz in der Beta ist kostenlos.</p>
    <form id="beta-form" action="/api/forms/tickbeep/beta" method="post">
      <div class="field">
        <label for="email">E-Mail</label>
        <input type="email" id="email" name="email" required placeholder="sie@example.com" autocomplete="email">
      </div>
      <div class="field">
        <label for="region">Region oder Land</label>
        <input type="text" id="region" name="region" placeholder="Bayern, Sachsen, Schleswig-Holstein" autocomplete="country-name">
      </div>
      <div class="field">
        <label for="device">Welches Handy nutzen Sie?</label>
        <input type="text" id="device" name="device" placeholder="iPhone 15 Pro, Pixel 8, Galaxy S23">
      </div>
      <div class="field">
        <span class="label">Wo verbringen Sie Zeit?</span>
        <label class="check"><input type="checkbox" name="terrain" value="woods"> Wald und Wege</label>
        <label class="check"><input type="checkbox" name="terrain" value="fields"> Felder und Ränder</label>
        <label class="check"><input type="checkbox" name="terrain" value="grassland"> Grasland und Uferbereiche</label>
        <label class="check"><input type="checkbox" name="terrain" value="work"> Arbeit im Freien</label>
      </div>
      <div class="hp" aria-hidden="true">
        <label for="website">Website</label>
        <input type="text" id="website" name="website" tabindex="-1" autocomplete="off">
      </div>
      <div class="cf-turnstile" data-sitekey="0x4AAAAAADTuJu-BSkxDDaDc"></div>
      <button class="btn" id="beta-submit" type="submit">Platz sichern</button>
      <p class="form-status" id="beta-status" role="status" aria-live="polite"></p>
      <p class="fine">Warum wir nach Ihrer Region fragen: Zecken sind lokal. Die Art auf einem Weg in Bayern ist nicht dieselbe wie auf einem Pfad in Connecticut. Wir testen gegen die Zecken, die tatsächlich dort leben, wo Sie sind. Deshalb wollen wir Tester aus echten Regionen, nicht aus einem Labor.</p>
    </form>
  </div>
</section>

<section id="faq" class="tight">
  <h2>FAQ</h2>
  <details>
    <summary>Ist das ein Medizinprodukt?</summary>
    <p>Nein. TickBeep ist eine Erkennungshilfe, die Ihnen hilft, eine krabbelnde Zecke früher zu sehen. Es diagnostiziert nichts, beurteilt keinen Biss und ersetzt keinen medizinischen Rat.</p>
  </details>
  <details>
    <summary>Was ist, wenn die Zecke aufhört sich zu bewegen?</summary>
    <p>Dann erfasst die App sie vielleicht nicht. TickBeep orientiert sich an Bewegung, deshalb kann eine Zecke, die stillhält, durchrutschen. Behandeln Sie die App als zweites Paar Augen, nicht als Ersatz für eine gründliche Kontrolle. Sie findet Dinge schneller, als Sie es allein würden. Sie verspricht nicht, jede einzelne zu finden.</p>
  </details>
  <details>
    <summary>Wohin gehen meine Kamerabilder?</summary>
    <p>Nirgendwohin. Die gesamte Verarbeitung passiert auf Ihrem Handy. Keine Bilder werden hochgeladen, auf einem Server gespeichert oder irgendwohin gesendet.</p>
  </details>
  <details>
    <summary>Markiert sie auch Mücken?</summary>
    <p>Ja. Sie sucht nach allem, was klein ist und sich bewegt, deshalb werden auch Mücken, Gnitzen und Ameisen eingerahmt. Zecken sind das Ziel, der Rest ist ein Nebeneffekt der Funktionsweise. Ein Rahmen, den Sie in einer Sekunde wegklicken, ist besser als eine Nymphe, die Sie nie gesehen haben.</p>
  </details>
  <details>
    <summary>Was wird es kosten?</summary>
    <p>Kostenlos für die Beta-Tester dieser Saison. Genau das ist das ganze Angebot, wenn Sie sich jetzt anmelden.</p>
  </details>
  <details>
    <summary>Kann es auch einen Hund prüfen?</summary>
    <p>Nicht der Fokus. TickBeep ist dafür gebaut, Sie selbst und Ihre Kleidung draußen zu prüfen. Ein späterer Modus für Tierfell ist etwas, das wir uns anschauen, aber die App ist für Sie und das, was Sie getragen haben, nicht für das Haustier.</p>
  </details>
  <details>
    <summary>Android?</summary>
    <p>Steht auf der Liste. Sagen Sie uns im Formular, welches Handy Sie nutzen, dann hilft uns das bei der Entscheidung, was wir als Nächstes bauen.</p>
  </details>
</section>

<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
<script>
(function () {
  var form = document.getElementById('beta-form');
  if (!form) return;
  var status = document.getElementById('beta-status');
  var submit = document.getElementById('beta-submit');
  var renderedAt = Math.floor(Date.now() / 1000);

  function setStatus(text, isError) {
    status.textContent = text;
    status.classList.toggle('is-error', !!isError);
    status.classList.toggle('is-ok', !isError && !!text);
  }

  function uuid() {
    return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, function (c) {
      return (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16);
    });
  }

  form.addEventListener('submit', async function (e) {
    e.preventDefault();
    submit.disabled = true;
    setStatus('Wird gesendet...', false);

    var data = new FormData(form);
    var terrain = data.getAll('terrain').join(', ');
    var payload = {
      fields: {
        email: data.get('email'),
        region: data.get('region') || '',
        device: data.get('device') || '',
        terrain: terrain
      },
      website: data.get('website') || '',
      rendered_at: renderedAt,
      idempotency_key: uuid(),
      'cf-turnstile-response': (form.querySelector('[name="cf-turnstile-response"]') || {}).value || null
    };

    try {
      var resp = await fetch('/api/forms/tickbeep/beta', {
        method: 'POST',
        headers: {'Content-Type': 'application/json'},
        body: JSON.stringify(payload)
      });
      var result = await resp.json();
      if (result.ok) {
        setStatus('Sie stehen auf der Liste. Wir schreiben Ihnen, bevor die Saison beginnt.', false);
        form.reset();
        if (window.turnstile) window.turnstile.reset();
      } else {
        setStatus('Das konnte nicht gesendet werden. Bitte versuchen Sie es in einer Minute noch einmal.', true);
        if (window.turnstile) window.turnstile.reset();
      }
    } catch (err) {
      setStatus('Netzwerkfehler. Bitte versuchen Sie es später noch einmal.', true);
      if (window.turnstile) window.turnstile.reset();
    } finally {
      submit.disabled = false;
    }
  });
})();
</script>