Add an admin page for managing gallery images and artist names

Introduce a new admin route at `/admin/gallery` enabling users to set focal points and artist names for gallery images, with corresponding API endpoints and data management.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 23852c00-4779-460a-9e0c-d09fee4b6c92
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 70b6b9df-7da9-46f3-afd7-dbcd9aac1855
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/f209e72a-0939-48fa-84fc-57854de71967/23852c00-4779-460a-9e0c-d09fee4b6c92/ncMMRQ9
Replit-Helium-Checkpoint-Created: true
This commit is contained in:
sebastjanartic
2026-03-06 10:48:43 +00:00
parent 8a9004d640
commit 9d8d29208a
7 changed files with 514 additions and 25 deletions
+15 -3
View File
@@ -35,7 +35,13 @@ The official website for Folx Music Television (folx.tv). Dark-themed bento grid
- `PATCH /api/articles/:id` - Update article
- `DELETE /api/articles/:id` - Delete article
- `POST /api/upload` - Upload image file
- `GET /api/gallery` - Shuffled Dropbox gallery images (with artist names from filenames)
- `GET /api/gallery` - Shuffled gallery images from Cloudinary (with artist names from filenames + overrides)
- `GET /api/gallery/focal-points` - Gallery image focal points (JSON)
- `PUT /api/gallery/focal-points/:fileName` - Set focal point for gallery image
- `DELETE /api/gallery/focal-points/:fileName` - Reset focal point for gallery image
- `GET /api/gallery/artists` - Artist name overrides (JSON)
- `PUT /api/gallery/artists/:fileName` - Set/update artist name override
- `POST /api/gallery/migrate-to-cloudinary` - Migrate remaining Dropbox images to Cloudinary
- `GET /api/gallery/thumb` - Proxy endpoint for Dropbox thumbnail resizing (sharp, 400x400, 30-min cache)
- `GET /api/news-feed` - Google News RSS feed for Volksmusik/Schlager (15-min cache, stale-while-error)
- `GET /api/breaking-news` - Google News RSS feed for general news (15-min cache, stale-while-error)
@@ -48,7 +54,11 @@ The official website for Folx Music Television (folx.tv). Dark-themed bento grid
- `server/storage.ts` - Storage interface + DatabaseStorage
- `server/routes.ts` - API routes + gallery + news feed
- `server/seed.ts` - Hardcoded seed data (articles)
- `server/gallery-data.json` - 547 Dropbox gallery images
- `server/gallery-data.json` - Fallback gallery data (used when Dropbox/Cloudinary unavailable)
- `server/cloudinary-gallery-map.json` - Cloudinary public ID map for 176 migrated images
- `server/gallery-focal-points.json` - Manual focal point overrides for gallery images
- `server/gallery-artist-overrides.json` - Manual artist name overrides for gallery images
- `server/cloudinary.ts` - Cloudinary upload, URL generation, compression logic
- `client/src/pages/home.tsx` - MSN-style bento grid homepage
- `client/src/pages/article.tsx` - Article detail page
- `client/src/pages/category.tsx` - Category listing page
@@ -60,6 +70,7 @@ The official website for Folx Music Television (folx.tv). Dark-themed bento grid
- `client/src/components/header.tsx` - Header with nav (Start, News, Video, Galerie, Horoskop, Rezepte)
- `client/src/components/footer.tsx` - Footer with links
- `client/src/components/photo-gallery.tsx` - Gallery widget + lightbox carousel + paginated gallery page (24/batch infinite scroll) + artist name display
- `client/src/pages/admin-gallery.tsx` - Admin page for gallery management (focal points + artist names) at /admin/gallery
- `client/src/components/horoscope-widget.tsx` - Horoscope widget with element colors
- `client/src/components/recipe-widget.tsx` - Recipe widget with modal
- `client/src/components/news-widget.tsx` - Google News RSS widget
@@ -82,7 +93,8 @@ The official website for Folx Music Television (folx.tv). Dark-themed bento grid
## External Services
- Bunny.net: Library 476412, CDN vz-7982dfc4-cc8.b-cdn.net (NO autoplay)
- Google AdSense: ca-pub-4465464714854276
- Dropbox: Gallery image thumbnails (547 images from 16 folders)
- Cloudinary: Gallery images (cloud_name: djqxt0pf3, 176 images migrated from Dropbox, face-aware cropping)
- Dropbox: Original gallery source (fallback if Cloudinary map empty)
- Google News RSS: Volksmusik/Schlager news feed
## Publishing Workflow