Next.js
Creator: Vercel
React framework used for routing, server rendering, static generation, metadata, and API routes in a single codebase.
This portfolio uses the App Router structure, where each route under src/app maps directly to a page experience. API routes in src/app/api aggregate GitHub and Vercel data so the client UI stays lightweight and consistent.
React
Creator: Meta
Component model for building interactive UI with stateful and declarative rendering.
The /git page uses React state and effects to stream commit lists, fetch status details, and drive the selected commit preview panel. The same approach powers interaction-heavy pages like /photography where hover, modal, and viewer states need to stay synchronized.
Tailwind CSS
Creator: Tailwind Labs
Utility-first CSS framework for rapid, consistent layout and visual composition.
Tailwind handles spacing scale, typography rhythm, responsive breakpoints, and interaction states (hover, opacity, transitions) across route UIs. In practice this keeps visual parity between /git, /ghorman, and the index page while still allowing route-specific components to layer in specialized behavior.
Vercel
Creator: Vercel
Hosting and deployment platform for build pipelines, production releases, and deployment telemetry.
Deployment and runtime hosting are managed on Vercel. The /git observability panel reads Vercel deployment APIs (token/project scoped) to surface success windows, median deployment duration, failure recency, and production share without requiring manual logging infrastructure.
GitHub APIs
Creator: GitHub
Repository, commit, deployment, and workflow data source used to power the changelog dashboard.
Server-side route handlers aggregate repository metadata, commit status checks, deployment records, release context, and language byte distribution. The frontend consumes normalized payloads so operational signals remain stable even if upstream GitHub responses vary.
AWS S3 + CloudFront
Creator: Amazon Web Services
Object storage and CDN delivery layer used for media assets, especially photography content.
Photography assets are stored in S3 and served through CloudFront URLs for global low-latency delivery. The photography system reads bucket structure at runtime using API routes, maps folder paths to areas/regions, and emits CDN-ready asset URLs so new uploads appear without redeploying application code.
AWS SDK for JavaScript v3
Creator: Amazon Web Services
Typed client SDK for querying S3 and other AWS services from server-side handlers.
Next.js API routes use @aws-sdk/client-s3 to list objects, resolve region folders, and produce structured photography manifests consumed by the globe UI. This keeps AWS credentials server-side while exposing only normalized JSON to the browser.
globe.gl + three.js + Turf.js
Creator: Vasturiano / Three.js authors / Turf maintainers
Visualization stack used for the /photography geospatial interface and point rendering.
globe.gl and three.js drive the interactive globe rendering pipeline, while Turf.js is used for geospatial sampling logic that supports the dot-matrix landmass treatment. This stack enables pin interaction, hover telemetry, and area-driven modal loading on a single route without custom WebGL plumbing.
EXIF.js
Creator: Jacob Seidelin and community maintainers
Client-side EXIF parsing utility for camera metadata extraction from image files.
The photography viewer uses EXIF extraction to surface capture metadata (camera, lens, shutter, focal length, ISO) as contextual technical data alongside images. This preserves image storytelling while exposing capture-level details for users who care about gear and settings.