Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
1fe4f12
01: chore: upgrade Next.js 15, React 19, and dependencies
Princesso Jul 19, 2026
f496ac1
02: test: add Vitest testing infrastructure
Princesso Jul 19, 2026
b4bd787
03: refactor: centralize Cloudinary client configuration
Princesso Jul 19, 2026
512eacb
04: feat: add upload validation and read-only/demo mode guards
Princesso Jul 19, 2026
c081f7c
05: refactor: use shared Cloudinary client in delete/tags routes
Princesso Jul 19, 2026
750b215
06: feat: add signed-upload parameter validation
Princesso Jul 19, 2026
086ed1a
07: refactor: validate params in sign-cloudinary-params route
Princesso Jul 19, 2026
7c644a1
08: refactor: harden upload route with validation guards
Princesso Jul 19, 2026
0279e52
09: fix: gate Color Pop demo skip-check behind demo mode flag
Princesso Jul 19, 2026
1117a76
10: feat: paginate the resources list API
Princesso Jul 19, 2026
bd001c8
11: feat: add useInfiniteScroll hook
Princesso Jul 19, 2026
aa187bd
12: feat: add shared image delivery presets
Princesso Jul 19, 2026
d9861d2
13: refactor: wire infinite scroll and pagination into the gallery
Princesso Jul 19, 2026
5088af7
14: refactor: use delivery presets in MediaViewer
Princesso Jul 19, 2026
66d9577
15: refactor: small component polish
Princesso Jul 19, 2026
490c727
16: feat: fall back to a static OG image when Cloudinary isn't config…
Princesso Jul 19, 2026
44aead0
17: chore: add CI workflow
Princesso Jul 19, 2026
d97cd82
18: docs: update README, add repo metadata/verification docs
Princesso Jul 19, 2026
2130ed4
Fix upload cache invalidation and add missing read-only guard
jlooper-cloudinary Sep 8, 2026
313f9a0
Fix Invalid Signature error on every upload
jlooper-cloudinary Sep 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME="<Your Cloudinary Cloud Name>"
NEXT_PUBLIC_CLOUDINARY_API_KEY="<Your Cloudinary API Key>"
CLOUDINARY_API_SECRET="<Your Cloudinary API Secret>"
CLOUDINARY_API_SECRET="<Your Cloudinary API Secret>"

# Optional: read-only demo mode (disables uploads, edits, deletes)
# NEXT_PUBLIC_PHOTOCRATE_MODE="read-only"

# Optional: allow Color Pop preview uploads in read-only demo (dev only)
# NEXT_PUBLIC_PHOTOCRATE_DEMO_MODE="true"

# Optional asset organization overrides
# NEXT_PUBLIC_CLOUDINARY_ASSETS_FOLDER="photocrate"
# NEXT_PUBLIC_CLOUDINARY_ASSETS_TAG="photocrate"
# NEXT_PUBLIC_CLOUDINARY_LIBRARY_TAG="photocrate-library"
# NEXT_PUBLIC_CLOUDINARY_CREATION_TAG="photocrate-creation"
# NEXT_PUBLIC_CLOUDINARY_FAVORITES_TAG="photocrate-favorite"
# NEXT_PUBLIC_CLOUDINARY_TRASH_TAG="photocrate-trash"
25 changes: 25 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: CI

on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
test-and-build:
runs-on: ubuntu-latest
env:
NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME: test-cloud
NEXT_PUBLIC_CLOUDINARY_API_KEY: test-key
CLOUDINARY_API_SECRET: test-secret
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
cache: npm
- run: npm ci
- run: npm test
- run: npm run lint
- run: npm run build
71 changes: 71 additions & 0 deletions GITHUB_METADATA.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# GitHub Repository Metadata — PhotoCrate

Use these values in the GitHub **About** section (gear icon on the repository homepage) for [cloudinary-community/photocrate](https://github.com/cloudinary-community/photocrate).

## About description

Copy this into the **Description** field:

```
Next.js 15 Google Photos-style gallery: signed uploads, Admin API asset management, f_auto/q_auto delivery, AI enhancements, overlays, collages, and generative effects with Cloudinary.
```

## Topic tags

Add these topics (edit as needed if GitHub rejects duplicates):

```
cloudinary
nextjs
react
typescript
image-gallery
signed-upload
upload-widget
resources-by-tag
image-transformation
f-auto
q-auto
e-improve
e-gen-restore
e-background-removal
overlays
next-cloudinary
media-management
photo-library
```

## Update via GitHub CLI

If you have the [GitHub CLI](https://cli.github.com/) installed and authenticated:

```bash
gh repo edit cloudinary-community/photocrate \
--description "Next.js 15 Google Photos-style gallery: signed uploads, Admin API asset management, f_auto/q_auto delivery, AI enhancements, overlays, collages, and generative effects with Cloudinary." \
--add-topic cloudinary \
--add-topic nextjs \
--add-topic react \
--add-topic typescript \
--add-topic image-gallery \
--add-topic signed-upload \
--add-topic upload-widget \
--add-topic resources-by-tag \
--add-topic image-transformation \
--add-topic f-auto \
--add-topic q-auto \
--add-topic e-improve \
--add-topic e-gen-restore \
--add-topic e-background-removal \
--add-topic overlays \
--add-topic next-cloudinary \
--add-topic media-management \
--add-topic photo-library
```

## Update via GitHub web UI

1. Open https://github.com/cloudinary-community/photocrate
2. Click the **gear icon** next to **About** in the right sidebar
3. Paste the **Description** above
4. Add each **Topic** tag from the list
5. Save changes
Loading
Loading