Case study · Native desktop · Tauri 2 · Solo + AI

EngiBoard.

A desktop SaaS for engineers. Shipped in 4 weeks. Capture, annotate, track — one binary.

Zero hires. Public on GitHub.

ProductUX / UITauri 2 · RustNext.js · Supabase
EngiBoard main board in the dark theme
Annotation editor with arrow, rectangle and text on a fan blade drawing
EngiBoard main task list with before/after screenshots per task
44
releasestagged, every one public
Cmd + Shift + GCapture
6days, 7 hours
44releases tagged
98commits
4installers, Mac + Windows
18surfaces, one binary
0hires
20-second summaryStudio build · used by 2 client teams
What
A native desktop tracker for engineers’ before/after photo reports, on Mac and Windows.
Why
Site reports ran through four glued apps (camera roll → Telegram → Word), and every handoff dropped context.
My role
Product, UX/UI and engineering, solo with AI: Tauri 2, Next.js, Supabase.
Result
44 releases tagged · 4 installers · 0 hires
Explore the case ↓
Overview

A native tracker for engineers who run before/after photo reports on construction sites and production floors.

Tauri 2Native shellmacOS · WindowsInstallersv0.1.44Live
ProjectEngiBoard Desktop
StackTauri 2 · Next.js · Supabase
TimelineApr 28 → May 4 · 4 weeks, 7h
Statusv0.1.44 · live in production
Read the full story

Tauri 2 + Next.js + Supabase. macOS and Windows installers. 44 releases tagged. 98 commits. Zero hires. Public on GitHub.

A native desktop tracker for engineers who run before/after photo reports on construction sites and production floors. Built first for the founder himself — then for two real Windows-only clients in production QA.

All screens

18 surfaces. One binary.

Login → projects → capture → annotate → track → review → export. No setup pages, no “advanced”.

18
surfaceslight + dark, Mac + Windows
All 18 surfaces

Every surface designed for one thing the engineer is doing right now. No configuration, no setup pages, no “advanced”.

  • 01 · Login
  • 02 · Main board
  • 03 · Project picker
  • 04 · Dashboard
  • 05 · Slideshow + pins
  • 06 · Annotation editor
  • 07 · Compare wipe
  • 08 · Dark mode
  • 09 · Dark dashboard
  • 10 · Dark picker
  • 11 · Dark login
  • 12 · Out-of-scope modal
  • 13 · Empty state
  • 14 · Profile
  • 15 · Sniper overlay
  • 16 · Paste mode
  • 17 · Status menu
  • 18 · Bulk select
Problem & solution

Camera roll → Telegram → Word. Done.

Every site visit leaked context: photos lost in chats, annotations far from the task list.

Camera roll›Telegram›Spreadsheet›Word›PDF→EngiBoard
01 · Task

Capture, mark, attach.

Native screenshot speed, Linear-style tasks.

02 · Problem

Four apps glued together.

Every handoff drops context.

03 · Solution

One binary.

Pin a comment to a pixel — not a timestamp.

Read the full story

The existing toolchain on every site visit was lossy and slow. Photos disappeared into chats, annotations lived in a different app than the task list, reports lost context the moment they were forwarded.

  • 01 · Task — one-purpose desktop. Capture, mark, attach. Native screenshot speed, Linear-style task structure, image-anchored discussions. Engineers stay in one app — not glued across four.
  • 02 · Problem — four apps glued with screenshots and prayer. Camera roll → Telegram → spreadsheet → Word → PDF. Every handoff drops context. Annotation tools live somewhere else than the task list.
  • 03 · Solution — one binary. Capture, annotate, track. Tauri-native overlay captures any region. Editor with six tools. Tasks grouped per project, eight color-coded statuses. Pin a comment to a pixel — not a timestamp.
EngiBoard main board: tasks grouped by week with before/after screenshots and inline chat
“The first tool that does the actual loop I’m doing on site, instead of three half-tools I have to glue together.”
Alex Stepikin · founder, designer, engineer
Capture flow

Region. Annotate. Attach.

Cmd+Shift+G from anywhere fires a transparent overlay. Drag, annotate, save into the before/after slot.

01

Capture

Native macOS / Windows region capture.

Sniper overlay: drag a region over any window
02

Annotate

Six tools, always on top.

Annotation editor with six tools
03

Attach

Back to the task, before or after.

Paste mode: choose the before or after slot
ArrowRectPenTextBlurHighlight
Read the full story

