Build Modern Next 14 Server Side App with Server Actions, Infinite Scroll & Framer Motion Animations

Поділитися
Вставка
  • Опубліковано 25 гру 2024

КОМЕНТАРІ • 324

  • @javascriptmastery
    @javascriptmastery  Рік тому +6

    🌟 Become a top 1% Next.js 14 developer in only one course: jsmastery.pro/next14

  • @rohankaushik7849
    @rohankaushik7849 Рік тому +61

    00:03 Server actions are functions that run on the server and can be called like any other JavaScript functions.
    02:44 Server actions in Next.js abstract the process of making API calls from client to server.
    07:43 Server actions allow you to do mutations and perform create, update, and delete actions on top of the typical read operations.
    10:07 Learn about infinite scrolling and server actions
    15:05 Fetch data from the Shikimori API
    17:28 Creating a parameter template string with page, limit, and order
    21:54 Install and use react-intersection-observer package for tracking element visibility
    24:09 Implementing server actions and infinite scroll for loading more data
    28:30 Implement animations using framer motion in a Next.js app
    30:45 Create a motion div component for client-side rendering using Framer Motion.
    35:11 Optimize loading time of items when scrolling far down
    37:15 Using server actions to fetch and return data for animations
    41:36 Learn how to use Next.js like a pro with server actions and deep dive lectures

  • @aayushjajoo332
    @aayushjajoo332 Рік тому +25

    This is the kind of video that sorts all of the issues and explains properly. Awesome Project!

  • @eliasoliveira292
    @eliasoliveira292 9 місяців тому +3

    I was skeptical about the components being on server side after aplying the but they are really in server side, thank you for this tutorial.

    • @Hirijinitus
      @Hirijinitus 8 місяців тому +1

      Me too. I thought use client would be inherited by the children.

    • @emilzonjeronimo8898
      @emilzonjeronimo8898 3 місяці тому

      You're right, to make server side that section it's necessary to receive it in a children prop in the component.

  • @davilagotaveira
    @davilagotaveira Рік тому +12

    Awesome Project Adrian! I'm 20, Brazilian and starting my career with nextjs on this month, I don't have money for the entire curse yet but I really love to make all this projects with you, I wish I will start my own projects soon, thank you for all! God bless you!

  • @GreenPear-mz4dl
    @GreenPear-mz4dl Рік тому +7

    Hi Adrian, know you is a blessing, I am really grateful that you make the NEXTJS14 course on sale again so I could be able to buy it yesterday. I love all of your Video contents, they are free but beyond quality. Thank you again. 💯💯💯

  • @Lamayoo
    @Lamayoo 4 місяці тому +1

    please do more of these videos they are so helpful and not overwhelming. Thank You for your efforts.

  • @Tapadar.Monsur
    @Tapadar.Monsur Рік тому +19

    I'm thoroughly enjoying these concise crash courses that delve into specific topics. Thank you for creating these informative videos. I look forward to more content in the future, and I would particularly appreciate a short tutorial on React Query. Keep up the great work!

  • @sobanmustafa4457
    @sobanmustafa4457 Рік тому +3

    Awesome video. Yes Please make more content of this type which focuses on a single specific feature. it helps to get more in-depth knowledge of that topic. Thank you so much

  • @tryingtobeproductive
    @tryingtobeproductive Рік тому +2

    nobody makes me feel motivated to code than this guy on the leadup to the coding, well done

  • @vanguox
    @vanguox Рік тому +3

    Finally I have something to do for the next two weeks! Thanks JSM.

  • @seventyMinus1
    @seventyMinus1 Рік тому +4

    The way you explained things is Just Amazing. This video is really a piece of work

  • @mariakaravazaki4608
    @mariakaravazaki4608 3 місяці тому +1

    Hi Adrian, that's great content, please make more videos like this, thank you for everything!

  • @edihasrin7290
    @edihasrin7290 Рік тому +4

    prefer like this, under 1 hours, easy to understand, love it ❤❤❤❤

  • @Stefoux
    @Stefoux Рік тому +4

    Excellent little project with explanation of concepts! I would like to have more content like this to improve frontend concepts ! Thank you Adrian & JSM

  • @nabeelmirza8801
    @nabeelmirza8801 Рік тому +3

    Wow, I'm so impressed of your websites!

  • @razeft
    @razeft Рік тому +1

    Really good project for explain the concept! I suggest everyone to use something to take note when watch this kind of video, it's nice to do the project, but it's really important to take note when he explain the concept.

  • @2pacrapempire866
    @2pacrapempire866 11 місяців тому +1

    Thank you so much, need more of this. You explain the concepts in an easy way. Thanks

  • @Omi-rn4cg
    @Omi-rn4cg Рік тому +2

    G.O.A.T , one love from Nigeria.

  • @online_sourcecode1613
    @online_sourcecode1613 Рік тому +2

    really helpful, i was struggling with infinite scroll functionality

  • @deathdefier45
    @deathdefier45 6 місяців тому

    Love you man this is the absolute best tutorial to get up and running with nextjs 14

  • @aleksandrgolyk3787
    @aleksandrgolyk3787 Рік тому +2

    this is great, simply and very useful class. Very required format nowadays) Show must go on!!! Thank you so much!!

  • @jooncco
    @jooncco Рік тому

    The concept of Server Action became clear thanks to this video. Thanks Adrian 👏🏼👏🏼

  • @MuhammadHussain-codr
    @MuhammadHussain-codr Рік тому +1

    Great! Please more of this type of videos. Thank You

  • @dev-akeel
    @dev-akeel Рік тому +4

    33:43 Yes but some of the components are rendered client side even without directive.
    So see that it is client side rendered move to the sources tab and see that browser has that AnimeCard component.
    Thanks a lot sir, still great efforts 👌

    • @dev-akeel
      @dev-akeel Рік тому

      Sir can you please mark the AnimeCard component with "use server" directive and reply here with what you have, everything working fine or error..?

    • @javascriptmastery
      @javascriptmastery  Рік тому +1

      That's a great observation

  • @mohammadharish8740
    @mohammadharish8740 Рік тому +1

    Love you adrian for putting my suggestion to the video itself 😭😭😭😭❣️

  • @alexanderchepkiyeng
    @alexanderchepkiyeng Рік тому +24

    2 years later, I am still Here loving the content 🎉❤

    • @javascriptmastery
      @javascriptmastery  Рік тому +1

      Thank you so much! ❤️

    • @serxeoworld5773
      @serxeoworld5773 Рік тому

      Did you get hired?

    • @alexanderchepkiyeng
      @alexanderchepkiyeng Рік тому

      @@serxeoworld5773 Not yet. Been working on getting the capital I Join the Masterclass, passed the interview with flying colours. JSM, Adrian articulates core concepts in a simple clear manner. Provided you have the innate will to learn consistently through practice. Understand, Rinse then Repeat 🔁

    • @franukito
      @franukito Рік тому +1

      sir do you live in year 2025?
      salutations from year 2023

    • @Akash_Unreal
      @Akash_Unreal Рік тому

      ​@@franukitohe means he's a old sub and still watches the content frankfurt dickson

  • @OPGAMER.
    @OPGAMER. Рік тому +2

    As a anime lover, really excited to built this project.

  • @deviskalo
    @deviskalo Рік тому +1

    Wow, amazing! Thanks for this @adrian

  • @ProjectsMastery82
    @ProjectsMastery82 Рік тому +1

    Great video 🎉

  • @vaniad555
    @vaniad555 11 місяців тому

    What a great short project, it works like magik. Hope to see much more.

  • @mahmudulislamrudra5659
    @mahmudulislamrudra5659 Рік тому +2

    Thanks man. Thanks a lot. This type of video is very helpful to explain concepts and facts. So, if its possible, then keep making this type of videos and contents...

  • @ModernMonk0
    @ModernMonk0 5 місяців тому +1

    Yes, Make these simple apps and explain these small concepts

  • @syndg
    @syndg Рік тому +1

    Amazingggg! Was literally waiting for you to upload a video where you use framer motion!

  • @asrafulislam8948
    @asrafulislam8948 Рік тому +1

    Great video as always.

  • @duduzincp
    @duduzincp Рік тому +1

    Nice bro, Brazil thanks you

  • @magnusbrzenk447
    @magnusbrzenk447 10 місяців тому +1

    “nextJs becoming php” is the perfect summary of my concerns with all the new jazz

    • @academai11
      @academai11 10 місяців тому

      'use php';
      coming soon...

  • @sandrogtz
    @sandrogtz Рік тому

    perfect video length packed with valuable knowledge thanks

  • @apo__tato__sal__ad
    @apo__tato__sal__ad 9 місяців тому

    This was amazing!!

  • @zhiven7484
    @zhiven7484 Рік тому +1

    Very good video!! Looking for more!

  • @Nanashi-rq7lk
    @Nanashi-rq7lk 4 місяці тому +1

    Thanks. Good Tutorial

  • @himel_islam
    @himel_islam Рік тому +1

    really helpful!! please do make this types of videos

  • @salihbozkaya8465
    @salihbozkaya8465 Рік тому +1

    Next.js is just awesome❤

  • @manomangaldas
    @manomangaldas Рік тому +1

    Crash courses are awesome.. please do more of these concept based videos

  • @Omarwaqar-pt7wf
    @Omarwaqar-pt7wf Рік тому +1

    Yes , pls do more of these videos

  • @sportsmanship2024
    @sportsmanship2024 Рік тому +1

    Wow! This is a great content. I wish to join the ultimate class. Thank you for the insight Mr.Andrian. We will like to get more insights and contents from you

  • @mamitianasolofo723
    @mamitianasolofo723 Рік тому +1

    Your videos are amazing

  • @aroundtheworld560
    @aroundtheworld560 Рік тому +1

    Boss! Love You.❤

  • @codecure4009
    @codecure4009 11 місяців тому

    Love your way of Explaining

  • @Deus-lo-Vuilt
    @Deus-lo-Vuilt Рік тому +2

    Wow
    Next 14 with framer motion ❤

  • @anujkashyap999
    @anujkashyap999 Рік тому +2

    My mentor, ❤ hey there!

  • @aadarshgurug
    @aadarshgurug Рік тому +1

    it's amazing, need more videos like this ?

  • @Imacul77Game
    @Imacul77Game Рік тому +2

    Thanks 🎉

  • @pep3marquez46
    @pep3marquez46 Рік тому +1

    I love it. Thanks, a lot!

  • @b166er4
    @b166er4 Рік тому

    thx for this great tuto,
    i think,
    delay: (index % 8) * 0.1
    can be a good way to handle the stagger(based on limit=8)

  • @Imacul77Game
    @Imacul77Game Рік тому +1

    Thanks a lot 🎉 Adrian

  • @lukaszsl
    @lukaszsl Рік тому

    Hi Thanks for the video !
    Info for motion:
    To have a server component inside the client component you need to use children props. Something like that:
    "use client";
    import React from "react";
    import { motion } from "framer-motion";
    type Props = {
    children: React.ReactNode;
    className?: string;
    };
    const variants = {
    hidden: { opacity: 0, y: -50 },
    visible: {
    opacity: 1,
    y: 0
    },
    };
    export const MotionDiv = ({ children, className }: Props) => {
    return (

    {children}

    );
    };
    export default MotionDiv;
    //export const MotionDiv = motion.div;

  • @mahtabvariyani
    @mahtabvariyani Рік тому +1

    perfect as always....

  • @alexkarpen
    @alexkarpen Рік тому +1

    For animation delay use the current page too, it will get smoother. Because the last from the first page is visible after the first of the second. Anyway awesome content thank you once more!

  • @suryakantasinha
    @suryakantasinha Рік тому +1

    Finally😆small project but great🤩

  • @irfansaeedkhan7242
    @irfansaeedkhan7242 Рік тому

    very helpful , thank you for in detail knowledge

  • @waggadash
    @waggadash Рік тому

    Well done!

  • @Kokouvi_el_mejor
    @Kokouvi_el_mejor Рік тому +1

    Thanks ADRIAN

  • @valentinkrajzelman4649
    @valentinkrajzelman4649 Рік тому +2

    omg next 14 already jesus

  • @zyncc
    @zyncc Рік тому +1

    Its an amazing day when JSM uploads a video 😉

  • @wildanmaulana1882
    @wildanmaulana1882 Рік тому +9

    here is the simple code for framer motion,
    just add this in your map
    const adjustedIndex = index % 20;
    - the number 20 is limit data perpage
    so you dont need to move the map into actions file
    for example, in loadmore component
    data.map((series: SeriesCard, index) => {
    const adjustedIndex = index % 20;
    return (



    );
    })
    sorry my english is bad

  • @podmixglobal
    @podmixglobal Рік тому +1

    Big fan sir ❤

  • @heruuu6114
    @heruuu6114 Рік тому +1

    amazing job!

  • @akindutiredayo3433
    @akindutiredayo3433 19 днів тому

    Wow It really amazing thanks

  • @SamarHayatOfficial
    @SamarHayatOfficial Рік тому +1

    I'm just waiting for your tutorial 😊

  • @marvikfr
    @marvikfr Рік тому

    Delicious ^^
    Merci !

  • @syncosota
    @syncosota Рік тому

    thank you master ❤

  • @sarhan_104
    @sarhan_104 Рік тому

    yes i want that simple apps with more focused on learning

  • @alrazy12
    @alrazy12 Рік тому +1

    yes do more tutorials like this one

  • @bekizodcancer3657
    @bekizodcancer3657 Рік тому +1

    You are out of human species...Thanks man

  • @Ekko-d7o
    @Ekko-d7o 11 місяців тому

    thank you so muxh ❤

  • @marekgacekdev
    @marekgacekdev Місяць тому

    awesome, thx very much!

  • @RIOxICONIC
    @RIOxICONIC Місяць тому

    Sir, Please Continue This Series Of Teaching Us NEXT JS Concepts

  • @lCebolitosl
    @lCebolitosl Рік тому +1

    I want the JSM course so bad but I'm broke and unemployed right now. Finished Odin Project and some JSM projects and trying to land a first job so I can invest into this course!

  • @wilsonmela6343
    @wilsonmela6343 Рік тому +1

    Thank you so much.

  • @elhaambasheerch7058
    @elhaambasheerch7058 Рік тому +1

    These kind of videos are generally more useful

  • @pranavanilkumar1246
    @pranavanilkumar1246 Рік тому +1

    Top Class

  • @Nanashi-rq7lk
    @Nanashi-rq7lk 11 місяців тому

    Perfect Tutorial

  • @BillaSaheb786
    @BillaSaheb786 Рік тому +1

    great excellent plz make more project on server action

  • @frontend_ko
    @frontend_ko 9 місяців тому

    thanks for nice video!

  • @sanketchauhan901
    @sanketchauhan901 7 місяців тому

    Bro casually showed us how to render server side components inside a client side component!

  • @BappyTechTips
    @BappyTechTips 11 місяців тому

    Instead of returning the AnimeCard from the server action, a better approach would be to adjust the delay. We can simply do it using the remainder operator like this. delay: (index % 8 ) * 0.25,

  • @AdamuAnita
    @AdamuAnita 3 місяці тому

    Thank you

  • @NhanNguyen-yu3gs
    @NhanNguyen-yu3gs Рік тому

    to be honest, i would like you release another video like that to explain more power Next.js features rather than the series which fully practices nextjs project. But btw, i always grant what you did.

  • @vOnez212
    @vOnez212 Рік тому +1

    Good stuff. Much appreciated! Anything on Payload CMS planned?

  • @ahmed01053
    @ahmed01053 Рік тому +3

    Your content is very nice , interesting And I love it very much❤️❤️
    I would like it if you could create courses in Angular or projects using it🙏❤️

  • @sanjay261982
    @sanjay261982 Рік тому +1

    You started with server action but showed react server component (RSC) functionality. Data fetch on server side is based on RSC. Server Actions is completely different and is used for data mutations on server. Try to show a client side component with use client directive directly mutating the DB using a inline function that has a use server directive inside that functions boundary. That will be a good example of react server action.

    • @sujatagunale7079
      @sujatagunale7079 Рік тому

      Project shows both the ways of using server action from the client (check LoadMore component) and server components. And in the beginning, it does talk about mutations and stuff through code snippets 👍

    • @javascriptmastery
      @javascriptmastery  Рік тому

      Yes! 😊

    • @dev-akeel
      @dev-akeel Рік тому

      @@sujatagunale7079 really🤔
      I think you couldn't understand that comment.
      The data is normally fetched from the server it is not server action.
      *But still a great video.* 💖💖

    • @sanjay261982
      @sanjay261982 Рік тому +1

      ​@@dev-akeelthankyou

  • @gyanganga8441
    @gyanganga8441 Рік тому

    I'm following this channel for a year but never completed any single project as mostly get stuck.
    but this project completing after Next js also did in react js .

  • @teenageworrior1634
    @teenageworrior1634 Рік тому +1

    Anime ❤❤❤

  • @smartycode
    @smartycode Рік тому +1

    Live Long Brother.

  • @sheriffmuraina
    @sheriffmuraina Місяць тому

    Very genuine

  • @MiladJoodi
    @MiladJoodi 10 місяців тому

    perfect

  • @Sbz-i2c
    @Sbz-i2c Рік тому

    Many thanks for your tutorials 👍
    Is it correct to say that:
    - the fetch on the home page server-component is done at built-time ?
    - and then all subsequent fetch from LoadMore client-side component are made at run-time, but not from the client as would do a "traditional" fetch in a React component, but rather on the server, thanks to the "use server" directive in the fetchAnime ("action") file ?

    • @FrancescoArosio
      @FrancescoArosio Рік тому

      As a newbie, I got to the same your conclusions.
      If I npm run build it, the first results from homepage are statically hardened into html static files. Maybe removing it from homepage should "abuse" immediately of the LoadMore 'trigger' to dynamically ask server to fetch new data as page 1 too (also changing the prop page to init val 1 in LoadMore).
      As per subsequent calls by LoadMore, yes - the fetch is run by the server, but the client is still POST-ing a request to the server, instead of fetching data directly from API server. This is useful if you have "private" keys to query target APIs or some internal backend/datasource you don't want to make publicly accessible, or you don't want to write different APIs from scratch.

  • @atmanirbharofficialindiaon2789

    Pls tell ur vscode theme looks so good

  • @Yoria__
    @Yoria__ Рік тому +1

    At 12:31, what did you do to correct the errors?