---
name: 'Bullseye'
description: 'Bullseye is a self-hosted offline-first personal utilities app with habit tracking, tasks, and notes.'
tags: ['typescript', 'svelte', 'sqlite']
image: '../../../public/static/bullseye.webp'
links:
  - label: 'Source Code'
    url: 'https://git.jaroszew.ski/patrick/bullseye-app'
order: 6
startDate: '2025-03-30'
---
# Bullseye - Habit tracking, tasks, notes, & more

<div class="flex flex-wrap gap-2 my-0! [&>img]:my-0! [&>img]:mt-2!" >
  <img src="https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge&logo=typescript&logoColor=white" alt="TypeScript" />
  <img src="https://img.shields.io/badge/Svelte-FF3E00?style=for-the-badge&logo=svelte&logoColor=white" alt="Svelte" />
  <img src="https://img.shields.io/badge/SQLite-07405E?style=for-the-badge&logo=sqlite&logoColor=white" alt="SQLite" />
  <img src="https://img.shields.io/badge/Claude-D97757?style=for-the-badge&logo=anthropic&logoColor=white" alt="Claude" />
</div>

Bullseye is a self-hosted personal utilities app built with Svelte and TypeScript — habit tracking, todo lists, and markdown notes in one place.

The main design decision was offline-first. Using Triplit with a local IndexedDB cache, everything works without a connection and syncs to the server when one is available. The frustration of opening a habit tracker on the go and hitting a loading spinner was enough motivation to build it properly from the start.

Multi-user support means it can serve a whole household off a single self-hosted instance.