Skip to content
Dirework

Features

Everything Dirework can do for your co-working stream

Dirework is a self-hosted Pomodoro timer and task list built specifically for Twitch co-working and body-doubling streams. Here's everything it includes.

Pomodoro timer

A full-featured Pomodoro timer with automatic phase transitions.

  • Configurable durations — Set Focus, Break, and Long break durations (in minutes) from the dashboard
  • Long break intervals — Automatically triggers a long break every N cycles (configurable)
  • Cycle tracking — Set the number of pomos per session (1-99)
  • Automatic phase transitions — The timer moves through Starting, Focus, Break, and Long break on its own, ending in Done
  • Pause and resume — Pause mid-session and resume exactly where you left off (remembers which phase you were in)
  • Skip phase — Skip the current phase to advance to the next one
  • 5-second starting countdown — Brief countdown before work begins so you can get ready
  • Real-time OBS overlay — Circular or rounded-rectangle progress ring with countdown, phase label, and cycle count

Task list

A viewer-interactive task list managed through Twitch chat.

  • Chat commands — Viewers add, edit, complete, and remove tasks with commands like !task, !done, !edit, !remove
  • Multiple tasks per viewer — Each viewer can have multiple tasks, numbered for easy reference
  • Task priority — Broadcaster tasks are pinned to the top, viewer tasks below in order
  • Broadcaster controls — Clear all tasks, clear completed tasks, or remove a specific user's tasks
  • Author grouping — Tasks are grouped by author, each with a styled card container showing the author's name and done/total count
  • Real-time OBS overlay — Task list with usernames in Twitch chat colors, checkboxes, and strikethrough for completed tasks
  • Auto-scroll — Toggleable infinite scroll animation when the list overflows the display area

Theme Center

A visual editor for customizing your overlays, available at /dashboard/styles.

  • 6 built-in theme presets — Default, Ocean Depths, Liquid Glass Dark, Cozy Cottage, Minimal Light, Twitch Purple
  • Timer overlay editor — Customize dimensions, background (color, opacity, border radius), progress ring (track/fill colors, width, gap), text (color, outline, font family), font sizes (label, time, cycle), and phase labels
  • Task list overlay editor — Customize header, body, task items, done state, checkboxes, bullets, fonts, scroll toggle/speed, and more
  • Live preview — See changes instantly in the preview panel with an animated timer countdown toggle
  • Progress ring shapes — Choose between circle and rounded rectangle (squircle) ring styles
  • Per-property control — Every color, size, opacity, font, and spacing value is individually configurable

Twitch chat bot

Connect a separate Twitch bot account to handle chat commands.

  • Task commands!task, !done, !edit, !remove, !focus, !check, !next, !help for all viewers
  • Timer commands!timer start, !timer pause, !timer resume, !timer skip, !timer reset, !timer eta (mods only)
  • Moderator commands!clear all, !clear done, !clear @user (mods only) to clear all tasks, only completed tasks, or one viewer's tasks
  • Customizable bot messages — Configure response templates for every command
  • Command aliases — Create custom aliases for any command
  • Separate bot account — Uses its own Twitch account so messages come from the bot, not you
  • Runs in your browser — The bot lives in a private browser page you add to OBS (or keep in a pinned tab); no always-on bot server to run

OBS overlays

Two transparent browser source overlays designed for OBS and streaming software.

  • Timer overlay — Shows phase label, countdown, and cycle count with a configurable progress ring
  • Auto-scaling timer — The timer overlay auto-scales to fill its OBS browser source while preserving aspect ratio, and while idle it shows a full preview (your configured work length and a full ring) instead of appearing blank, so you can position it during setup
  • Task list overlay — Shows task list with viewer usernames, checkboxes, and auto-scroll
  • Transparent backgrounds — Overlays render with no background, layering cleanly over your stream
  • Private overlay URLs — Each overlay has its own private overlay URL; reset it if it ever leaks
  • Fast updates — Overlays pick up changes within a few seconds, and the timer countdown ticks smoothly on the overlay itself
  • Toggle previews — Dashboard previews can be toggled on/off to avoid slow page loads

Dashboard

A single-page control center for your stream.

  • Timer controls — Start, pause, resume, skip, and stop the timer with inline duration settings and info tooltips
  • Task manager — Add, complete, edit, and remove tasks directly from the dashboard
  • Overlay previews — Live iframe previews of both overlays (toggleable)
  • Overlay URLs — Copy overlay URLs for OBS with one click; regenerate tokens if needed. The app shows the recommended OBS browser-source dimensions: 320×320 for the timer and 360×720 for the task list
  • Bot management — Connect, view status, and disconnect your bot account
  • Time-of-day greetings — Personalized greetings based on the time of day

UI and design

  • Focus Console design — a dark-first instrument-panel look: midnight-navy base, cerulean accent, and LED-style status chips
  • Cerulean accent — a bright cyan-blue accent used sparingly on buttons, links, and active states
  • Dark and light mode — Toggle between themes with a switch in the header
  • Responsive layout — Works on desktop and mobile
  • Glass-effect header — Frosted glass navbar with backdrop blur and saturation

Self-hosted and single-user

  • Single-user per instance — Each streamer runs their own Dirework instance
  • Full data ownership — Your data lives in your own Cloudflare account
  • Serverless database — Cloudflare D1 (SQLite) — no database server to install or babysit
  • Free to run — Deploys as two Cloudflare Workers on the free plan; no servers, no Docker
  • Static docs site — Documentation builds as a static site, deployable separately

Tech stack

LayerTechnology
FrameworkNext.js 16 (App Router, React 19, React Compiler)
StylingTailwind CSS v4, shadcn/ui components
APIHono + tRPC v11 with TanStack React Query
AuthBetter Auth with Twitch OAuth
DatabaseCloudflare D1 (SQLite) with Drizzle ORM
Chat BotIRC-over-WebSocket in a token-gated browser page
RuntimeCloudflare Workers (web via OpenNext)
DeployAlchemy (infrastructure-as-code) + GitHub Actions
FontsMontserrat (headings/timer) + IBM Plex Sans (body) + IBM Plex Mono (labels)
DocsFumadocs with Orama search
BuildTurborepo + Bun workspaces

On this page