Featured Projects
Explore my complete portfolio of projects, from AI/ML applications to full-stack web development.
6 projects • Updated regularly

MyISO - Photographer Network
A full-stack photographer marketplace and social platform featuring real-time messaging, Stripe payments, Cloudinary image galleries, and comprehensive event management capabilities.
MyISO - Photographer Network
My-ISO is a modern photographer marketplace that connects photographers with clients through an intuitive social platform. Built with Next.js 16, the application leverages end-to-end type safety through tRPC and Prisma to deliver a robust, scalable solution. The platform features a sophisticated image management system powered by Cloudinary, real-time messaging for photographer-client communication, and integrated Stripe payment processing for subscription plans. Users can discover photographers through advanced search functionality filtering by location, style, and availability, while photographers showcase their work through rich portfolio galleries. The tech stack includes PostgreSQL for data persistence, NextAuth.js for secure authentication, Mantine UI for components, and Tailwind CSS for styling, with additional integrations for Supabase storage, Postmark transactional emails, and PostHog analytics. The application demonstrates modern full-stack development practices including strict TypeScript typing, custom Result types for error handling, server/client component separation following Next.js App Router conventions, and comprehensive API design patterns. Features include user profiles, favorites, event creation and management, messaging threads, and a tiered subscription system—all backed by a fully type-safe API layer that ensures reliability and maintainability across the entire application.

AppTrack
AppTrack is a full-stack SaaS application that combines job application tracking with AI-powered career coaching, built with Next.js, Supabase, and OpenAI.
AppTrack
AppTrack is a production SaaS platform I built to help job seekers manage their job search more effectively. The application provides a centralized hub for tracking applications through their lifecycle—from initial submission through interviews to offers—with interactive Sankey chart visualizations that show conversion rates at each pipeline stage. The premium tier integrates OpenAI's GPT-4o-mini to deliver AI-powered features including resume analysis, personalized interview preparation with STAR-format guidance, custom cover letter generation, job fit scoring, and interactive career advice. The technical stack showcases modern full-stack development practices: Next.js 15 with the App Router and React Server Components, Supabase for PostgreSQL database and authentication, Stripe for subscription billing with webhook handling, and Upstash Redis for rate limiting. The architecture emphasizes separation of concerns through dedicated service layers, comprehensive API routes with permission middleware, and type-safe validation using Zod. Notable implementation details include multi-format resume parsing (PDF/Word), a tiered permission system gating AI features, WCAG AA accessibility compliance with automated testing, and PostHog analytics integration. The codebase follows production-ready patterns including centralized error handling, content sanitization with DOMPurify, and comprehensive logging via Winston with Axiom integration.

AI-rtic Phone
A web game where AI models play telephone with images, building chains of text-to-image generators and vision analyzers, then watch as an initial prompt transforms through each AI's interpretation.
AI-rtic Phone
AI-rtic Phone reimagines the classic telephone game for the AI era. Players construct a chain of AI models—alternating between text-to-image generators (FLUX, Stable Diffusion, Imagen) and vision analyzers (GPT-4o, Gemini, Claude)—then provide an initial prompt and watch the chaos unfold. Each model interprets the previous output, generating new images or descriptions that drift further from the original, often with entertaining and unexpected results. The game features a drag-and-drop chain builder with real-time validation, shareable results with auto-generated social previews, and a BYOK (Bring Your Own Key) model that lets users connect their own Replicate API token for cost-free hosting. Built with a modern TypeScript stack, the project leverages TanStack Start for full-stack React with SSR, Cloudflare Workers for edge computing, D1 for database persistence, and R2 for image storage. Notable technical implementations include an intelligent Replicate API integration with exponential backoff retries, a model-agnostic vision input formatter that adapts to different provider schemas (Google, OpenAI, Anthropic), IP-based rate limiting, and automatic image caching to prevent URL expiration. The architecture prioritizes simplicity and cost efficiency—using polling over WebSockets and user-provided API tokens to enable free operation while maintaining a polished user experience.

AI Helmet Generator
An AI-powered web application that generates custom helmet designs
AI Helmet Generator
Helmet Generator is a full-stack web application that combines AI image generation with real-time 3D graphics to create immersive, interactive helmet visualizations. Users upload a headshot, describe their ideal helmet design (or choose from presets), and the app orchestrates multiple AI models via Replicate—generating the helmet image, removing backgrounds, and creating depth maps—all processed in parallel for optimal performance. The result is an interactive 3D scene where the helmet responds to cursor movement with fluid parallax effects, powered by custom GLSL shaders that implement depth-based displacement, velocity-responsive blob masking, and temporal trail persistence. Built with Next.js 16, React 19, TypeScript, and Three.js, the application features a sophisticated rendering pipeline with dual-layer depth parallax, real-time adjustment controls for positioning and visual effects, automatic image rotation detection and correction, and the ability to export the entire interactive experience as a standalone HTML/JS/CSS package. The architecture demonstrates advanced patterns including parallel API orchestration, custom shader development, canvas-based image processing, and a development mode that bypasses AI generation for rapid iteration.

Hexle
A React SPA inspired by Wordle that gives players 6 changes to guess the daily hex code.
Hexle
Hexle is a web-based daily puzzle game that challenges players to guess a hexadecimal color code in six tries or fewer. Inspired by the viral success of Wordle, the game provides real-time feedback on each guess—indicating whether characters are correct and in position, present but misplaced, or not in the code at all. The application features a responsive design optimized for both desktop and mobile, complete with an on-screen hexadecimal keyboard and full physical keyboard support. The project is built with React and TypeScript, utilizing styled-components for CSS-in-JS styling. Key technical implementations include a custom useStickyState hook for localStorage persistence that preserves game progress across sessions, a sophisticated character-counting algorithm for accurate feedback on duplicate characters, and deterministic daily puzzle generation that ensures all players receive the same challenge each day without requiring server-side logic. The app also tracks player statistics including win percentage and streaks, supports native Web Share API integration for social sharing with emoji-based result visualization, and is configured as a Progressive Web App for standalone installation.

PS5 In-Stock Notifier
An automated monitoring system built with TypeScript and Node.js that tracks PlayStation 5 availability across major retailers and delivers instant SMS notifications when stock becomes available.
PS5 In-Stock Notifier
PS5 Stock Bot is a real-time inventory monitoring application developed to solve the challenge of tracking high-demand product availability during the PS5 shortage. The system implements a modular, interval-based polling architecture that periodically queries multiple retailer websites (Target and Best Buy) to detect stock changes. Built with TypeScript for type safety and maintainability, the bot uses Axios for HTTP requests and integrates with the Twilio API to deliver instant SMS alerts when a PlayStation 5 console becomes available for purchase. The application features a plugin-style architecture where each retailer is implemented as a separate module with its own stock-checking logic, making it easily extensible to support additional stores. The bot intelligently manages notification state to prevent alert fatigue, only sending messages when stock status actually changes from out-of-stock to in-stock. With configurable polling intervals via environment variables, comprehensive error handling, and detailed logging, the system provides a reliable automated solution for monitoring scarce inventory across multiple online retailers.