Commit Graph

6 Commits

Author SHA1 Message Date
Jeff Emmett b96e20dcbc feat: add progress bar UI and styled placeholder images
- Add overall progress bar with percentage during page generation
- Add per-page progress indicators with checkmarks for completed pages
- Show current page title/type while generating
- Create styled placeholder images with actual page content when
  AI image generation is geo-blocked
- Style placeholders match selected zine style (punk, minimal, etc.)
- Add cache-busting timestamps to force image reload
- Update worker to return helpful error for geo-blocking

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 21:09:25 -05:00
Jeff Emmett 06dc335013 feat: add Cloudflare Worker proxy for Gemini image generation
- Created gemini-proxy worker to route requests through US edge
- Updated generate-page to use proxy for bypassing geo-restrictions
- Gemini image generation is blocked in Germany, proxy routes through US

Worker URL: https://gemini-proxy.jeffemmett.workers.dev

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 19:45:31 -05:00
Jeff Emmett 779a0806a2 fix: correct image URL path to match API route
Changed from /api/zine/[id]/image/p1.png to /api/zine/[id]?image=p1
to match the actual API route handler.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 19:27:13 -05:00
Jeff Emmett 2099757b5d fix: update Gemini image generation to use correct API format
- Use gemini-2.0-flash-exp with responseModalities: ["TEXT", "IMAGE"]
- Remove invalid responseMimeType and non-existent model names
- Simplify to single model with placeholder fallback

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 19:21:24 -05:00
Jeff Emmett b001e4eec8 fix: update Gemini model from 1.5-flash to 2.0-flash
The gemini-1.5-flash model is not available in the v1beta API.
Updated to gemini-2.0-flash for outline generation.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 19:11:34 -05:00
Jeff Emmett efc6b8158b feat: add prompt-to-print web app at zine.jeffemmett.com
Full-stack Next.js 15 web application for creating mycro-zines:

Features:
- Text or voice input for concept description
- Style/tone selection (punk-zine, minimal, collage, etc.)
- AI-powered outline generation via Gemini
- 8-page image generation with refinement loop
- Print-ready PNG download (300 DPI)
- Shareable zine URLs (/z/[id])

Tech stack:
- Next.js 15 with App Router
- Tailwind CSS v4 + Radix UI
- Gemini API for text and image generation
- Sharp for print layout assembly
- Docker + Traefik for deployment

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 17:55:39 -05:00