3D Configurators
Proprietary Three.js software for interactive product configuration. Custom model loading pipeline with real-time hot-swapping, material editing, and dynamic camera controls.
Three.js WebGLFrontend Engineering Lead
Freelance quests completed solo
Proprietary Three.js software for interactive product configuration. Custom model loading pipeline with real-time hot-swapping, material editing, and dynamic camera controls.
Three.js WebGLModern Marzipano wrapper delivering immersive 360° environments with VR support, spatial audio, interactive hotspots, and seamless transitions between scenes.
Marzipano WebVRTransforms standard photographs into convincing 3D-like visuals using depth maps, parallax layering, and GPU-accelerated image processing in the browser.
Canvas WebGLNode.js + Express framework for building paywalled APIs. Handles authentication, subscription tiers, rate limiting, and automated billing integration.
Node.js ExpressCareer co-op timeline
Aristone
Leading a team of fullstack engineers building visually polished, highly functional mobile and web school & learning management systems. Working closely with business and designers to set new standards and deliver solutions that create meaningful change in the education industry.
React Native Tailwind React Node.js Nest.js Golang AWSIP Fabric
Contributed to the backend development of IP Fabric's network assurance platform, focusing on core functionality and the public API. Designed and implemented scalable, high-quality solutions using Node.js, ensuring seamless integration with client systems and supporting the platform's mission to redefine network automation in enterprise environments.
Node.js Express React WebSocketsBetsys
Delivered a high-quality backoffice application with strong test coverage, e2e tests, strict code standards, and minimal technical debt. After the company's restructuring, took on security-critical work including document verification logic and a new Login API spread across the entire ecosystem with improved security standards and better scaling.
Node.js Nest.js Angular PostgreSQL WebSockets SSEDrivvn
Created and maintained core applications for automotive projects running on Drivvn software. Our biggest client, the PSA Group, was expanding e-commerce services to Italy, France, Spain, and the UK — creating major challenges in software architecture and scalability.
PHP Symfony ReactBistro.sk
Reworked most frontend and backend services, migrating from a legacy proprietary framework to a standard REST API built on Symfony. Led the frontend transition to Vue.js — achieved gradually using Web Components — and set up CI/CD pipelines and Docker across the project.
PHP Symfony Vue.js DockerOpen source achievements unlocked
Git-integrated time tracking for developers. Automatic work-hour attribution from branch checkouts and reflog analysis — no timers, no manual input. Just code.
View on GitHub →Automatic token-refresh plugin for Axios. Intercepts 401 responses, queues failed requests, refreshes OAuth tokens, and retries them seamlessly.
View on GitHub →IntelliJ IDE plugin for collapsing verbose HTML attributes. Reduces visual clutter in template-heavy files with one-click folding.
View on GitHub →Tech talks and companion libraries exploring real-time image manipulation in the browser using Canvas and WebGL.
View on YouTube →Currently in development
macOS screen recording with multi-stream support. Capture individual windows, audio sources, and camera feeds as separate layers, then composite in post. Built with Swift and AVFoundation.
Almost Beta — 65%Like many devs, I forget to log daily activities. End of the month comes and I'm scratching my head trying to remember what I worked on three Tuesdays ago. It started as a simple branch-tracking tool — just to remember what I was doing each day. Then I realized: why not keep all hours logged locally in a git-like format and export them at the end of each month?
My first approach was post-checkout hooks with custom commits. Every time you switched branches, a hook would fire and create a tracking commit. Seemed clever until I learned post-checkout hooks are unreliable — they don't fire on all checkouts, can be skipped entirely, and conflict with other hooks people already have set up. Dead end.
Then it hit me: git reflog already records every checkout. Every single one. The data was always there — I just needed to parse it. The pivot to reflog parsing changed everything. More reliable, zero setup friction, no hook conflicts. You install hourgit, and it works with your existing repos immediately.
The current trade-off is memory. I haven't found the optimal fs reading approach yet, so all entries load into memory. But I benchmarked it and ~10,000 entries come out to roughly 200KB with the fs read taking about 0.3–0.5s. Good enough for now. I'll optimize when it actually becomes a problem.
What it can do today: automatic time attribution from checkouts, manual logging for meetings and standups, interactive reports with inline editing (vim-like hjkl navigation), multi-project support with per-project schedules (including rrules), PDF export, shell completions, and full cross-platform support.
What's next: rounding logged time to configurable intervals, using commits between checkouts as time block descriptions for better context, and export integrations to Jira, Tempo, and Clockify.
It's free, GPLv3. Check it out on GitHub or visit hourgit.com.