Skip to content

Latest commit

 

History

History
87 lines (55 loc) · 2.7 KB

README.md

File metadata and controls

87 lines (55 loc) · 2.7 KB

My photography portfolio with galleries, tags, folders, and a globe 🌎

Setup

The prerequisites are Node >= 20 and pnpm >= 8.

First, install the dependencies:

pnpm install

Run the development server:

pnpm dev

Open http://localhost:3000 to see the app!

Technologies

Development

The project is written in TypeScript, using Zod, Tailwind, and Next.js.

Visualization

Globe.GL for the homepage globe and cobe for the about page globe

d3-geo for globe data

three for scene creation

Images

PhotoSwipe for image lightboxes

Masonic for masonry layouts

Pig for image grid layouts

cwebp for compressing .jpg to .webp images. See scripts/webp.sh for details regarding image optimization.

Hosting

The Next site is statically exported and hosted on a GitHub Pages site using GitHub Actions.

All assets are stored on Contentful and fetched from their GraphQL endpoint.

Schema

Photo Albums

This model refers to the albums featured on the front page, titled by their region.

Special albums on the front page like Music can exist without coordinate data if using type: custom.

Field Contentful Type
title Short text
photos Media
color Short text
type Short text: Enum<[location, custom]>
description Long text
date Short text
lat Decimal
lng Decimal
locations JSON: Array<{ lat, lng, description }>
order Decimal

For more information, see the album types. Note this field originally had ID photoGallery.

Photo Folders

This model refers to the optional folders feature available at the /folders route.

Field Contentful Type
title Short text
parent_title Short text
photos Media
description Long text
date Short text
order Decimal