Build a Google Photos Clone with Next.js and Cloudinary - Tutorial

  Рет қаралды 43,561

freeCodeCamp.org

freeCodeCamp.org

Күн бұрын

Learn how to use Next.js and Cloudinary to build a Google Photos Clone. Your app will be able to transform and enhance the images.
✏️ Colby Fayock created this course.
colbyfayock.com/
🔗 Starter Template: github.com/colbyfayock/demo-p...
🔗 Bonus Credits & Background Removals: cld.media/freecodecamp
🔗 Next Cloudinary: next.cloudinary.dev/
🔗 Photobox: www.photobox.dev/
Cloudinary provided a grant to make this course possible.
⭐️ Contents ⭐️
⌨️ (0:00:00) Intro
⌨️ (0:03:07) Creating a new Next.js app from a starter template
⌨️ (0:05:32) Installing & Configuring the Cloudinary Node.js SDK
⌨️ (0:10:00) Listing photos from Cloudinary
⌨️ (0:15:07) Optimized & Responsive Images with Next Cloudinary
⌨️ (0:23:29) Uploading Images with the CldUploadButton
⌨️ (0:32:24) Passing Server Data to the Client with Tanstack Query
⌨️ (0:39:58) Creating a custom hook to manage resource requests
⌨️ (0:43:53) Optimisticly updating UI on Upload using Tanstack Query
⌨️ (0:52:18) Tagging Images & Fetching Images by Tag
⌨️ (0:55:33) Optimizing Server to Client resource and request management
⌨️ (1:01:55) Creating dynamic routes for viewing individual images
⌨️ (1:11:01) Using AI to Improve, Restore, and Remove Backgrounds from Images
⌨️ (1:28:32) Adding animated loading placeholders for images
⌨️ (1:34:33) Dynamically Cropping & Resizing images to different aspect ratios
⌨️ (1:46:48) Customizing images with filters and effects
⌨️ (1:55:23) Saving and updating an image with applied transformations and effects
⌨️ (2:11:46) Refreshing and updating UI state on save
⌨️ (2:19:14) Saving an image as a copy
⌨️ (2:23:14) Deleting images
⌨️ (2:30:04) Invalidating Tanstack Query tags on change
⌨️ (2:33:01) Adding image resource metadata to info panel
⌨️ (2:37:32) Setting up a Next.js loading UI for React Suspense streaming
⌨️ (2:42:13) Adding loading indicators to homepage gallery
⌨️ (2:43:08) Creating a collage from multiple images
⌨️ (3:06:44) Saving collage creations to library
⌨️ (3:13:30) Generating Ken Burns style zoom animations from images
⌨️ (3:17:50) Stylizing images with Color Pop
⌨️ (3:29:46) Optimizing Creation generation and UI
⌨️ (3:34:29) Creating new server route of only stylized Creations
⌨️ (3:39:05) Outro
🎉 Thanks to our Champion and Sponsor supporters:
👾 davthecoder
👾 jedi-or-sith
👾 南宮千影
👾 Agustín Kussrow
👾 Nattira Maneerat
👾 Heather Wcislo
👾 Serhiy Kalinets
👾 Justin Hual
👾 Otis Morgan
👾 Oscar Rahnama
--
Learn to code for free and get a developer job: www.freecodecamp.org
Read hundreds of articles on programming: freecodecamp.org/news

