John Komarnicki
John Komarnicki
  • Видео 168
  • Просмотров 1 538 824
Nuxt + ConvertKit Landing Page Form
🤖 WebDevDaily: www.webdevdaily.io
📕 Nuxt 3 Course: www.learnnuxt.dev/
📕 Vue 3 Crash Course: johnkomarnicki.gumroad.com/l/tqrmw
🚀 Join the channel :ruclips.net/channel/UCr0D7PVNOHqB3Td7lVl_LKwjoin
🤖 Website: johnkomarnicki.com/
🐦 Twitter: john_komarnicki
Starting point: github.com/johnkomarnicki/nuxt_convertkit
Timestamps:
0:00 Introduction
1:20 Application walkthrough
3:36 Configure API key
5:14 Nuxt Server Route - Obtain Body and Nuxt Runtime Config
6:30 Nuxt Server Route - Validate email
8:40 Nuxt Server Route - Convertkit Request
13:14 Configure FE with Server Route
15:09 Testing Form Submission
15:55 Convertkit Form Settings
#nuxt #convertkit
Просмотров: 662

Видео

Route Middleware With Nuxt
Просмотров 1,5 тыс.Месяц назад
WebDevDaily: www.webdevdaily.io 📕 Nuxt 3 Course: www.learnnuxt.dev/ 📕 Vue 3 Crash Course: johnkomarnicki.gumroad.com/l/tqrmw 🚀 Join the channel :ruclips.net/channel/UCr0D7PVNOHqB3Td7lVl_LKwjoin Website: johnkomarnicki.com/ 🐦 Twitter: john_komarnicki #vue #vue3 #routemiddleware #nuxt #nuxt3
A Better Approach To Data Fetching In Nuxt?
Просмотров 3,7 тыс.Месяц назад
WebDevDaily: www.webdevdaily.io 📕 Nuxt 3 Course: www.learnnuxt.dev/ 📕 Vue 3 Crash Course: johnkomarnicki.gumroad.com/l/tqrmw 🚀 Join the channel :ruclips.net/channel/UCr0D7PVNOHqB3Td7lVl_LKwjoin Website: johnkomarnicki.com/ 🐦 Twitter: john_komarnicki Data Fetching with Nuxt: ruclips.net/video/yk80g6QS30Y/видео.html #vue #vue3 #datafetching #nuxt #nuxt3
Tailwind Just Got So Much Better!
Просмотров 2,3 тыс.2 месяца назад
github.com/brandonmcconnell/tailwindcss-signals WebDevDaily: www.webdevdaily.io 📕 Nuxt 3 Course: www.learnnuxt.dev/ 📕 Vue 3 Crash Course: johnkomarnicki.gumroad.com/l/tqrmw 🚀 Join the channel :ruclips.net/channel/UCr0D7PVNOHqB3Td7lVl_LKwjoin Website: johnkomarnicki.com/ 🐦 Twitter: john_komarnicki #tailwindcss #tailwind #tailwindsignals
Two-Way Binding Just Got Much Simpler!
Просмотров 1,9 тыс.2 месяца назад
WebDevDaily: www.webdevdaily.io 📕 Nuxt 3 Course: www.learnnuxt.dev/ 📕 Vue 3 Crash Course: johnkomarnicki.gumroad.com/l/tqrmw 🚀 Join the channel :ruclips.net/channel/UCr0D7PVNOHqB3Td7lVl_LKwjoin Website: johnkomarnicki.com/ 🐦 Twitter: john_komarnicki v-model simplified: ruclips.net/video/Jqo79GG5ONE/видео.html Timestamps: 0:00 Introduction 0:26 Pre 3.3 approach 1:45 3.4 approach wi...
Should You Use Vue Slots Over Props?
Просмотров 1,7 тыс.2 месяца назад
WebDevDaily: www.webdevdaily.io 📕 Nuxt 3 Course: www.learnnuxt.dev/ 📕 Vue 3 Crash Course: johnkomarnicki.gumroad.com/l/tqrmw 🚀 Join the channel :ruclips.net/channel/UCr0D7PVNOHqB3Td7lVl_LKwjoin Website: johnkomarnicki.com/ 🐦 Twitter: john_komarnicki #vue #vue3 #nuxt #nuxt3
A Better Way To Handle Vue Props?
Просмотров 4 тыс.4 месяца назад
WebDevDaily: www.webdevdaily.io 📕 Nuxt 3 Course: www.learnnuxt.dev/ 📕 Vue 3 Crash Course: johnkomarnicki.gumroad.com/l/tqrmw 🚀 Join the channel :ruclips.net/channel/UCr0D7PVNOHqB3Td7lVl_LKwjoin Website: johnkomarnicki.com/ 🐦 Twitter: john_komarnicki #vue #vue3 #nuxt #nuxt3
What Is Hybrid Rendering In Nuxt?
Просмотров 1,9 тыс.5 месяцев назад
WebDevDaily: www.webdevdaily.io 📕 Nuxt 3 Course: www.learnnuxt.dev/ 📕 Vue 3 Crash Course: johnkomarnicki.gumroad.com/l/tqrmw 🚀 Join the channel :ruclips.net/channel/UCr0D7PVNOHqB3Td7lVl_LKwjoin Website: johnkomarnicki.com/ 🐦 Twitter: john_komarnicki Learn about how you can hybrid render a nuxt application. Timestamps: 0:00 Introduction 0:37 WebDevDaily Ad 1:27: What is client side...
Get Started With Nuxt's Runtime Config API
Просмотров 1,4 тыс.5 месяцев назад
WebDevDaily: www.webdevdaily.io 📕 Nuxt 3 Course: www.learnnuxt.dev/ 📕 Vue 3 Crash Course: johnkomarnicki.gumroad.com/l/tqrmw 🚀 Join the channel :ruclips.net/channel/UCr0D7PVNOHqB3Td7lVl_LKwjoin Website: johnkomarnicki.com/ 🐦 Twitter: john_komarnicki Learn all the basics about the Nuxt runtime config api. Timestamps: 0:00 Introduction 0:13 WebDevDaily Ad 1:03 How the Runtime Config...
Handling Webhooks With Nuxt 3
Просмотров 3,2 тыс.5 месяцев назад
WebDevDaily: www.webdevdaily.io 📕 Nuxt 3 Course: www.learnnuxt.dev/ 📕 Vue 3 Crash Course: johnkomarnicki.gumroad.com/l/tqrmw 🚀 Join the channel :ruclips.net/channel/UCr0D7PVNOHqB3Td7lVl_LKwjoin Website: johnkomarnicki.com/ 🐦 Twitter: john_komarnicki Learn all the basics about Webhooks and how to handle them with Server Routes in Nuxt 3. Timestamps: 0:00 Introduction 0:12 WebDevDai...
Auth For Developers | Introduction To Nuxt + Kinde
Просмотров 2,2 тыс.6 месяцев назад
🔒 Kinde: kinde.com/ WebDevDaily: www.webdevdaily.io 📕 Nuxt 3 Course: www.learnnuxt.dev/ 📕 Vue 3 Crash Course: johnkomarnicki.gumroad.com/l/tqrmw 🚀 Join the channel :ruclips.net/channel/UCr0D7PVNOHqB3Td7lVl_LKwjoin Website: johnkomarnicki.com/ 🐦 Twitter: john_komarnicki Learn all the basics about Nuxt & Kinde, a new era of authentication. Timestamps: 0:00 Introduction 0:28 WebDevDa...
Getting Started With Nuxt UI
Просмотров 13 тыс.7 месяцев назад
Getting Started With Nuxt UI
Data Fetching With Nuxt 3
Просмотров 27 тыс.7 месяцев назад
Data Fetching With Nuxt 3
Make Your Websites Look MUCH Better in Seconds
Просмотров 2 тыс.8 месяцев назад
Make Your Websites Look MUCH Better in Seconds
Easily Deploy To Vercel With A Custom Domain
Просмотров 10 тыс.8 месяцев назад
Easily Deploy To Vercel With A Custom Domain
Configure Custom SMTP For Supabase Auth With Resend
Просмотров 6 тыс.9 месяцев назад
Configure Custom SMTP For Supabase Auth With Resend
Must Use Tools For Tailwind CSS
Просмотров 3,1 тыс.9 месяцев назад
Must Use Tools For Tailwind CSS
Loading Your Data Like This Is Awesome
Просмотров 3,1 тыс.9 месяцев назад
Loading Your Data Like This Is Awesome
Figma Design To Code | WebDevDaily Front-end Challenge (Modern Sign-up Form)
Просмотров 75110 месяцев назад
Figma Design To Code | WebDevDaily Front-end Challenge (Modern Sign-up Form)
Don't do this in your Nuxt application
Просмотров 2,3 тыс.10 месяцев назад
Don't do this in your Nuxt application
How to client-side render a component while using SSR (Nuxt 3)
Просмотров 3,3 тыс.10 месяцев назад
How to client-side render a component while using SSR (Nuxt 3)
Solving a beginner front-end challenge with tailwind css as a mid-level developer | (No Talking)
Просмотров 55010 месяцев назад
Solving a beginner front-end challenge with tailwind css as a mid-level developer | (No Talking)
This is a great front-end challenge for any developer to try!
Просмотров 1,1 тыс.10 месяцев назад
This is a great front-end challenge for any developer to try!
Easily Add Social Share Preview Links to a Nuxt 3 Application
Просмотров 2,5 тыс.11 месяцев назад
Easily Add Social Share Preview Links to a Nuxt 3 Application
This new platform is GREAT for improving your front-end skills!
Просмотров 1,3 тыс.11 месяцев назад
This new platform is GREAT for improving your front-end skills!
Nuxt DevTools First Look
Просмотров 6 тыс.Год назад
Nuxt DevTools First Look
Easily Add Authentication With Nuxt 3 + Supabase
Просмотров 13 тыс.Год назад
Easily Add Authentication With Nuxt 3 Supabase
Vue 3 Just Got Some Massive Upgrades
Просмотров 3,5 тыс.Год назад
Vue 3 Just Got Some Massive Upgrades
This New Vue 3.3 defineModel Macro Will Change The Way You Write Your Components
Просмотров 9 тыс.Год назад
This New Vue 3.3 defineModel Macro Will Change The Way You Write Your Components
Vue 3 V-Model Simplified
Просмотров 5 тыс.Год назад
Vue 3 V-Model Simplified

