3.0 KiB
3.0 KiB
📷 EXIF Photo Blog
https://github.com/sambecker/exif-photo-blog/assets/169298/4253ea54-558a-4358-8834-89943cfbafb4
Demo App
Features
- Photo upload with EXIF extraction
- Organize photos by tag and camera model
- Infinite scroll
- Built-in auth
- Light/dark mode
- Automatic OG image generation
- Support for Fujifilm film simulations
Installation
1. Deploy to Vercel
- Click Deploy
- Add required storage (Vercel Postgres + Vercel Blob)
- Add environment variables
NEXT_PUBLIC_SITE_TITLE(e.g., My Photos)NEXT_PUBLIC_SITE_DOMAIN(e.g., photos.domain.com)NEXT_PUBLIC_SITE_DESCRIPTION(optional—mainly used for OG meta)
2. Setup Auth
- Generate auth secret
- Add to environment variables:
AUTH_SECRET
- Add admin user to environment variables:
ADMIN_EMAILADMIN_PASSWORD
3. Upload your first photo
- Visit
/admin - Click "Choose File"
- Title your photo
- Click "Create"
4. Develop locally
- Clone code
- Run
pnpm ito install dependencies - Set environment variable
AUTH_URLlocally (not in production) tohttp://localhost:3000/api/url(this is a temporary limitation ofnext-authv5.0) - Run
vc devto start dev server, and utilize Vercel-stored environment variables
5. Add Analytics (optional)
- Open project on Vercel
- Click "Analytics" tab
- Follow "Enable Web Analytics" instructions (
@vercel/analyticsis already part of your project)
6. Optional configuration
- Set
NEXT_PUBLIC_HIDE_REPO_LINK = 1to remove footer link to repo - Set
NEXT_PUBLIC_PRO_MODE = 1to enable higher quality image storage - Set
NEXT_PUBLIC_PUBLIC_API = 1to enable a public API available at/api - Set
NEXT_PUBLIC_OG_TEXT_ALIGNMENT = BOTTOMto keep OG image text bottom aligned (default is top)
FAQ
Q: My images/content have fallen out of sync with my database and/or my production site no longer matches local development. What do I do?
A: Navigate to /admin/configuration and click "Clear Cache" button.
Q: I'm seeing server-side runtime errors when loading a page after updating my fork. What do I do?
A: Navigate to /admin/configuration and click "Clear Cache" button. If this doesn't help, open an issue.