A fullscreen, responsive slideshow for any public Flickr album. The application runs as a Cloudflare Worker so the Flickr API key stays on the server rather than being exposed in browser code.
- Automatic slideshow with keyboard, pointer, and swipe navigation
- Responsive fit and fill display modes
- Expandable photo titles, descriptions, locations, and photographer details
- Optional slide-projector transition sound, muted by default
- Fullscreen and reduced-motion support
- Server-side Flickr API proxy with daily response caching
- A public Flickr album
- A Flickr API key
- A Cloudflare account
- A current version of Node.js and npm
You will need these three Flickr values:
| Variable | Value |
|---|---|
FLICKR_API_KEY |
Your Flickr API key |
FLICKR_USER_ID |
The album owner's Flickr NSID, such as 12345678@N00 |
FLICKR_PHOTOSET_ID |
The numeric album ID at the end of its /albums/ URL |
If you do not know the owner's NSID, look it up with Flickr's
flickr.people.findByUsername
API method.
-
Clone this repository and enter its directory:
git clone <your-repository-url> cd flickr-carousel
-
Authenticate Wrangler and deploy the Worker:
npx wrangler login npx wrangler deploy
-
In the Cloudflare dashboard, open the new
flickr-carouselWorker, then go to Settings > Variables and Secrets and add:FLICKR_API_KEYas a secretFLICKR_USER_IDas a text variableFLICKR_PHOTOSET_IDas a text variable
-
Deploy the variable changes in Cloudflare, then open the Worker URL.
keep_vars = true is enabled in wrangler.toml, so later Wrangler deployments
preserve values managed in the Cloudflare dashboard. The non-user-specific
FLICKR_EXTRAS setting remains in wrangler.toml.
The local preview also runs through Wrangler, giving it the same Flickr API proxy behavior as the deployed Worker.
-
Copy the local configuration template:
cp .dev.vars.example .dev.vars
-
Replace all three placeholders in
.dev.varswith your Flickr values. This file is ignored by Git and must not be committed. -
Start the development server:
npx wrangler dev
-
Open the URL printed by Wrangler, normally
http://localhost:8787. Stop the server withCtrl+C.
- Left/Right Arrow or Swipe Left/Right: Previous or next photo
- Spacebar: Pause or resume the slideshow
- Alt+S or the sound button: Mute or unmute the transition sound
- Alt+F: Toggle fullscreen mode
- Alt+M: Toggle fit and fill display modes
- Alt+I or the photo information: Expand or collapse photo details
- Edit
public/index.htmlto change the title, metadata, and page structure. - Edit
public/css/carousel.cssto change the appearance. - Edit the
Configobject inpublic/js/carousel.jsto change the slide interval, random ordering, and optional photo details. - Replace the icons and manifest files in
public/to brand the installed app.
The transition uses an edited CC0 recording of a real automatic slide advance
by Joseph Sardin / BigSoundBank. Processing and license details are in
public/audio/NOTICE.md.