$ whoami

Janez Štupar

$ pwd

/home/janez/software-engineering/hard-parts

$ cat focus.txt

Founder and consultant building software where data, sync, privacy, integrations, and constrained runtimes get difficult.

local-first software / embedded applications / hard product work

Janez Štupar

I build and rescue software where the hard parts are data, sync, privacy, integrations, constrained runtimes, and keeping the thing alive after the first demo.

$ ls hard-parts

The Hard Parts

Selected work where the interesting part was not just shipping screens, but making data, devices, workflows, integrations, and operational edges hold together.

Lead Work

Trackself desktop app showing the main tracking view while not actively tracking
2022-11-01current founder product

Trackself

Privacy-first time tracking product

Privacy-first team time tracking for sensitive work, with desktop capture, portal review, encrypted task content, hosted sync, and self-hosted deployment paths.

Role: Founder and product builder, working full-time across product definition, local-first architecture, privacy model, sync/storage design, implementation, and operations.

  • Flutter
  • SQLite
  • Django
  • Dart
  • Go
  • PostgreSQL
  • Next.js
  • React Query
  • Tailwind
  • Cloudflare Pages
open entry
2026-06-12open-source sync/storage

drift_crdt

Open-source local-first database infrastructure

Open-source Dart package for CRDT-aware Drift databases, extracted from Trackself infrastructure and generalized for other Flutter/Dart applications.

Role: Authored the package as Trackself infrastructure, then put in the extra work to make it general and useful outside the product.

  • Dart
  • Flutter
  • Drift
  • CRDT
  • SQLite
  • PostgreSQL
open entry
Visionect Joan 13 Pro E Ink display product
2026-01-15E Ink product lineage

Visionect E Ink Product Systems

Embedded display product systems

Long-running E Ink product work with Visionect, from Wemar Nautipad and Geoffrey to later Joan and CMS display-unit applications.

Role: Early application engineer and recurring consultant across E Ink product applications, embedded display runtimes, device content, protocol integrations, and product-platform continuity.

  • E Ink
  • Duktape
  • React
  • Backbone
  • Django
  • Python
  • Tornado
  • SQLite
  • NMEA
  • SEATALK
open entry

Supporting Work

2018-09-19enterprise systems maintenance

HETA Asset Resolution

Enterprise document management systems

Lotus Domino consulting for internal HETA enterprise document management systems.

Role: Worked on and maintained internal enterprise document management systems where reliability, workflow continuity, and business operations mattered more than novelty.

  • Lotus Domino
  • Enterprise document management
  • Workflow systems
open entry
CrossPoint application screenshot
2019-12-17payments + launch website

CrossPoint

IoT automation platform

IoT and smart-device automation platform with integrations, a rule engine, and a user interface for controlling devices from one place.

Role: Joined an in-flight beta effort, shipped Stripe integration across frontend and backend, and built the beta launch marketing website.

  • Angular
  • Go
  • PostgreSQL
  • Stripe
open entry
4th Office application screenshot
2018-07-09offline sync architecture

4th Office

Offline-first messaging prototype

Web application packaged as a desktop app, expected to run online and offline with email, instant messaging, and proprietary API synchronization.

Role: Architected and implemented the browser-independent data layer, including metadata, text-message, and binary-object synchronization.

  • Electron
  • Angular
  • PouchDB
  • RxJS
  • TypeScript
open entry
Adthena application screenshot
2015-03-24frontend architecture upgrade

Adthena

Competitive intelligence SaaS

Competitive intelligence application for monitoring complete market landscapes, gap analysis, and share-of-voice trend reporting.

Role: Built frontend features and improved the application architecture by introducing Marionette, reducing callback-heavy flows, and adding gettext localization infrastructure.

  • Backbone
  • Marionette
  • d3
  • Highcharts
  • jQuery
  • gettext
open entry
Ralph and Russo website screenshot
2014-07-25SPA + CMS integration

Ralph & Russo

Fashion house website

Website for a haute couture fashion house, launched in summer 2014.

Role: Implemented the single-page application portion and integrated a WordPress CMS with a Marionette-based frontend.

  • Backbone
  • Marionette
  • CoffeeScript
  • Jade
  • SCSS
  • Bootstrap
open entry
Buzzmove website screenshot
2014-07-25booking UX refinement

Buzzmove

Removal marketplace

Marketplace for removal companies and consumers seeking removal services.

Role: Improved fidelity and UX for the Backbone-based booking flow, introduced better Backbone practices, and refactored key UI areas.

  • Java Server Pages
  • Backbone
  • SCSS
  • Bootstrap
open entry
Epek website screenshot
2014-07-25backend + payments

Epek

Web application

Online marketplace with a clean workflow, strong mobile support, and marketplace payments.

Role: Helped with backend development, SDLC, i18n/l10n know-how, REST API services, and PayPal Adaptive Payments integration.

  • Python
  • Go
  • Google App Engine
  • Selenium
  • Nose
  • Travis CI
open entry

$ cat about.md

About

I am a hands-on software engineer and product builder focused on systems that have to survive real use: local-first desktop apps, sync and storage infrastructure, embedded display applications, enterprise workflows, and data-heavy product interfaces.

My best work usually sits where product judgment and implementation details meet. I care about clear domain models, operational edges, privacy boundaries, and code that remains understandable after the first release.

  • Founder of Trackself, my main product work.
  • Recurring consultant on Visionect E Ink product systems.
  • Strongest fit: architecture plus implementation, especially when data, sync, integrations, or constrained runtimes matter.

const workingStyle = {

  shipProduct: true,

  ownTheEdges: true,

  hideComplexity: false,

  leaveItOperable: true,

};

$ tail archive.log

Archive