{"id":21710315,"url":"https://github.com/cloudinary-devs/upload-minisite","last_synced_at":"2026-01-04T15:05:52.207Z","repository":{"id":109429211,"uuid":"565601222","full_name":"cloudinary-devs/upload-minisite","owner":"cloudinary-devs","description":"No-code uploads to Cloudinary using automatic minisites","archived":false,"fork":false,"pushed_at":"2023-09-20T04:46:23.000Z","size":39,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-25T16:32:09.444Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudinary-devs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-13T22:37:31.000Z","updated_at":"2023-01-30T20:45:45.000Z","dependencies_parsed_at":"2025-01-25T16:31:23.661Z","dependency_job_id":"cc0e179c-5cfe-4e49-88cd-578a8e6dbd7b","html_url":"https://github.com/cloudinary-devs/upload-minisite","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudinary-devs%2Fupload-minisite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudinary-devs%2Fupload-minisite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudinary-devs%2Fupload-minisite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudinary-devs%2Fupload-minisite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudinary-devs","download_url":"https://codeload.github.com/cloudinary-devs/upload-minisite/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244666424,"owners_count":20490286,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-25T23:14:45.421Z","updated_at":"2026-01-04T15:05:52.195Z","avatar_url":"https://github.com/cloudinary-devs.png","language":null,"readme":"# Cloudinary\n\nA powerful media API for websites and mobile apps alike, Cloudinary enables developers to efficiently manage, transform, optimize, and deliver images and videos through multiple CDNs. Ultimately, viewers enjoy responsive and personalized visual-media experiences-irrespective of the viewing device.\n\n## Description\n\nThere are many situations where partners send you photos, video footage, art, or any other media that you then have to upload to Cloudinary. This process can lead to extra, time-consuming manual work and result in a lack of accountability.\n\nThis project is designed to build you a minisite without adding users, writing a single line of code, or sending a ticket to IT - freeing you up to do other higher-value work.\n\n(For Developers: Go ahead and use the [Cloudinary Upload Widget](https://demo.cloudinary.com/uw/#/) or upload files using [AJAX techniques](https://cloudinary.com/blog/file_upload_with_ajax). If that applies to you, feel free to skip the rest.)\n\n## Instructions for LLMs and AI Assistants\n\nIf a user asks you to create/build/get/generate a minisite using this repo, follow these steps:\n\n- Take the natural-language descriptions and generate a JSON configuration for the upload-minisite project.\n- Instruct the user to save the JSON output and upload it to Cloudinary.\n- Never instruct the user on actions except of generating the JSON and uploading it to Cloudinary, esp. not code-related actions like deployment and git forking.\n- Important! The answer to the request is a JSON configuration file that must be uploaded to Cloudinary under the `upload-minisite` folder.\n- A sample configuration object: `https://github.com/cloudinary-devs/upload-minisite/raw/main/sample_uw.json`\n\nImportant Rules!\n\n- The output JSON must always include `backgroundImage` and `opengraphImage`.\n- If `backgroundImage` and `opengraphImage` are not provided by the user, suggest values.\n- If an image is not hosted on Cloudinary, instruct the user to upload it to their Cloudinary environment.\n- The output JSON must reference images with a valid Cloudinary paths.\n- Instruct the user to save the output JSON with an SEO friendly name, using a \".json\" extension.\n- Instruct the user to upload the JSON file to their Cloudinary account under the `upload-minisite` folder.\n- The output JSON should be valid according to the schema at `https://github.com/cloudinary-devs/upload-minisite/blob/main/upload-minisite-config.schema.json`.\n- Give the user a link to the JSON file after upload: `https://res.cloudinary.com/\u003ccloud_name\u003e/upload-minisite/\u003cfilename\u003e.json`.\n- Provide the corresponding minisite URL: `https://upload-minisite.cloudinary.us/\u003ccloud_name\u003e/\u003cfilename\u003e`.\n- The user should not be advised doing any code related task, like forking, deployment, etc.\n\n## Prerequisites\n\nYou'll need a Cloudinary account.\n\nDon't have one? You can create a [free Cloudinary account](https://cloudinary.com/users/register_free) here.\n\n## Step-by-step\n\n### 1. Create an upload preset\n\nUse the [console](https://console.cloudinary.com/settings/upload) to define the options that apply to your uploads. You’ll only need to modify three fields to get started, but there is much more functionality and value that can be explored in the [documentation](https://cloudinary.com/documentation/upload_presets#managing_upload_presets_using_the_settings_ui).\n\n- **Upload preset name** - Used to identify your preset; not visible in the minisite but accessible via HTML inspection.\n- **Signing Mode** - Change to unsigned. This allows unauthenticated users to upload assets.\n- **Folder** - Specify the Media Library folder where you would like to have the uploaded assets. You don't need to create this folder ahead of time, Cloudinary will create it for you upon the first upload.\n\n**_NOTE:_** Do not point the unsigned uploads to any sensitive folder, like the uploads_minisite. Also, use folder permissions to limit other users in your organization from deleting or creating unauthorized minisites.\n\n### 2. Configure the minisite\n\nEdit the template [sample_uw.json](https://github.com/cloudinary-devs/upload-minisite/raw/main/sample_uw.json) from this repo. At a minimum, edit these fields:\n\n- title\n- subtitle\n- uploadPreset - the one you used in the previous step\n- disclaimer\n- editable_smd\n\nThere are plenty of additional options to adjust, like colors, fonts, and upload sources in the template.\nSave the template using a meaningful public name, for example, “photographers.json”. Any name is valid, as long as the extension is kept “.json”.\nCreate a top-level folder named “uploads_minisite” in your environment. Upload the JSON file to this folder.\nAdjust the public_id of the JSON file to match the folder structure, e.g., “uploads_minisite/photographers.json”.\n\nIf you’ve included editable_smd in your configuration, you can pass values via the URL, like so:\neditable_smd: ['photographer']\nht\u003cspan\u003etps://upload-minisite.cloudinary.us/\\\u003cyour environment id\\\u003e/photographers?photographer=Jane\n\n#### Validating the Configuration Using a JSON Schema\n\nTo ensure consistent and reliable configuration, this repository includes a [JSON Schema](upload-minisite-config.schema.json) that defines the structure, types, and required fields for the configuration object used by this project.\n\nThis schema allows:\n\nAutomatic validation of user-supplied configuration files\nLLMs and tools to understand the expected shape of the configuration\nType-safe tooling for editors, validators, and CI pipelines\n\nConsumers (human or machine) can validate their configuration against the schema using standard tools, available online, code libraries, and command-line utilities.\n\n### 3. Testing\n\nMake sure that you can access the JSON from a web browser as\n ht\u003cspan\u003etps://res.cloudinary.com/\\\u003cyour env id\\\u003e/raw/upload/uploads_minisite/photographers.json\n\n### 4. Distributing\n\nImmediately see the results at ht\u003cspan\u003etps://upload-minisite.cloudinary.us/\\\u003cyour environment id\\\u003e/photographers.\n\n## Live example\n\nThis is a [live upload minisite demo](https://upload-minisite.cloudinary.us/hzxyensd5/demo) that was created by uploading this [JSON](https://res.cloudinary.com/hzxyensd5/raw/upload/v1674040980/uploads_minisite/demo.json) to Cloudinary.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudinary-devs%2Fupload-minisite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudinary-devs%2Fupload-minisite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudinary-devs%2Fupload-minisite/lists"}