{"repo":"agarun/photos","free":true,"listed":false,"github":"https://github.com/agarun/photos","clone":"git clone https://github.com/agarun/photos.git","description":"Photography portfolio featuring albums, galleries, and globes. 🔧 Built with Next.js, Three.js, and Tailwind. 🌎 Hosted on Contentful and Pages.","language":"TypeScript","stars":55,"topics":["photography","photography-portfolio","portfolio","nextjs","portfolio-website","gallery","photos","contentful","photo-gallery","photographer"],"license":null,"category":"media-processing","readme_excerpt":"photos.agarun.com My photography portfolio with galleries, tags, folders, and a globe 🌎 Setup Development Server The prerequisites are Node = 20 and pnpm = 8. First, install the dependencies: Run the development server: Open http://localhost:3000 to see the app! Photos Backend This project uses Contentful to upload photos and manage photo albums. No other CMS are currently supported. Beginning April 30, 2025, Contentful has made changes to the Free plan entitlements by reducing the monthly asset bandwidth from 800GB to 50GB. If you expect to exceed 50GB in CDN bandwidth a month, you may consider replacing it with another CMS and update the GraphQL queries and environment variables as necessary. To start, you'll need to create a Contentful space. Once created, head to Settings - API Keys - Add API Key. Here, you'll see a space ID and two tokens. You can then populate an .env.local file with these: Then, head to Content model - Create content type . Create the Photo Albums model using the schema below. Once made, you can add entries on the Content tab, and upload images to each entry's media field. This project does not make use of the Contentful Image API to optimize photos. Instead, we optimize images beforehand by converting them to .webp in a script using cwebp and ImageMagick : 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 dat","default_branch":null,"files":null,"tree":[],"storefront":"/r/agarun","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/agarun/photos/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}