Skip to content

πŸš€ High-performance image and video delivery and uploading at scale in Astro powered by Cloudinary.

License

Notifications You must be signed in to change notification settings

cloudinary-community/astro-cloudinary

Repository files navigation

GitHub Workflow Status npm npm bundle size GitHub

Astro Cloudinary

High-performance image delivery and uploading at scale in Astro powered by Cloudinary.

Features β€’ Getting Started β€’ Community & Support β€’ Contributing

This is a community library supported by the Cloudinary Developer Experience team.

✨ Features

  • Automatically optimize images and deliver in modern formats
  • Remove backgrounds from images
  • Dynamically add image and text overlays to images
  • AI-based cropping and resizing
  • Transform images using color and effects
  • Generate Open Graph Social Media cards on the fly
  • Drop-in Upload Widget
  • ...all at scale with Cloudinary

πŸš€ Getting Started

Installation

  • Install astro-cloudinary with:
npm install astro-cloudinary
  • Add an environment variable with your Cloud Name:
PUBLIC_CLOUDINARY_CLOUD_NAME="<Your Cloud Name>"

Adding an Image

import { CldImage } from 'astro-cloudinary';

<CldImage width="600" height="600" src="<Public ID or Cloudinary URL>" alt="<Alt Text>" />

Learn more about CldImage on the Astro Cloudinary Docs

❀️ Community & Support

πŸ›  Contributing

Please read CONTRIBUTING.md prior to contributing.

Working Locally

Installation

This project is using pnpm as a way to manage dependencies and workspaces.

With the project cloned, install the dependencies from the root of the project with:

pnpm install

Configuration

To work on the project, you need to have an active Cloudinary account.

With the account, configure a .env file inside of docs with:

PUBLIC_CLOUDINARY_CLOUD_NAME="<Your Cloudinary Cloud Name>"
PUBLIC_CLOUDINARY_API_KEY="<Your Cloudinary API Key>"
CLOUDINARY_API_SECRET="<Your Cloudinary API Secret>"

PUBLIC_ASSETS_DIRECTORY="assets"

Note: The Cloudinary account can be free, but some features may not work beyond free tier like Background Removal without enabling the add-on

The Cloud Name is required for all usage, where the API Key and Secret currently is only used for Upload Widget usage. The Upload Preset is additionally used for the Upload Widgets.

Uploading Example Images

In order to run the Docs project, you need to have the images and videos referenced available inside of your Cloudinary account.

Most of the images and videos used in the project take advantage of the sample assets included in every Cloudinary account, so some may work out-of-the-box, but not all.

To upload the remaining assets, navigate to the scripts directory and first create a new .env file with:

CLOUDINARY_CLOUD_NAME="<Your Cloudinary Cloud Name>"
CLOUDINARY_API_KEY="<Your API Key>"
CLOUDINARY_API_SECRET="<Your API Secret>"

By default, the images and videos inside of scripts/assets.json will be uploaded to the "assets" directory inside of your Cloudinary account. To change the location, add the CLOUDINARY_ASSETS_DIRECTORY environment variable with your preferred directory:

CLOUDINARY_ASSETS_DIRECTORY="<Your Directory>"

Note: You will then need to update the /docs/.env file to reference the same directory.

To run the script, install the dependencies:

pnpm install

Then run the upload script with:

pnpm upload

Uploading Example Collections

Collections are groups of images that are showcased using the cldAssetsLoader helper.

The directories that make up the sample images include too many images to reasonably ask a contributor to upload.

We have a few options then.

  1. Skip uploading the collections

If you're not working on cldAssetsLoader, or you can test using the single example that utilizes the samples directory, you may not need to worry about this.

  1. Change the collections location

You could update these directories in the docs/src/content/config.ts file to directories that already exist in your account, such as other sample directories.

  1. Upload Manually

If you want to have assets available to test this out, you can create the following directories and include some assets inside.

  • collection
  • ecommerce/fashion
  • ecommerce/sneakers

A good way to handle this is to download some images from Unsplash or your favorite stock photo site.

Running the Project

Once installed and configured, from the root of your project run:

pnpm dev

The project will now be available at http://localhost:4321 or the configured local port.

Contributors

Colby Fayock
Colby Fayock

πŸ’» πŸ“–
Mateusz BurzyΕ„ski
Mateusz BurzyΕ„ski

πŸ’»
Hunter Bertoson
Hunter Bertoson

πŸ’»
Arpan Patel
Arpan Patel

πŸ“–
Saai Syvendra
Saai Syvendra

πŸ“–
Raghav Mangla
Raghav Mangla

πŸ“–
Kieran Klukas
Kieran Klukas

πŸ’»
S. M. V.
S. M. V.

πŸ“–