Featured Skills: React, TypeScript, HTML/JSX, SCSS, Recoil, IDB-Keyval
I built Number Practice in React with TypeScript, leveraging Recoil for state management and IDB-Keyval for secure, offline storage. Designed to help kids confidently memorize and enter phone numbers or school IDs, the app mimics real-world devices like phone keypads and school POS systems. It offers feedback with confetti for correct entries and displays corrections for mistakes, creating a fun, supportive learning experience. The app prioritizes privacy (data stays on your device), works offline, and opens like a native app when saved to a home screen. Born from a real-world challenge my kindergartener faced, Number Practice blends playful engagement with practical skills, making it an inclusive and ad-free tool that empowers kids.
Featured Skills: Next, TypeScript, PWA, HTML/JSX, SCSS
I built Number Sorter using Next.js as an interactive, educational tool to help kids practice number sorting concepts like place value and greater than/less than. With a customizable interface, users can set the number of digits, define number ranges (including negatives!), and highlight the tens place to support learning. The drag-and-drop design makes sorting intuitive, while the Check button ensures mistakes are corrected before advancing, reinforcing understanding. As a progressive web app, it works offline, saves settings for seamless use, and opens like a native app when saved to a home screen. Born from a real-life need to help my first grader, Number Sorter is a free, accessible tool that turns learning into a fun, confidence-building experience for all kids.
Featured Skills: Next, TypeScript
Discover beautiful color combinations effortlessly with this upgraded tool I rebuilt in Next! Perfect for creative projects like designing websites, knitting, or selecting paint colors, it lets you choose a starting color and instantly generates complementary, split complementary, triad, analogous, and square combinations.
You can now save multiple color combinations, add and remove specific colors from each set, and include notes to keep track of ideas. Set any color as a background color behind the color wheels if your project has a specific background. Plus, I added a Random Colors page that generates unexpected palettes for fresh inspiration. With an improved interface, seamless color picking, and interactive features, this app makes exploring color even more fun and practical!
Featured Skills: Next, TypeScript
Homeroom Hub is a kid-safe, ad-free set of classroom helpers for elementary learners and their grown-ups. It bundles reading & lesson timers, a Merriam-Webster-powered dictionary/thesaurus tuned for grades 6-8, a Beyond-the-Page quick-link helper, and links to my practice tools - plus lots more tools coming soon! Everything is simple, distraction-free, and accessible - built to help kids stay focused while giving homeschool parents, caregivers and teachers fast, reliable tools that just work.
Under the hood, the app uses Next.js (App Router) with strict TypeScript, deployed on Vercel. UI is built with Mantine and Tabler icons, auth and data are handled by Firebase (Auth & Firestore), with a Realtime Database pipeline for centralized logging. Server Components are the default; Route Handlers use ISR with defined TTLs. Public endpoints include input validation; secrets are kept server-only; and security headers are configured. The codebase favors small, well-maintained dependencies and in-house utilities, with accessibility and performance treated as core requirements.
Featured Skills: React, Typescript, Redux, PWA, HTML/JSX, SCSS, IDB-Keyval
I built a sleek, feature-rich Task Manager Progressive Web App using React. Designed for maximum flexibility, tasks can be assigned to multiple categories, reordered via drag-and-drop, and zoomed into or collapsed for focused organization. Categories are also draggable for prioritization, creating a highly customizable experience. The app is optimized to work offline, saves data securely in IndexedDB, and functions seamlessly as a native app when downloaded. Built with React Router, context, custom hooks, portals, and suspense, it leverages the HTML5 Drag-and-Drop API for intuitive interaction, blending powerful functionality with a polished, user-friendly interface.
Featured Skills: React, JavaScript, Firebase, Fetch, HTML/JSX
I developed a custom sign-in and reporting app for a local teen center using React and Firebase to streamline student registration, sign-ins, and grant reporting. The app replaces outdated paper logs with a secure, efficient system that allows students to sign in and out in seconds using their student ID. Administrators can access real-time attendance data, generate detailed reports in seconds, and easily manage student records—all essential for grant applications.
Built with Firebase for secure data storage and authentication, the app ensures only authorized admin access, even on shared devices. Features like alphabetized search, paginated student records, and date-range reports were designed to save time and reduce errors. Usability was a priority: it's fast, intuitive, and responsive for use on Chromebooks or phones, and it minimizes database hits to optimize performance. This app has transformed the teen center's operations, saving them months of work and making it easier to secure funding—all while being loved by both students and administrators.
Featured Skills: React, JavaScript, API requests, HTML/JSX, SCSS, OAuth
Explore new artists and discover new music with this app! Log in securely with Spotify using OAuth, then search for an artist or song to see a list of similar artists and their genres. You can listen to their popular songs right in the app with a built-in music player or jump over to their Spotify page. The app also lets you explore related genres and keeps track of your recent searches so you can easily revisit artists you’ve discovered.
This app is built with React and pulls real-time data from Spotify's API. It offers a smooth, ad-free experience with thoughtful features like a sliding music player that stays out of the way when not in use. Whether you're clicking through similar artists or diving into new genres, it's the perfect way to browse music, find fresh sounds, and expand your library. I use it all the time to discover my next favorite artist!
Featured Skills: C++, Arduino, ESP8266
This WiFi-enabled temperature sensor was my introduction to physical computing, blending programming with microcontrollers to solve real-world problems. Designed to monitor fermenting beer, the sensor uses a waterproof probe to track temperature, uploading data to ThingSpeak.com and triggering IFTTT to send text alerts if the temperature goes out of range. An RGB LED provides instant feedback: green for good, red for too hot, and blue for too cold, making it easy to monitor without needing a screen. Buttons allow quick adjustments to the high and low temperature thresholds for different brews or stages of fermentation.
This project was both practical and fun, letting me explore the potential of IoT while ensuring the beer ferments perfectly. The result is a reliable system that keeps an eye on the beer even when no one else can. Full details are on Github, including a short demo video!