Selected Work

Full-stack application

GoalGenius

A goal-tracking application that connects goals, milestones, todos, check-ins, and persisted user data.

Role
Full-Stack Developer
Project type
Full-stack application
  • Next.js
  • TypeScript
  • Cloudflare D1
  • Drizzle ORM
  • Better Auth
GoalGenius dashboard showing goals, progress, milestones, notes, and todo summaries

Overview

Problem and context

Goal tracking becomes difficult when goals, milestones, tasks, notes, and progress check-ins live in disconnected workflows. The application needed a coherent data model and user-specific persistence rather than isolated browser state.

What was built

GoalGenius is a Next.js application with authenticated dashboards, API routes, relational data stored in Cloudflare D1, and responsive interfaces for managing goals, milestones, todos, notes, and check-ins.

My Contribution

  • Built the product across the Next.js interface, API routes, persistence layer, authentication, and Cloudflare deployment path.
  • Modeled goals, milestones, todos, notes, check-ins, users, sessions, and related indexes with Drizzle ORM for Cloudflare D1.
  • Implemented authenticated JSON endpoints and product interfaces for creating, updating, and reviewing user-owned data.
  • Built responsive dashboard and management views around the related goal-tracking workflows.

Engineering

Relational persistence

Cloudflare D1 stores user-owned application records. Drizzle schemas define goal, milestone, todo, note, check-in, session, and account data, including the goal-to-milestone relationship and indexes used by user-scoped queries.

Authentication and API boundaries

Better Auth handles authenticated sessions and OAuth providers. Next.js API routes expose JSON operations for the product entities and return explicit HTTP status codes for validation, authorization, missing records, and server failures.

Edge deployment

The application is deployed to Cloudflare Workers through OpenNext, keeping the Next.js application, API handling, and D1 access on the same deployment platform.

Challenges

Protecting an authenticated application at the edge

Problem
The public Worker exposes application and data routes, so automated scanner traffic and unauthenticated API requests could consume runtime work before application authorization ran.
Solution
Application-level session and authorization checks remain authoritative, while a hostname-, path-, and method-scoped Cloudflare WAF policy rejects clearly invalid traffic earlier and rate-limits authentication starts.
Tradeoff
The route allowlist must be maintained alongside application routes and deployed with route changes so legitimate additions are not blocked.

Outcome

  • Delivered authenticated goal, milestone, todo, note, check-in, calendar, and analytics workflows.
  • Established persistent user data with explicit schemas and migrations instead of browser-only storage.
  • Published the application and source repository for direct inspection.

Tech Stack

  • Next.js
  • React
  • TypeScript
  • Cloudflare D1
  • Drizzle ORM
  • Better Auth
  • Cloudflare Workers