Пікірлер: 30
@derpythespy
@derpythespy 23 күн бұрын
thought you could hide from us with the sneaky upload? think again! Thank you
@RideTheTeacups
@RideTheTeacups 22 күн бұрын
WOW!!! I was using cloudinary for my project, but clearly not anywhere near its full potential. This was fantastic; thank you. Now I feel like I need to refactor and clean up my main personal project.
@colbyfayock
@colbyfayock 21 күн бұрын
💯 tons of awesome feature. Hmu if you have any questions
@arkknight101
@arkknight101 20 күн бұрын
Can you tell me how to install this on my pc, i am not a coder but loved this and want to use it
@colbyfayock
@colbyfayock 19 күн бұрын
@@arkknight101 hey you can find the instructions here: www.photobox.dev/getting-started however there's not really a way thats easy for a non-developer to use
@jeevangowda3309
@jeevangowda3309 16 күн бұрын
@@colbyfayock bro i am also doing a project on this can u help me with it if possible plz send the github link of our project
@mrjorgemonteiro
@mrjorgemonteiro 23 күн бұрын
Great video but i wonder why you did not include the Album, tag and the Dark option on it.
@colbyfayock
@colbyfayock 22 күн бұрын
simply just trying not to go way overboard in scope, though the way we handled tagging Creations can be easily applied to an albums mode. happy to answer any questions around that sort of thing
@jiyan4700
@jiyan4700 22 күн бұрын
Please mevn stack tutorial.
@user-bp6yh2ft7s
@user-bp6yh2ft7s 22 күн бұрын
@itxmeJunaid
@itxmeJunaid 23 күн бұрын
👍
@nicholaswilliams9178
@nicholaswilliams9178 18 күн бұрын
This is gold
@JawaCodePro
@JawaCodePro 18 күн бұрын
👍🏻👍🏻👍🏻
@marcelol2387
@marcelol2387 3 күн бұрын
A lot of Cloudinary and a little bit of Next.js
@Jobyx20
@Jobyx20 22 күн бұрын
the narrator guy is cute
@pradeeppanja1930
@pradeeppanja1930 19 күн бұрын
28:04 Code shows an error how it is still able to upload ?
@colbyfayock
@colbyfayock 13 күн бұрын
hey which error are you referring to? not seeing what you mean from the timestamp
@pradeepCodes-ws9tt
@pradeepCodes-ws9tt 12 күн бұрын
@@colbyfayock in the route.ts file after we make sign-cloudinary-params
@pradeeppanja1930
@pradeeppanja1930 12 күн бұрын
If you can see after 20 seconds from the timestamp the route.ts shows an error what does that mean how it is still working?
@colbyfayock
@colbyfayock 10 күн бұрын
@@pradeeppanja1930 are you just referring to VS Code showing route.ts in red? i think my typescript engine was just being slow and didnt catch up by the time i navigated away. did you actually experience an error when trying this?
@pradeeppanja1930
@pradeeppanja1930 8 күн бұрын
@@colbyfayock I am good now. However on handleOnSave I cannot understand why it is not refreshing lemme share you the code. async function handleOnSave(){ const url = getCldImageUrl({ width:resource.width, height:resource.height, src:resource.public_id, format:'default', quality:'default', ...transformations }) await fetch(url); const results = await fetch('/api/upload',{ method:'POST', body: JSON.stringify({ publicId: resource.public_id, url }) }) closeMenus(); discardChanges(); setVersion(Date.now()) invalidateQueries() console.log('Save is working') } Route.ts api/upload/ export async function POST(request : Request){ const {url,publicId} = await request.json(); const uploadOptions: Record = {}; if (typeof publicId === 'string'){ uploadOptions.public_id = publicId; uploadOptions.invalidate = true; }else{ uploadOptions.tags = [String(process.env.NEXT_PUBLIC_CLOUDINARY_LIBRARY_TAG)] } const results = await cloudinary.uploader.upload(url, uploadOptions); const response = new Response(JSON.stringify({ data: results }), { headers: { 'Content-Type': 'application/json', 'Cache-Control': 'no-store, max-age=0', // Add cache-control headers }, }); return response; } I tried to disable the cache with above no store but its still the same.
@RAUSHANKUMAR-iq4yj
@RAUSHANKUMAR-iq4yj 23 күн бұрын
8th comment
@mkay_zw8276
@mkay_zw8276 23 күн бұрын
1st
@vincenzopranicci3422
@vincenzopranicci3422 23 күн бұрын
9th. Best comment ever
@pradeepCodes-ws9tt
@pradeepCodes-ws9tt 17 күн бұрын
I am sorry but the face cam coming again and again is really annoying.
@smartdriver2990
@smartdriver2990 23 күн бұрын
First
@gopuadks
@gopuadks 23 күн бұрын
First comment
@Hasan-is7si4ye9z
@Hasan-is7si4ye9z 23 күн бұрын
1st comment
@itxmeJunaid
@itxmeJunaid 23 күн бұрын
👍
@oxnull738
@oxnull738 23 күн бұрын
1st
Google IO 2024 Full Breakdown: Google is RELEVANT Again!
27:35
Matthew Berman
Рет қаралды 44 М.
How To Choose Ramen Date Night 🍜
00:58
Jojo Sim
Рет қаралды 52 МЛН
ОДИН ДОМА #shorts
00:34
Паша Осадчий
Рет қаралды 6 МЛН
10 common mistakes with the Next.js App Router
20:37
Vercel
Рет қаралды 167 М.
“Thinnest iPad Ever” - WHAT COULD POSSIBLY GO WRONG?
11:02
JerryRigEverything
Рет қаралды 678 М.
Building RAG at 5 different levels
24:25
Jake Batsuuri
Рет қаралды 8 М.
Linux Operating System - Crash Course for Beginners
2:47:56
freeCodeCamp.org
Рет қаралды 2,1 МЛН
NextJS Tutorial - All 12 Concepts You Need to Know
44:38
ByteGrad
Рет қаралды 211 М.
Quantum Computing Course
1:36:04
freeCodeCamp.org
Рет қаралды 33 М.
Next.js Image - Never struggle again (+ ImageKit)
36:01
ByteGrad
Рет қаралды 14 М.
Next js Tutorial for Beginners | Nextjs 13 (App Router) with TypeScript
1:02:55
Programming with Mosh
Рет қаралды 489 М.
Computer & Technology Basics Course for Absolute Beginners
55:04
freeCodeCamp.org
Рет қаралды 2,7 МЛН
OpenAI Assistants API - Course for Beginners
3:32:55
freeCodeCamp.org
Рет қаралды 171 М.
How To Choose Ramen Date Night 🍜
00:58
Jojo Sim
Рет қаралды 52 МЛН