TheGallery developer platform
Ship beautiful image experiences without the media infrastructure.
Upload assets, organize galleries, embed them anywhere, and deliver optimized images globally through a typed API, focused SDKs, and an edge-ready media platform.
Choose your path
Start with the surface that matches your product, then compose the rest as your integration grows.
Quickstart
Install a client, create a gallery, upload an image, and render the result in one focused flow.
JavaScript client
Use @degallery/sdk in server-side or browser JavaScript to access galleries, assets, uploads, and delivery helpers.
React library
Add provider context, responsive gallery components, hooks, and accessible interactions to a React application.
The short version
Your application talks to the API when it needs metadata or authorization. Repeated image requests are served by the media edge, using synchronized policy and metadata instead of querying your API for every image.
From first request to production gallery
Create and authorize
Use the SDK on the server to create galleries, issue upload intents, and define bounded public or private access.
Upload and organize
Upload directly with a short-lived intent, then complete the asset and attach it to a gallery without proxying image bytes through your app.
Render with React or URLs
Pass gallery data to React components, or build a delivery URL for any frontend, mobile client, CMS, or server-rendered experience.
Deliver at the edge
The media Worker validates the request against synchronized KV policy, reads from storage, applies transformations, and lets Cloudflare cache the result close to the viewer.
A platform designed for image traffic
Direct uploads
Short-lived signed intents keep image bytes off your application server and make uploads resilient to large files.
Edge delivery
Cloudflare Workers, Images transformations, cache, and storage work together to serve the right variant near the viewer.
Scoped access
Separate server credentials, public capabilities, private galleries, and synchronized plan entitlements.
Useful signals
Observe upload, transform, cache, and delivery behavior with structured analytics events.
The familiar syntax
The SDK handles control-plane work. The React library handles presentation. The media edge handles repeat image traffic.
import { GalleryClient } from '@degallery/sdk';
import { Gallery } from '@degallery/react';
const client = new GalleryClient({
apiKey: process.env.DEGALLERY_API_KEY,
});
const gallery = await client.getGallery('gallery_id');
export function ProductGallery() {
return <Gallery gallery={gallery} layout="masonry" />;
}flowchart LR
App[Your application] --> SDK[JavaScript SDK]
SDK --> API[DeGallery API]
API --> Sync[Policy and metadata sync]
Sync --> KV[(Cloudflare KV)]
App --> React[React library]
React --> Worker[Media Worker]
Worker --> KV
Worker --> R2[(Object storage)]
Worker --> Transform[Image transformation]
Transform --> Cache[Edge cache]
Cache --> Viewer[Viewer]Control plane and media plane
The API owns metadata, authorization, billing, and upload coordination. The media Worker owns authorized byte delivery. Keep API keys and privileged credentials on the server; browser code should use only the public capabilities intended for it.
Where to go next
Guides
Architecture guidance for Next.js, production readiness, and choosing the right integration surface.
How-to recipes
Practical recipes for uploads, public galleries, private access, and delivery analytics.
API and SDK reference
Explore typed client methods, resource models, errors, events, and the upload lifecycle.
Open the docs
Make your first gallery the beginning.
Read the quickstart, choose your SDK surface, and build on the same contracts as your product moves from prototype to production.