ThinkRoman Media Library

Centralized media management system for all your digital assets

Environment Setup
Required environment variables for your project
NEXT_PUBLIC_SANITY_PROJECT_ID=your-project-id
NEXT_PUBLIC_SANITY_DATASET=production
NEXT_PUBLIC_SANITY_API_VERSION=2024-01-17

Add these variables to your .env.local file to get started.

Usage Example
How to fetch campaign media using the Sanity client
import { createClient } from 'next-sanity'

const client = createClient({
  projectId: process.env.NEXT_PUBLIC_SANITY_PROJECT_ID,
  dataset: process.env.NEXT_PUBLIC_SANITY_DATASET,
  apiVersion: process.env.NEXT_PUBLIC_SANITY_API_VERSION,
  useCdn: true
})

// Fetch all campaigns with their media
const fetchCampaigns = async () => {
  return await client.fetch(`
    *[_type == "campaign"] {
      name,
      description,
      "images": images[] {
        "url": asset->url,
        "metadata": asset->metadata
      },
      "videos": videos[] {
        "url": asset->url,
        "metadata": asset->metadata
      }
    }
  `)
}

// Example usage in your component:
const YourComponent = async () => {
  const campaigns = await fetchCampaigns()
  return campaigns.map(campaign => (
    <div key={campaign.name}>
      <h2>{campaign.name}</h2>
      {campaign.images?.map(img => (
        <img src={img.url} alt={campaign.name} />
      ))}
    </div>
  ))
}

Key Features

Campaign Organization
Organize your media assets by campaigns with custom metadata, descriptions, and tags
Image Management
Advanced image handling with built-in cropping, resizing, and optimization features
Video Support
Comprehensive video management with automatic transcoding and adaptive streaming