Features
More than a single function, less than a project. The range is large, but I'm trying to define a squishy breakpoint such that I can itemize and track things I've built and learned through.
switched from Supabase to Convex
By switching to Convex, I’m getting a setup that’s more convenient (no paused databases or manual reactivation), cheaper (paying for usage instead of per-project minimums and instances), and easier to work with—particularly with AI—because my schemas, business logic, and data access all live together in the codebase. While Supabase already handled infrastructure concerns like uptime and scaling, Convex simplifies the application data layer: I no longer need to design and maintain custom APIs, ORMs, request/response data fetching, caching, revalidation, or other middleware to keep application code and a separate database in sync. Instead, I'll now be using a tool purpose-built for application (OLTP) data, where schema, invariants, authorization, and business rules are coupled directly to the data, resulting in a simpler mental model, stronger correctness guarantees because they're structural, and faster iteration because fewer things to worry about.
created glossary
Created a space for me to capture all these new terms and concepts I'm continually learning. While looking into Convex, I learned of the terms OLAP vs OLTP and realized I definitely need a place to straighten this all out for myself. And server vs serverless, and similarly what Convex is doing to databases - there's a lot of terminology involved to get a grip on things.
created books page
Created a page to display books and guides I've put together. Currently there is one for Client-First, and one for CS50 which is a bit premature but I wanted to see more than one on the page. Card component created that takes props for individual book details. Card style inspired by the work of Veronika K. See the inspiration here.
support for multiple diaries
Created a "diaries" page and notebook-card component that accepts props for title, page link, and background pattern. This means I can create new notebook cards with different colors and titles, pointing to additional diaries. Replaced links in navs to point to this diaries page instead of the single diary of an aspiring programmer. This is to prepare for the creation of the diary of an aspiring marketer.
project tag on feature entries
I realized I wanted to be able to identify and indicate which project the feature belonged to. Great teachable moment to myself about "building up" from needs and solving problems. Just start things off simple, don't worry at the start about thinking everything out beforehand and perfectly predicting needs. Can always just improve things.
PWA
So cool! And simpler than I thought. I'm now able to download this site to my phone as a standalone app via "progressive web app" approach. Created the various image sizes required for icons on different devices. No prompt to download, this is just for me. I will do this also for the DP portal, and will create a pop-up prompt when merchants log in.
programmatic stat cards
Refactored the diary stat cards to be automatically calculated. Obviously this is what programming is all about, but I had started with just hard-coding the numbers. Now, features and hours-log entries each have their own modules in the content folder and the lengths of the object arrays are used for the stat cards. The entries count was already made automatic when converted to MDX files. Also created a projects module in the content folder to better organize things and have a consistent pattern.
color theme switcher
Created a color theme switcher button for the site. But instead of the typical light/dark themes, I decided to create 4 color themes more akin to ebook reader app options. The themes are "light", "paper", "stone", and "dark". You tap/click the icon to cycle through the themes, going from light to creamy to dark to high contrast dark.
MDX powered CMS
Refactored diary entries to be MDX files. Now I simply write an entry as a markdown file, upload it to the content folder, and it automatically becomes a diary entry and article.
simple blog site
Created this website. Started in v0 with some design ideas brainstorming. Mobile menu inspired by Tailwind spotlight theme. Homepage with project cards, project pages, placeholder "about" page, diary page with stats and entries list, article template, hours timeline, features timeline.
Pricing Calculator
Built a pricing calculator for Discount Payments as my CS50x final project. It uses interchange tables from the card networks to provide a transparent and comprehensive cost breakdown, and helps merchants understand payment processing fees. See a breakdown here.
MCC Search for Form Input
Built a searchable MCC (Merchant Category Code) selector as part of the pricing calculator. This took a solid few days—more than I had imagined—and serves as a practical example of a data build pipeline. It involves taking raw MCC data, running scripts to transform and enrich it, and then using the enriched dataset in the app. The selector provides instant search filtering so users can quickly find and select the right code.