Cmd+Shift+G from anywhere fires a transparent fullscreen overlay. Drag a rectangle. Native macOS / Windows capture. Editor opens with the PNG ready, six tools live — arrow, rect, pen, text, blur, highlight. Save returns the annotated image to your selected before/after slot.

The board

Where the work lives.

Tasks grouped by project, typed inline — no modal, no double-click, no detour.

Board with bulk-selected tasks and a floating action bar
8
statusescolour-coded
  1. 01
    Inline task inputPer group, no detour.
  2. 02
    Multi-screenshotSeveral images per task.
  3. 03
    Rename, re-orderWithout leaving the board.
Read the full story

Sidebar groups tasks by project. Inline task input per group — no modal, no double-click, no detour. Eight statuses, color-coded. Multi-screenshot per task. Rename and re-order without leaving the board.

Image-anchored review

Pin to a pixel, not a timestamp.

Reviews live on the image. Click a pixel, drop a pin, write — threaded, many reviewers.

Lightbox · pins
Lightbox slideshow with comment pins on a fan blade image

Pins pulse orange while unreadThen turn blue with a number.

Compare wipe
Compare wipe: before and after stacked with one drag handle

Drag the lineSee the difference — no toggle.

Read the full story

Reviews live on the image, not in a separate thread. Open a screenshot in the lightbox — click any pixel — drop an orange pin — write a comment. Multiple reviewers, threaded. Compare wipe slider for before/after, drag-to-reveal.

Lightbox · pins — click a pixel, write a comment. Pins pulse orange while unread, turn blue with a number once seen. Right rail lists every comment with author, time, delete. Multiple reviewers, fully threaded.

Compare wipe — drag the line, see the difference. Two screenshots stacked, single drag handle. No flicker, no toggle, no “switch tab” — pure muscle memory. Works on any task with both before and after attached.

Tracking

Eight statuses. Two views.

Every colour survived ten rejections — none is decoration.

DoneProblemIn ProgressReviewInfo RequiredUpcomingNot RelevantInfo
Dashboard: project counts and status distribution
Status menu opened on a task
1
clickto move one task or many
Read the full story

Done, Problem, In Progress, Review, Info Required, Upcoming, Not Relevant, Info — eight statuses, every one earned its colour. Dashboard rolls up totals across projects; status menu lets you change one or many in one click.

Dashboard — rollup, not roll-call. Project counts, status distribution, top blockers. One screen answers: where is the team stuck? No drill-down before you’ve seen the whole field.

Status menu — one click to move anything. Right-click any task, change status. Bulk-select rows, change all of them at once. Eight colours that survived ten rejections — every one has a meaning, none of them are decoration.

Light — sunlit siteDark — office, evening, OBS
Main board in the light theme
Main board in the dark theme
Cross-platform

Same UX, any platform.

Mac M-seriesMac IntelWindows EXEWindows MSI
Read the full story

Mac M-series, Mac Intel, Windows EXE, Windows MSI. Shared HTML/CSS/JS frontend, Tauri 2 native shell. Dark mode toggles per surface, not per app. Tester complaints loop back into the next release tag.

Light theme — sunlit on a construction site. Default surface. Higher contrast on photos, easier on real-world lighting. Print preview matches what you see.

Dark theme — office, evening, OBS overlay. Designed for late-night triage and screen-recorded walkthroughs. Same content, deeper canvas, status colours hold their meaning either way.

Design language

Geist for product. Mono for system. Sky, amber, deep black.

Type
Aa
{ }

Geist 400–700 for UI; Geist Mono for timestamps, versions, hotkeys.

Palette
Sky#0EA5E9
Sky light#7DD3FC
Amber#FFC940
Black#0A0A0C
Rule

Amber lives on one status — “in progress” — because it earned it.

UI kit
EngiBoard UI kit: colour palette, typography, status pills
Type and palette in detail

Typography. Geist Sans across the entire app — a clean modern sans tuned for high-density product surfaces. Geist Mono for the parts where the system speaks back: timestamps, file sizes, version tags, hotkey hints.

  • Geist · 400 / 500 / 600 / 700 — primary UI. Tight tracking, neutral skeleton. From caption (10px) to display (96px).
  • Geist Mono · 400 / 500 — timestamps, version tags, file paths, command-line hints. Anywhere the system is precise.
  • Instrument Serif · italic — editorial accent, case study only: hero phrases, pull quotes, slow moments. Not in the app.

