MS-004 · Software
Daily Dash
Overview
Daily Dash is a personal dashboard I started building in July 2026. It pulls the things I actually check every day into one place instead of five apps. I am building it with Claude Code, which is also how I built this portfolio, and learning web development as I go.
The goal is a dashboard that is fully functioning, safe, and practical enough that anyone could use it for free, with the ability to request more personalization features. Right now it is my own daily driver and not open to the public yet.
What it does
The home page is a summary of the day. It shows what is on the agenda, what is overdue, and how many open items each list is carrying.
Lists. A board of cards for to-dos, groceries, and school assignments. Items carry a priority and a due date, and they can repeat on chosen days of the week. A list can be shared with someone through a link.
Calendars. A month and week view that merges everything. It pulls my UF Canvas assignment feed and my Google Calendar automatically, so coursework shows up without me typing it in.
Fitness. A running ledger built on a credit system. Runs, rides, gym sessions, sports, and push-ups each earn credits, and the balance tells me how far ahead or behind I am.
Reminders. A Telegram bot sends a daily recap and nudges me when something is coming due, so I get the dashboard on my phone without opening it.
How it is built
Next.js and React on the front end, styled with Tailwind. Postgres through Supabase on the back end, with row level security so a user can only ever read their own rows. It deploys to Vercel automatically whenever I push to GitHub.
None of that stack was familiar to me when I started. Working with Claude Code meant I could build something real while learning what each piece does, rather than following a tutorial and stopping there.
What I have learned
Most of what I have learned came from things breaking in ways I did not expect. A database read silently stopped returning rows past a limit I did not know existed, and the page went blank with no error to point at. Two calendars kept duplicating themselves overnight because of how the database treats empty values in a uniqueness rule. A sync running on every page load made the whole app feel slow, and the fix was to stop doing work the user never asked for.
The pattern across all of them is the same. The symptom and the cause were nowhere near each other, and guessing wasted more time than reading did.
How it has changed
Two walkthroughs, eleven days apart. Putting them next to each other is the clearest picture of how the project actually moves, because almost nothing on the screen in the first one survived unchanged into the second.
August 2, 2026 · current
July 22, 2026
In July the whole app was one screen. A board of draggable cards holding lists, notes, and an overdue panel. It worked, but everything lived in one place and everything looked the same for everybody.
By August it had been pulled apart into tabs, each with its own home. A summary dashboard replaced the board as the landing page. Calendars arrived and started pulling in Canvas coursework and Google Calendar on their own. Fitness arrived with the credit ledger. Finances arrived with expense tracking and live market prices on a real chart. A Telegram bot started sending the daily recap and nudging ahead of due dates.
The bigger difference is that the second one bends to the person using it. Settings grew into five tabs. Calendars can be renamed, recolored, and dragged into the order you want. Individual tabs can be switched off if you do not want them. The fitness credit rules are set per user rather than fixed. The recap can be reshaped, and the background is a choice. The July build had one opinion about how it should look and behave. The August build asks.
None of that was planned up front. Each piece got built because using the thing daily made the gap obvious, which is the part I did not expect to be the most useful habit in the project.