{"id":13607468,"url":"https://github.com/cloudinary-community/photocrate","last_synced_at":"2025-04-12T02:25:37.102Z","repository":{"id":231122073,"uuid":"750858011","full_name":"cloudinary-community/photocrate","owner":"cloudinary-community","description":"Photo library and interactive editor built with Next.js \u0026 Cloudinary","archived":false,"fork":false,"pushed_at":"2024-06-25T16:02:20.000Z","size":397,"stargazers_count":138,"open_issues_count":13,"forks_count":16,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-12T02:25:31.920Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.photobox.dev/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudinary-community.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-01-31T13:15:22.000Z","updated_at":"2025-03-21T21:04:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"394a8de2-6660-4480-a4bf-3c14a4bd9e1e","html_url":"https://github.com/cloudinary-community/photocrate","commit_stats":null,"previous_names":["cloudinary-community/photobox","cloudinary-community/photocrate"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudinary-community%2Fphotocrate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudinary-community%2Fphotocrate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudinary-community%2Fphotocrate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudinary-community%2Fphotocrate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudinary-community","download_url":"https://codeload.github.com/cloudinary-community/photocrate/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248506389,"owners_count":21115423,"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-08-01T19:01:18.902Z","updated_at":"2025-04-12T02:25:37.073Z","avatar_url":"https://github.com/cloudinary-community.png","language":"TypeScript","funding_links":[],"categories":["others","TypeScript"],"sub_categories":[],"readme":"# 📷 PhotoCrate\n\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n[![All Contributors](https://img.shields.io/badge/all_contributors-2-orange.svg?style=flat-square)](#contributors-)\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\n\nGoogle Photos clone for building a dynamic image gallery with Cloudinary.\n\nFeatures include:\n* Gallery view of all PhotoCrate-uploaded images\n* Image viewer with AI-powered editing\n* Filters and Effects\n* Creations including Collages, Animations, \u0026 Color Pop\n* Media Management\n\n## What's Inside\n\nTechnology used to build PhotoCrate includes:\n\n* Next.js App Router\n* React Server Components for initial resource queries\n* Suspense loading states\n* Styling with Tailwind CSS\n* Components using shadcn/ui\n* Request management with Tanstack React Query\n* Cloudinary for image storage, optimization, and transformation\n\n## Getting Started\n\n1. Create a new local project\n\n```\nnpx create-next-app@latest -e https://github.com/cloudinary-community/photocrate photocrate\n```\n\nYou can also fork or clone the project manually!\n\n2. Create a .env.local file or configure your environment variables to include:\n\n```\nNEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=\"\u003cYour Cloud Name\u003e\"\nNEXT_PUBLIC_CLOUDINARY_API_KEY=\"\u003cYour API Key\u003e\"\nCLOUDINARY_API_SECRET=\"\u003cYour API Secret\u003e\"\n```\n\n3. Install dependencies and start the project.\n\n```\nnpm install\nnpm run dev\n```\n\nAnd you should now be running PhotoCrate at http://localhost:3000/!\n\n## Using PhotoCrate\n\nTo start using PhotoCrate, simply upload some images! The Upload button can be found on the top right of the library page.\n\nAfter uploading, the image should now show up in your gallery where you can either start adding Creations from your image or edit it by navigating to a particular image.\n\nPhotoCrate takes advantage of both folders and tags to organize the images in your Cloudinary account. By default, all images are uploaded to a \"photocrate\" folder and tagged with \"photocrate\" and other tags prepended with \"photocrate-\". This makes it easy to keep track of what images should be included in PhotoCrate without cluttering your existing account. \n\n## Configuration\n\nPhotoCrate ships with some default configurations to help you get started, but is\ncustomizable based on your needs or preferences.\n\n### Customization\n\nTo personalize your PhotoCrate without manually updating the code, a few options\nare made available for configuration.\n\nThe default values used for these are:\n\n```jsx\nconst config = {\n  title: 'PhotoCrate'\n  logo: \u003cFocus className=\"w-6 h-6\" /\u003e,\n};\n```\n\nYou can configure these values inside of the `theme.config.tsx` file as needed:\n\n```jsx\nconst config = {\n  title: '\u003cYour Title\u003e'\n  logo: \u003cYourLogo /\u003e,\n}\n```\n\n### Asset Organization\n\nTags and folders are used to organize assets which are displayed in the app and\nalso used for functional needs like providing Favorites and Trash capabilities.\n\nThe default values used for these are:\n\n```jsx\nconst config = {\n  assetsFolder:  'photocrate',\n  assetsTag: 'photocrate',\n  libraryTag: 'photocrate-library',\n  creationTag: 'photocrate-creation',\n  favoritesTag: 'photocrate-favorite',\n  trashTag: 'photocrate-trash',\n};\n```\n\nThere are two ways that you can configure these values, by using the `theme.config.tsx` file\nor by configuring environment variables.\n\nUsing `theme.config.tsx`, add the following properties as needed:\n\n```jsx\nconst config = {\n  assetsFolder: '\u003cYour Folder\u003e';\n  assetsTag: '\u003cYour Tag\u003e';\n  libraryTag: '\u003cYour Tag\u003e';\n  creationTag: '\u003cYour Tag\u003e';\n  favoritesTag: '\u003cYour Tag\u003e';\n  trashTag: '\u003cYour Tag\u003e';\n}\n```\n\nUsing environment variables, configure the following as needed:\n\n```shell\nNEXT_PUBLIC_CLOUDINARY_ASSETS_FOLDER=\"\u003cYour Folder\u003e\"\nNEXT_PUBLIC_CLOUDINARY_ASSETS_TAG=\"\u003cYour Tag\u003e\"\nNEXT_PUBLIC_CLOUDINARY_LIBRARY_TAG=\"\u003cYour Tag\u003e\"\nNEXT_PUBLIC_CLOUDINARY_CREATION_TAG=\"\u003cYour Tag\u003e\"\nNEXT_PUBLIC_CLOUDINARY_FAVORITES_TAG=\"\u003cYour Tag\u003e\"\nNEXT_PUBLIC_CLOUDINARY_TRASH_TAG=\"\u003cYour Tag\u003e\"\n```\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://colbyfayock.com/newsletter\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1045274?v=4?s=100\" width=\"100px;\" alt=\"Colby Fayock\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eColby Fayock\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/cloudinary-community/photocrate/commits?author=colbyfayock\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/cloudinary-community/photocrate/commits?author=colbyfayock\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://nickyt.co\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/833231?v=4?s=100\" width=\"100px;\" alt=\"Nick Taylor\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNick Taylor\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/cloudinary-community/photocrate/commits?author=nickytonline\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudinary-community%2Fphotocrate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudinary-community%2Fphotocrate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudinary-community%2Fphotocrate/lists"}