Back to projects
šŸ“·

EXIF Photo Blog

TypeScriptNext.jsPhotographySourceLive Demo

šŸ“· EXIF Photo Blog

✨  Features

  • Built-in auth
  • Photo upload with EXIF extraction
  • Organize photos by tag
  • Infinite scroll
  • Light/dark mode
  • Automatic OG image generation
  • CMD-K menu with photo search
  • AI-generated text descriptions
  • RSS/JSON feeds
  • Support for Fujifilm recipes and film simulations

OG Image Preview

šŸŽØĀ Ā Further customization

AI text generation

āš ļø READ BEFORE PROCEEDING

Usage of this feature will result in fees from OpenAI. When enabling AI text generation, follow all recommended mitigations in order to avoid unexpected charges and attacks. Make sure your OpenAI secret key environment variable is not prefixed with NEXT_PUBLIC.

  1. Setup OpenAI
    • If you don't already have one, create an OpenAI account and fund it
    • Generate an API key and store in environment variable OPENAI_SECRET_KEY
    • Setup usage limits to avoid unexpected charges (recommended)
  2. Add rate limiting (recommended)
    • As an additional precaution, create an Upstash Redis store from the storage tab of the Vercel dashboard and link it to your project in order to enable rate limiting—no further configuration necessary
  3. Configure auto-generated fields (optional)
    • Set which text fields auto-generate when uploading a photo by storing a comma-separated list, e.g., AI_TEXT_AUTO_GENERATED_FIELDS = title,semantic
    • Accepted values:
      • all
      • title (default)
      • caption
      • tags (default)
      • semantic (default)
      • none

Alternate AI providers (experimental)

Set OPENAI_BASE_URL in order to use an alternate OpenAI-compatible provider

Optional configuration

Application behavior can be changed by configuring the following environment variables:

Content

Performance

āš ļø Enabling may result in increased project usage. Static optimization troubleshooting hints in FAQ.

Categories

Display

Grid

Design

Settings

šŸ’¬ Ā Ā Contacts -zhangandy4321@gmail.com If you have any questions on local deployment or how it was developed