Case Study · January 18, 2026

GatorDo

View live project →

Overview

GatorDo 🐊 is a simple but intentionally designed todo app that I built for my web development course I took at university. The goal of the project was not just to create a functioning CRUD app, but to think critically about user experience, authentication, and resilience in real-world web applications.

The app works fully in guest mode by default, using local storage, with optional sign-in for cloud syncing. This allows anyone to try the app immediately without creating an account, while still supporting authenticated users who want persistence across devices.

GatorDo is designed as a local-first application:

  • By default, todos are stored locally in the browser
  • Users can optionally sign in via email magic link using Supabase
  • When signed in, todos sync to the database
  • If Supabase is unavailable, the app automatically falls back to local mode without crashing

This approach ensures the app is always usable, even in demo or offline scenarios.

Tech Stack

  • Vite – Development server and build tool for fast iteration and optimized production builds
  • React – Component-based UI and state management
  • Supabase – Authentication (magic link) and database with row-level security
  • Netlify – Static hosting and continuous deployment

Authentication & Data Design

Authentication is optional and handled via Supabase magic links. When signed in:

  • Each user only has access to their own todos
  • Row-level security (RLS) policies enforce data isolation
  • Timestamps are stored for creation and completion

UX & Interaction Details

Small details were intentionally added to improve usability:

  • Hovering over a todo shows when it was created and, if completed, when it was finished
  • Completed todos are sorted by most recent completion
  • Completed items can be shown or hidden with a simple toggle
  • A celebration animation for task completion
  • Logged-in users see a subtle greeting with their email

What I Learned

This project helped me think beyond just “making it work”, I focused on:

  • Designing for failure states
  • Separating core functionality from optional features
  • Balancing simplicity with thoughtful UX
  • Implementing authentication without making it mandatory
  • Understanding how build tools, hosting, and client-side apps fit together

Next Steps

Some things I’d like to add in the future:

  • Syncing local todos to the cloud after sign-in
  • Dark Mode
  • Fun motivational pop ups

Live Project: gatordo.netlify.app
Source Code: https://github.com/samkitkat/gatordo

Tags: Vite, React, Supabase, Netlify