Palette. Sky-blue carries the brand and active states. Amber lives on a single status — “in progress” — because it earned it. Deep black grounds the canvas; everything else is system white-on-noise.

  • Engineer Sky #0EA5E9 — brand, active states, primary actions, links.
  • Sky Light #7DD3FC — hover, focus glow, subtle lift on hero gradients.
  • In-Progress Amber #FFC940 — one earned status pill. Used sparingly — never decoration.
  • Studio Black #0A0A0C — canvas. Lights down. Every screenshot starts here.
Process

Seven days, thirty-eight tags.

Each tag builds real binaries in CI. A tester complains in the morning, gets the fix after lunch.

Day 1 · Apr 28Tauri scaffoldv0.1.1 → v0.1.9
Day 2 · Apr 29Sniper overlayv0.1.10
Day 3 · Apr 30Annotation editorv0.1.11 → v0.1.12
Days 4–5Founder dogfoodfield test
Day 6 · May 3Sprint dayv0.1.13 → v0.1.24
Day 7 · May 4Final sprintv0.1.25 → v0.1.44
PublicLive44 releases
Day by day

Hourly cadence: each tag triggers a CI pipeline that produces real shipped binaries — Mac M-series, Mac Intel, Windows EXE, Windows MSI. A tester complains in the morning, gets the fix after lunch.

  • Day 1 · Apr 28 — Tauri scaffold. Skeleton, GitHub Actions pipeline. Native screencapture pivots before noon. v0.1.1 → v0.1.9.
  • Day 2 · Apr 29 — Sniper overlay. Custom transparent fullscreen, drag-region capture. Native quality, our control. v0.1.10.
  • Day 3 · Apr 30 — Annotation editor. Six tools — arrow, rect, pen, text, blur, highlight. Always-on-top, no focus pull. v0.1.11 → v0.1.12.
  • Days 4–5 · May 1–2 — Founder dogfood. Two days of real site walks. Specific complaints filed, not vague. Field test.
  • Day 6 · May 3 — Sprint day. Twelve versions in 24h. Inline tasks, multi-screenshot, PDF export, dark mode, RU/EN, lightbox pins. v0.1.13 → v0.1.24.
  • Day 7 · May 4 — Final sprint. Fourteen versions. Project picker, inline chat, compare wipe, OAuth retry, Windows clients on. v0.1.25 → v0.1.44.
  • Public — Live. Mac DMG · Mac Intel · Win EXE · Win MSI. All public on GitHub Releases. 44 releases.
Build

How it was made.

Blank repo to v0.1.44 in production. Solo founder + AI co-workers.

6d 7hrepo → production
8tools in the stack
  1. T
    Tauri 2 / RustNative shell, deep-link, plugins
  2. N
    Next.js · ReactWeb mirror, OAuth landing
  3. S
    SupabaseAuth, Google OAuth, DB
  4. ★
    Claude CodePrimary AI builder
  5. G
    GitHub Actions · Railway4-platform CI, web auto-deploy
Timeline and full stack

Six days, seven hours from blank repo to v0.1.44 in production. Solo founder + AI co-workers. Every release public on GitHub.

  • Day 1 — Tauri scaffold + CI · Apr 28
  • Day 2 — Sniper overlay · Apr 29
  • Day 3 — Annotation editor · Apr 30
  • Days 4–5 — Founder dogfood · May 1–2
  • Day 6 — Sprint (12 versions) · May 3
  • Day 7 — Final sprint (14 versions) · May 4
  • Tauri 2 / Rust — native shell, deep-link, plugins
  • Next.js · React — web mirror, OAuth landing
  • Supabase — auth, Google OAuth, DB
  • Claude Code — primary AI builder
  • GitHub Actions — 4-platform CI, every tag
  • Railway — web auto-deploy on push
  • Figma — architecture sketches only
  • Geist · Mono — type system

From blank repo to v0.1.44 — in 4 weeks.

One of seven projects shipped by Stepikin Studio in 2025–26 — built to test the studio thesis at the limit. The thesis held.

Questions

Can you design a desktop app for engineering or construction teams?

Yes. EngiBoard replaces camera roll, Telegram, spreadsheet and Word with one app for Mac and Windows: capture, pin a comment to a pixel, track and export a report.

How fast can you ship?

EngiBoard went from an empty repo to production in 4 weeks with 44 releases, designed and built by one person with AI agents.

Building a tool for
engineers or field teams?

I design and ship B2B tools for people on sites and production floors: capture, comment, track and export without the spreadsheet chain.

See all casesBook a free call