Комментарии

  • @PlainOlSoapBar
    @PlainOlSoapBar 10 часов назад

    1:45:28 How do you select multiple of the same line and then delete them? Also, thank you for this tutorial, it was very helpful!!

  • @randomtimessomehow
    @randomtimessomehow 10 часов назад

    Takes a while getting use to... Also, what I will never understand: is "update:modelValue" a reserved name? Like, can I also name it "update:content"?

    • @JohnKomarnicki
      @JohnKomarnicki 10 часов назад

      Yes, if you were to define your v-model with a name then it would be update:yourName

  • @tolgabeyazoglu536
    @tolgabeyazoglu536 День назад

    Is there any use you can recommend for the cms panel

  • @Mateusz-ht8pl
    @Mateusz-ht8pl 2 дня назад

    Thanks

  • @TariqAli-nm1vc
    @TariqAli-nm1vc 5 дней назад

    I am unable to find this code in your github.

  • @aqordeon
    @aqordeon 5 дней назад

    this video develop my Vue skill. thanks.

  • @rashmi_t
    @rashmi_t 6 дней назад

    I only watch 19 min video and had to stop and say that this is the best tailwind tutorial EVER!!! and you are an Amazing instructor. Very clear instructions and easy to follow as well. Thank you so much for sharing such a valuable content free of cost. may Almighty bless you. Amen. I subscribed your Channel as well.

  • @RomFeliciano
    @RomFeliciano 6 дней назад

    Hello sir can you make a video about nuxt apollo? I am trying to initially fetch my data using useAsyncQuery but when I reload the page the data are gone but when using <NuxtLink> going back to that page displayed my data

  • @islamahmad9
    @islamahmad9 8 дней назад

    Thank you so much, Excellent tutorial

  • @rafaelarantes4804
    @rafaelarantes4804 8 дней назад

    I come from Reactland, the slots approach seems really like a pattern we call composable components. Really nice how this kind of knowledge can be passed through frameworks with no issues at all :)

  • @tanzimibthesam5861
    @tanzimibthesam5861 8 дней назад

    What to do if i want to make whole form resuable?

  • @edam748
    @edam748 9 дней назад

    I like this vedio

  • @larsnobel4279
    @larsnobel4279 9 дней назад

    Not showing how template is build and no github repo?

  • @husseinalhilfi8186
    @husseinalhilfi8186 10 дней назад

    It is not secure.

  • @psykhout
    @psykhout 11 дней назад

    I have a question if we use pick on our call function is that essentially what Graphql tries to implement?

  • @abdulmlaikalomayri727
    @abdulmlaikalomayri727 11 дней назад

    Amazing video John, the way you simplest things is admirable.

  • @defanx441
    @defanx441 11 дней назад

    Thanks man

  • @user-gu8hk3ub9f
    @user-gu8hk3ub9f 12 дней назад

    for me it is not working i am using mac

  • @berkaykarademir8641
    @berkaykarademir8641 13 дней назад

    you are the best easily. thanks for sharing better approaches instead of just talking about how to do things in the most primitive way

  • @marhunter1698
    @marhunter1698 13 дней назад

    That doesn't work on ios

  • @alexmusic2534
    @alexmusic2534 13 дней назад

    Buen video bro, pero hay un problem, es que cuando se activa el modo oscuro, y al actualizer la página, me arroja un pantallazo blanco 2:29, como lo soluciono

  • @NicolasCoffez
    @NicolasCoffez 14 дней назад

    Great videos! I was looking for a channel that explains how to utilize nuxt for a long while!!

  • @IoSuAu
    @IoSuAu 14 дней назад

    This tutorial could have been 1hr instead of 2 if it wasnt for all the styling 😅, its good tho

  • @galyedidovich
    @galyedidovich 14 дней назад

    Pro tip: no need to make deleted points a ref 😎 17:23

  • @somewonderfulguy
    @somewonderfulguy 15 дней назад

    Thanks, John! This helped a lot!

  • @cannabisanomaly
    @cannabisanomaly 17 дней назад

    I have an interview for a Senior Vue Front End position and this couldn't have came at a better time; thank you so much for the awesome content! I added in another feature (albeit, in a hacky way) where there's a little indicator that appears briefly to let you know your progress has been saved: <script> let saveDisplay = ref(false); function saveContent() { clearTimeout(timeout.value); setTimeout(() => (saveDisplay.value = false), 3000); timeout.value = setTimeout(() => { saveDisplay.value = true; localStorage.setItem("quillContent", JSON.stringify(quillContent.value)); }, 800); </script> <template> <div v-if="saveDisplay">Progress Saved</div> </template>

  • @jaisuriyan9506
    @jaisuriyan9506 19 дней назад

    It’s not working for jest , can anyone suggest me how to connect this extension with jest .

  • @miguelcassimiro8103
    @miguelcassimiro8103 21 день назад

    Thanks a lot, great content. I was woundering if you could share how you setup your vs code to Vue and Nuxt projects. I'm can't have the types for nuxt UI autocomplete and have a weird problem to auto import components inside the components folder.

  • @cannabisanomaly
    @cannabisanomaly 22 дня назад

    Sorry to yet again be the squeaky wheel in this comment section, but just wanting to share new knowledge I'm learning that can simplify the overall process for form validations within Vue. At 46:27, a lot of the validation logic that you're writing out is functionality that already exists from the client's browser. If you wrap your input in a <form> tag and inject Vue's v-on directive, along with the 'required' attribute in the <input> tag, both the validation for an empty submit and resetting the input field after a valid submission is much easier. You're also able to submit the form by hitting the Enter button, rather than having to only click the "Create" button, when you wrap it in a <form> tag. This is what it looks like: <!-- TodoCreator.vue --> <script setup> import { ref } from 'vue'; const todo = ref(''); const emit = defineEmits(['create-todo']); function createTodo() { emit('create-todo', todo.value); todo.value = ''; } </script> <template> <form @submit.prevent @submit="createTodo"> <div class="input-wrap"> <input required type="text" placeholder="Enter Your Todo" v-model="todo" /> <button>Create Your Todo</button> </div> </form> </template> <!-- TodosView.vue --> <script setup> import { ref } from 'vue'; import TodoCreator from '../components/TodoCreator.vue'; const todoList = ref([]); const createTodo = (todo) => { todoList.value.push({ id: crypto.randomUUID(), todo, isCompleted: null, isEditing: null, }); }; </script> <template> <main> <h1>Create a Cruddy</h1> <TodoCreator @create-todo="createTodo" /> </main> </template>

  • @cannabisanomaly
    @cannabisanomaly 22 дня назад

    Amazing course, thank you so much for this, John! The level of detail you go into is wonderful and miles above the usual "code-along" tutorials. I wanted to mention at 41:05, defineEmits() doesn't need to be imported, nor does defineProps(); that setup attribute that's included in the script tag allows for those macros to be compiled at run-time, so no imports are necessary for them

  • @ahmadmraish5834
    @ahmadmraish5834 22 дня назад

    Warm hugs. Thank you sir.

  • @youhan96
    @youhan96 23 дня назад

    Great tip. I guess pending is going to be replaced by status==='pending' in v4

  • @user-yy8kf5gu8u
    @user-yy8kf5gu8u 23 дня назад

    I was wondering, when using useFetch it is universale rendering, when is it doing ssr and when is it doing csr? Because if you have a loading screen it is basically doing csr which is not great for seo right?

    • @JohnKomarnicki
      @JohnKomarnicki 23 дня назад

      As you mentioned, Nuxt has universal rendering. The initial page load will happen on the server and then after that it’s client side. This approach just helps provide a better user experience after the app has been loaded initially. UseFetch handles fetching the data on the server and then it passes that data to the client without refetching when the app hydrates.

    • @user-yy8kf5gu8u
      @user-yy8kf5gu8u 23 дня назад

      @@JohnKomarnicki Thanks!

  • @levantos
    @levantos 23 дня назад

    This helped so much, was farting around failing with Mailgun and this video and Resend came into save the day for my business. Thank you John, all the very best mate.

  • @Akamify
    @Akamify 23 дня назад

    Thank you ❤

  • @najatiscoding
    @najatiscoding 27 дней назад

    Hi, thank you for this helpful video. Does this supposed to work in Vue3 if I implemented SSR the Vite SSR way?

  • @anggitnendyo9726
    @anggitnendyo9726 28 дней назад

    can we use it for video instead of image? and make the active slide autoplay like instagram?

  • @jasonaliOMGITSJASONALI
    @jasonaliOMGITSJASONALI 28 дней назад

    you sir are an excellent teacher, kudos to you...

  • @adams.george
    @adams.george 28 дней назад

    For those who still couldn't see the website, there will be 2 rules named "Visual Studio Code" in Inbound Rules. Edit Properties for either or both of them as follows: "Windows Defender Firewall with Advanced Security" > Inbound Rules > Double click "Visual Studio Code" > Uncheck "Private" or whichever that applies to you > Done!

  • @ArunKumar_237
    @ArunKumar_237 29 дней назад

    Love you thank you very much

  • @ozzyfromspace
    @ozzyfromspace Месяц назад

    one word: LEGENDARY! 🎉🏆

  • @The4tticuz
    @The4tticuz Месяц назад

    Thanks for that useful tips in here. Just wondered if a hydration mismatch warning has been logged on the deployed website?

  • @YessenOrazbaiuly
    @YessenOrazbaiuly Месяц назад

    Very useful info. Thank You!

  • @avi_mukesh
    @avi_mukesh Месяц назад

    Thank you so much for this, very helpful.

  • @danmcdade2503
    @danmcdade2503 Месяц назад

    This is a really great overview thanks for putting this together

  • @user-bg7iz4cw8i
    @user-bg7iz4cw8i Месяц назад

    Hello! Why doesn't this work with Nuxt 3?

  • @sonny5497
    @sonny5497 Месяц назад

    thanks this was very helpful 💯

  • @BloodBunn
    @BloodBunn Месяц назад

    auth.js from middleware (prevent access to profile page if !user.value) export default defineNuxtRouteMiddleware(() => { const user = useSupabaseUser() if (!user.value) { return navigateTo('/login') } }) auth2.js from middleware (redirect the login page to profile page if logged in) export default defineNuxtRouteMiddleware(() => { const user = useSupabaseUser() if (user.value) { return navigateTo('/profile') } })

  • @BloodBunn
    @BloodBunn Месяц назад

    login/register page code: <template> <div> <div class="flex justify-between max-sm:flex-col mt-6 py-10 bggradito " > <div class="flex-1"> <img src="~assets/images/image1.png" class="w-full px-3"> </div> <div class="flex-1 mt-16 max-md:mt-3 max-md:px-3 "> <div class="relative overflow-hidden bg-white shadow-lg shadow-slate-500 w-72 max-sm::w-60 h-96 mx-auto "> <div class="text-center py-4 px-6"> <span class="text-gray-800 font-bold mr-7 cursor-pointer" @click="showRegister = false" >Login</span> <span class="text-gray-800 font-bold cursor-pointer" @click="showRegister = true">Register</span> <hr class=" w-20 h-1 bg-red-500 transform translate-x-[120px] mt-2 transition-transform duration-500 " id="indicator" :class="{' transform translate-x-[30px]' : !showRegister}"> </div> <form @submit.prevent="signIn" :class="{'transform translate-x-[300px]' : !showRegister}" class="absolute -left-[300px] top-24 w-[300px] space-y-4 px-5 max-md:px-2 transition-transform duration-500"> <input v-model="logEmail" type="text" placeholder="Email" class="w-full p-2 border-gray-300 border text-sm"> <input v-model="logPassword" type="password" placeholder="Password" class="w-full p-2 border-gray-300 border text-sm"> <button class="px-6 py-2 bg-red-500 rounded-full text-white block w-full">Login</button> <p v-if="logErrorMessage" class="text-red-500">{{ logErrorMessage }}</p> <p class="text-sm text-gray-500 cursor-pointer text-center">Forgot Password?</p> </form> <form @submit.prevent="signUp" :class="{'transform translate-x-[300px]' : !showRegister}" class="absolute left-0 top-24 max-w-[300px] space-y-4 px-5 max-md:px-2 transition-transform duration-500"> <input v-model="email" type="email" placeholder="Email" class="w-full p-2 border-gray-300 border text-sm"> <input v-model="password" type="password" placeholder="Password" class="w-full p-2 border-gray-300 border text-sm"> <input v-model="name" type="text" placeholder="Full Name" class="w-full p-2 border-gray-300 border text-sm"> <input v-model="age" type="number" placeholder="Age" class="w-full p-2 border-gray-300 border text-sm"> <p v-if="errorMessage" class="text-red-500">{{ errorMessage }}</p> <p v-if="successMessage" class="text-green-500">{{ successMessage }}</p> <button class="px-6 py-2 bg-red-500 rounded-full text-white block w-full ">Register</button> </form> </div> </div> </div> </div> </template> <script setup> const showRegister = ref(true) //when made back to true, the initial positions are restored. when false, the register and login move 300 pixesl to the right const client = useSupabaseClient() //if logged in, navigateTo profile: definePageMeta({ middleware: ['auth2'] }) //script for registeration const name = ref('') const age = ref(null) const email = ref('') const password = ref(null) const errorMessage = ref(null) const successMessage = ref(null) async function signUp() { try { const {data, error} = await client.auth.signUp({ email: email.value.trim(), password: password.value, options: { data: { name: name.value, age: age.value } } }) if (error) throw error //if no error: successMessage.value = 'Check your email to confirm your account' } catch (error) { errorMessage.value = error.message } } //script for login const router = useRouter() const logEmail = ref('') const logPassword = ref(null) const logErrorMessage = ref(null) async function signIn() { try { const { error} = await client.auth.signInWithPassword({ email: logEmail.value.trim(), password: logPassword.value }) if(error) throw error; router.push('/profile'); } catch (error) { logErrorMessage.value = error.message } } </script> <style scoped> #account { background: radial-gradient(#fff, #ffd6d6); } </style>

  • @BloodBunn
    @BloodBunn Месяц назад

    This was so useful, thanks! Please more nuxt and nuxt + supabase content