Projects
Nuxt + Sanity Performance and Core Web Vitals Overhaul
Corporate Project
Three-month performance sprint (Oct-Dec 2025) on an FDA-regulated pharma marketing site built with Nuxt 4, Sanity, and Vercel. Closed 18+ optimization PRs against a September baseline audit. Removed unused WebGL/GLSL bundling, moved GSAP and Google Maps off the global bundle, and converted decorative assets to WebP. Replaced an ad-hoc 39-line lazy-loader with NuxtImg/Sanity provider integration site-wide across ~20 components in a single 66-file PR, restoring responsive sizes, WebP auto-format, and below-fold lazy loading. Split homepage and slug-page GROQ queries into above-the-fold critical and below-the-fold lazy buckets across 9 commits, shrinking the blocking payload that gated LCP on every CMS-driven page. Restructured the full Aeonik Pro font family into a subsetted woff+woff2 layout, added Anaheim with Latin, Latin-Ext, and Vietnamese subsets, and preloaded above-the-fold weights from the Sanity CDN. Configured Vercel edge caching for videos, PDFs, images, fonts, and captions with 7 to 30 day TTLs. Diagnosed and shipped a 4-commit Core Web Vitals fix (prerender/ISR conflict, browser cache headers, animation threshold, asset caching) that moved all 10 indexed URLs in Google Search Console from 'Needs improvement' to 'Good' within 48 hours.
- Nuxt.js
- Vue
- Sanity
- GROQ
- TypeScript
- Vercel
- ISR
- Core Web Vitals
+9 more
- Web Performance
- WebGL
- GSAP
- WebP
- Lazy Loading
- Font Subsetting
- Edge Caching
- CDN
- Google Search Console
Sanity-to-Vercel ISR Revalidation Webhook
Corporate Project
Built an HMAC-verified Sanity webhook to Vercel ISR revalidation route on a Nuxt 4 marketing site. Replaced time-based revalidation with on-demand invalidation, cutting content publish-to-live propagation from up to 60 minutes down to 2-3 minutes and saving an estimated $40/month in ISR write costs. Included signature verification and selective path invalidation driven by the Sanity document type and slug.
- Sanity
- Vercel
- ISR
- Webhooks
- HMAC
- Nuxt.js
- TypeScript
- Node.js
Production Support for an FDA-Regulated Pharma Marketing Site
Corporate Project
Ongoing 24/7 two-shift coverage rotation on a Nuxt 4 + Sanity + Vercel pharma marketing site under FDA-regulated content constraints. Sustained 100% production uptime since November 2025 and a Sentry performance score of 93 (7-day rolling) by January 2026. Diagnosed a 5-day silent GA4 tracking blackout (CSP blocking regional endpoints, missing nonce on inline gtag init), rebuilt CSP with wildcards, wired violations to Sentry, and added a Playwright check asserting window.gtag on every merge. Audited 1.66 TB of monthly Vercel egress and identified hardcoded MP4 patient videos as the dominant cost driver.
- Nuxt.js
- Sanity
- Vercel
- Sentry
- Playwright
- Content Security Policy
- Google Analytics 4
- Production Support
+2 more
Maintenance Agents
Personal Project
Autonomous monitoring system for client websites. Scheduled agents built with Bun and Croner pull data from Sentry, Vercel, and Sanity, hand it to Claude for analysis via the Claude Code CLI (no API key, leveraging the Claude Pro/Max subscription), and post Telegram alerts when something needs attention. Agents are strictly read-only observers; any remediation is left to human approval. The suite covers Sentry triage, dependency hygiene, vulnerability scanning, security-header posture (CSP, HSTS, X-Frame-Options), broken-link patrol, asset-weight audit, Sanity housekeeping, and uptime monitoring. A Hono dashboard provides run history and status. Deployed on a Hetzner VPS managed with PM2.
- Bun
- Hono
- TypeScript
- PostgreSQL
- Claude Code CLI
- AI Agents
- Cron Scheduling
- Sentry
+7 more
- Vercel API
- Sanity
- Telegram Bot API
- PM2
- Hetzner
- Observability
- Zod
HelloSafelyFed
Personal Project
View website: HelloSafelyFed
Hub-and-spoke food-safety platform that hosts multiple consumer-facing tools (menu-decoder, dishscout, tinyplates) under a single Google OAuth + magic-link auth, shared Stripe billing, and a credit-based API gating model. Built as a Bun monorepo with Vertical Slice Architecture on the backend: Express 5 with per-feature modules, a static Astro + Vue (TanStack Query) frontend, an Expo React Native shell, and a shared package layer (@repo/api-types, @repo/db, @repo/config) that prevents the data layer from leaking into the contract layer. Ships with custom architecture audit scripts (VSA cross-slice violations, FCIS purity, code-entropy) that run as part of the build pipeline. PostgreSQL + Drizzle, Redis for sessions and rate limiting, deployed via PM2 on a shared Hetzner VPS.
- Bun
- Monorepo
- Express
- Astro
- Vue
- TanStack Query
- TypeScript
- Vertical Slice Architecture
+11 more
- PostgreSQL
- Drizzle ORM
- Redis
- Stripe
- RevenueCat
- Google OAuth
- Magic Link Auth
- React Native
- Expo
- PM2
- Architecture Audits
Shop Appforgelabs
Personal Project
View website: Shop Appforgelabs
Digital storefront for templates and downloadable products with both one-time purchases and a credit-based top-up model. Stripe-backed checkout for products and credit packs, subscription support, signed download URLs for owned products, and per-IP API rate limiting. Categorized product catalog (templates section and category index pages) and a blog with category routing for SEO. Built as a Bun monorepo: Express 5 backend with per-feature slices (auth, credits, downloads, owned-products, payments, rate-limit), static Astro + Vue frontend, PostgreSQL + Drizzle, Redis-backed sessions and rate limiting, PM2 on a Hetzner VPS.
- Bun
- Monorepo
- Express
- Astro
- Vue
- TypeScript
- PostgreSQL
- Drizzle ORM
+9 more
- Redis
- Stripe
- E-commerce
- Credits System
- Subscriptions
- Rate Limiting
- Signed URLs
- PM2
- Hetzner
Vsevochart (Vampire Survivors Companion)
Personal Project
View website: Vsevochart (Vampire Survivors Companion)View repo: Vsevochart (Vampire Survivors Companion)
A companion chart for the videogame Vampire Survivors, showing weapons, passives, and evolution paths in a single searchable view. Around 20,000 monthly visitors. Built with Next.js 15, React 19, Tailwind 4, and Zustand, with Fuse.js powering fuzzy search across hundreds of game items. Game art is pipeline-converted from PNG sprite sheets into CSS background-position icons at build time, keeping the runtime asset footprint small. Hardened with a strict Content Security Policy, X-Frame-Options, and Referrer-Policy headers.
- React
- Next.js
- TypeScript
- Tailwind CSS
- Zustand
- Radix UI
- Fuse.js
- Vitest
+2 more
Elden Survivors
Personal Project
View website: Elden SurvivorsView repo: Elden Survivors
A 'Bullet Heaven' (Vampire Survivors-style) roguelite built on a custom game engine. Auto-firing weapons, horde survival, and RPG stat progression, rendered as code-drawn neon geometry directly on HTML5 Canvas with no graphics library. The engine runs in two modes from the same code: a browser canvas renderer for play, and a headless renderer that runs the full simulation in Node, enabling automated balance testing via Monte Carlo runs and performance benchmarking outside the render loop. Built with React 19, TypeScript, and Vite, with Tweakpane for runtime tuning and dependency-cruiser to enforce module boundaries.
- React
- TypeScript
- Vite
- HTML5 Canvas
- Game Development
- Custom Game Engine
- Headless Simulation
- Performance Optimization
+3 more
Shared Infrastructure Platform
Personal Project
Multi-tenant persistence layer that hosts every personal and client application on a single Hetzner VPS, keeping per-project hosting cost near zero. Postgres 18 and Redis 8 run in Docker with ports bound to 127.0.0.1 only; remote admin goes through SSH tunnels rather than exposed ports. A single provisioning script (create-app-db.sh) generates a per-app Postgres user, database, and random password and returns a ready-to-use DATABASE_URL; each app is assigned a distinct Redis DB index for isolation. Hard memory caps (1.5G Postgres, 512M Redis) prevent any one app from starving the others. Includes a documented disaster-recovery runbook (pg_dumpall + clean reinit + restore) and an in-place minor-version upgrade path. Powers Maintenance Agents, HelloSafelyFed, Shop Appforgelabs, and several other projects on the same machine.
- Docker
- Docker Compose
- PostgreSQL
- Redis
- Multi-Tenancy
- VPS Operations
- Bash Scripting
- SSH Tunneling
+5 more
- Disaster Recovery
- Linux
- Hetzner
- Cost Optimization
- DevOps
Income Statement
Personal Project
Personal finance snapshot tool. A CLI command pulls balances from Mercury, Wise, Kraken, Interactive Brokers (Flex Query), and CoinGecko for crypto pricing, converts everything to EUR, and persists each snapshot in PostgreSQL via Drizzle. Accounts without automated fetchers (Santander, Degiro, and similar) fall back to an interactive terminal prompt during the snapshot run, so a single command captures a full picture across automated and manual sources. A Vue 3 frontend backed by a Hono API charts the time series. Each provider's quirky response shape is parsed and normalized through Zod schemas.
- Bun
- Hono
- TypeScript
- Vue
- PostgreSQL
- Drizzle ORM
- Tailwind CSS
- Vite
+4 more
- Zod
- Financial APIs
- Crypto
- CLI Development
Rico Rico
Personal Project
View website: Rico RicoView repo: Rico Rico
Rico Rico is a demo frontend for a restaurant-reservation booking platform that connects diners with its partner restaurants. The site is built with React/Next.js with Typescript, Mantine and TailwindCSS, and uses Supabase for database and authentication. Images for restaurants are generated using Stable Diffusion models. Integration with the Storyblok CMS allows editors to create custom landing pages for restaurants
- React
- TypeScript
- Next.js
- Tailwind CSS
- Mantine
- Storyblok CMS
- Supabase
- AI image generation
+1 more
Telegram AI Bot Project Bulldozer
Personal Project
View website: Telegram AI Bot Project Bulldozer
The Bulldozer Telegram bot is a multi-functional chatbot integrated with Telegram, OpenAI, Stripe, and Cloudflare. It handles user conversations, subscriptions, and invoicing. It supports conversation aware chat and images. It is deployed via Cloudflare Workers and connects to a SQLite database
- Telegram Bot Development
- TypeScript
- Stripe Integration
- OpenAI Integration
- Serverless Architecture
- SQLite
- Webhooks
- Cloudflare Workers
+6 more
- JavaScript
- API Development
- Cloudflare D1 Database
- Ngrok
- Zod
- DevOps
React Katas AI Maker
Personal Project
View website: React Katas AI MakerView repo: React Katas AI Maker
React Katas AI Maker is an app that takes React docs as input, gives the user a few options and outputs the full code for an AI generated React Kata, including final code, starting code and README file, to practice the concepts.
- React
- Next.js
- Tailwind CSS
- TypeScript
- Vercel
- shadcn/ui
- OpenAI API
Checklist App for Elden Ring
Personal Project
View website: Checklist App for Elden RingView repo: Checklist App for Elden Ring
A personal project built from scratch with Next.js, React and Tailwind CSS, with currently around 100 daily users. It shows a checklist of items for the videogame Elden Ring. The user can create a profile and persist the checked items. The app is fully client side so the data is stored in the browser.
- React
- Next.js
- Tailwind CSS
- TypeScript
- Vercel
- PWA
Improving Accessibility and Styles of a PHP Website
Corporate Project
This is a website to view and publish data samples related to scientific publications. As the front-end and accessibility developer, I performed accessibility audits, created GitHub issues, and fixed existing issues. I also updated the admin pages from legacy to modern styles and updated the style guide to include these updates. Finally, I revamped and improved the accessibility of a Vue widget used to upload large files.
- HTML
- CSS
- Javascript
- Accessibility
- PHP
- jQuery
- Bootstrap
Travel Booking Websites Improvement
Corporate Project
Onboarded as a front-end developer, I championed major improvements in the Nuxt.js a codebase for travel website allowing package bookings. I targeted large, complex components and initiated a shift towards smaller, single-responsibility modules, vastly enhancing code clarity and maintenance. I corrected Vuex store misuses, transitioned actions to getters, and refactored while shipping features delivery timelines. I delivered features such as advanced web search filters and dynamic campaign pages, boosting user experience. I also filled gaps in end-to-end testing, solidifying the codebase against potential bugs. The engagement culminated in a handover to a new developer, leaving behind a substantially improved and streamlined codebase.
Improving Accessibility in a React App
Corporate Project
This project involved improving the accessibility of a React app for a client. After an initial accessibility audit, we identified several tickets that needed to be fixed. I worked on these tickets in a separate branch and made sure to submit pull requests that were easy to understand and review. Once the important tickets were completed, I conducted a full accessibility audit of the app to identify additional issues. I grouped these issues into new tickets and prioritized them based on their importance. Then I worked on the most important tickets to fix them. As a result, the app became fully accessible, and a second accessibility audit resulted in essentially zero issues reported. My contributions to this project helped ensure that the app was usable and accessible to a broader audience.
- React
- TypeScript
- JavaScript
- Accessibility
- WCAG 2
- HTML5
- CSS
- Sass
+1 more
Habits App
Personal Project
View website: Habits App
A web app built with React, Firebase, TailwindCSS, and Mantine.dev and bootstrapped from my React starter template. The server state was handled with React-Query, and the global client state was conducted with Redux Toolkit. It allows the user to schedule habits. For example, the user may create a routine titled 'water the plants' with a recurrence of one day.
- React
- TypeScript
- Firebase
- Mantine
- Redux Toolkit
- Tailwind CSS
- Vite
- ESLint
+1 more
Weather Wardrobe Wizard
Personal Project
View website: Weather Wardrobe WizardView repo: Weather Wardrobe Wizard
The Weather Wardrobe Wizard sends users weather forecasts and corresponding clothing suggestions. Users can toggle between metric and imperial units, list and image view of clothing, and light and dark themes. Selections are locally stored for guest users, while signed-in users have persistent data stored in Firebase. Premium users enjoy AI-powered packing recommendations from OpenAI. The application was developed with Next.js, React, TypeScript, and Zustand and combines weather forecasts with clothing advice. OpenWeather API powers the real-time data, and the UI is crafted with Chakra UI. Firebase Firestore handles real-time database updates, while Stripe facilitates payments for premium services. Multi-language support and error tracking with Sentry are other key features.
- React
- TypeScript
- Next.js
- OpenAI API
- Chakra UI
- Zustand
- React Query
- Immer
+9 more
- React Hook Form
- Firebase
- internationalization
- Recharts
- Stripe
- Sentry
- Jest
- Testing Library
- Playwright
Trello Scope Tracker
Personal Project
View repo: Trello Scope Tracker
A cloud function deployed on AWS with the serverless framework intercepting webhooks from Trello. When a Trello card is moved to a specific list in the Trello board, the cloud function receives a webhook that triggers a zap from Zapier. This zap appends a value to a Google Sheets spreadsheet.
- Serverless
- Javascript
- Node.js
- Google Sheets
My Personal Website
Personal Project
View website: My Personal WebsiteView repo: My Personal Website
A website built in Next.js in static site generation mode, enabling loading times to speed up. The site is styled using Tailwind CSS and Storyblok CMS as a content editor, and it is deployed to Netlify.
- React
- Next.js
- Tailwind CSS
- Storyblok CMS
- Netlify
Vue Admin Dashboard Maintenance
Corporate Project
Contribution to the migration of an admin dashboard from Backbone to Vue 2. Maintained the project for two years. The admin dashboard was a complex web app whose main two features were managing the landing page content where users could apply and managing the applicants themselves through multiple application stages.
- Vue
- Vuex
- Vue Router
- HTML
- CSS
- JavaScript
Content Editor Dashboard
Corporate Project
Contributed to creating a content editor dashboard powered by Vue 3 and Vite. The dashboard was used to create and edit new entries in the database and set them as "published." My main contribution was to develop the form to interact with those entries.
- Vue
- Vite
- Tailwind CSS
- JavaScript
- HTML
- CSS
Landing Page Editor
Corporate Project
A Nuxt component library built for Jobsrepublic was integrated with the Storyblok CMS so that content managers could create and edit new landing pages from scratch. Every component included team brainstorming with the content creators to cater to their needs, a development phase and accessibility, and performance and SEO audit to achieve a high lighthouse rank. Changes requested by the team were implemented often within the same day. Tailwind CSS was used for styling, and the UI design was adapted from that provided by the Tailwind UI template library. Each landing page was its own multipage site.
- Nuxt.js
- Vue
- Tailwind CSS
- Storyblok CMS
- HTML
- CSS
- JavaScript
Multi-site Codebase Maintenance
Corporate Project
Maintained a multi-site codebase built with Nuxt.js. One of these sites was a big portal with a large traffic of up to 100,000 monthly visitors. Evolved the codebase, adding new pages, implementing design changes, improving accessibility, performance, and creating a more SEO-friendly URL structure with crawlable pagination and performance.
- Nuxt.js
- Vue
- Bootstrap
- Storyblok CMS
- HTML
- CSS
- JavaScript
Conversion Tracker App
Corporate Project
A single-page application built for Jobsrepublic, with data visualization related to social media campaigns and landing pages, namely, KPIs of conversion funnels, plots of a magnitude versus time, and tabular data. The app was built from scratch to production-ready with Vue 2, Auth0 for authentication, multi-language, and E2E tests with the TestCafe testing library. The data was consumed from a REST API built by the back-end team. The layout used a customized Vue Bootstrap theme. At the start of the project, coding best practices were established and documented.
- Vue
- Bootstrap
- Auth0
- JavaScript
- HTML
- CSS
- i18n
- TestCafe
+1 more
AthleanX Home Workout App
Personal Project
View website: AthleanX Home Workout AppView repo: AthleanX Home Workout App
A progressive web application for mobile devices that helps with workouts at home. The app is a static single-page application developed with Vue 2 that behaves like a native mobile app. I designed and created the UI from scratch using Figma and Tailwind CSS.
- Vue 2
- Tailwind CSS
- Figma
- Vuex
- Vue router
- ESLint
- PWA
- UI Design
+3 more
- Mobile Web Development
- Frontend Development
- ECMAScript (ES6)