Watch Intro Video


Vue JS is a very popular JavaScript front-end framework that was designed specifically to help you write Web apps faster and more easily than ever before!

Used by companies such as Nintendo, Adobe, GitLab, Baidu and Alibaba, Vue JS is rapidly increasing in popularity, so it’s a great time to add it to your CV.

By the end of this course you’ll have the skills and confidence you need to use Vue JS on your own projects!

So, no matter whether you’re a complete beginner to Vue JS, or an experienced programmer keen to improve your skills, this course is for you!


Students learn best when they’re putting what they learn in to practice straight away, so we’ve build this course around two really great projects (which will look fantastic in your career portfolio!):

Project 1 - Activity Planner app

In this opening project students build their own activity planner web app! It’s a brilliant introduction to the basic concepts of the Vue JS framework, and by the end you’ll:

  • Have learnt how to create Vue components, data and methods

  • Know how to create store data into our browser Local Storage.

  • Fully understand Vue JS concepts like data binding, data manipulation, event handling, state management (and much more!)

Project 2 – VueMeetuper app

A much more difficult project, but one you’ll be proud of completing! Here students take a big step up and build an incredibly functional online meet up web app. Your app will let you make and join various Meetups, create editable threads and dedicated posts, register and authenticate users, build a user profile page and get your location! After doing all that, students will:

  • Be able to manage authentication with JWT (json web tokens) and Session Authentication on the client/server side.

  • Understand forms in JS - including how to integrate and validate plugins, how to use interactive (wizard) forms and how to integrate Datepicker and Timepicker inputs.

  • Create a chat-like functionality using the Socket library (a JS library for realtime web applications) – including real-time page updates!

  • Be able to to get location from IP address and use this location to improve user experience!

  • And much more!

With over 31 hours of on-screen instruction, it doesn’t matter whether you’re planning to start your career as a developer, or just want to improve your programming skills, this is the right course for you!

So what are you waiting for? Enrol now!!

NOTE: Some basic understanding of JavaScript and Node framework recommended (but very basic is fine!) as at one point we switch from our frontend application to our backend Node.js application. HOWEVER(!) the Node sections are completely optional, and you are able to download server code and work only on Vue JS Application.


  • No previous Vue JS knowledge is required!

  • Fundamentals in HTML and CSS helpful, but not a 'must have'

  • Basic Node JS knowledge, but not a 'must have' (Server Lessons are skippable)

Course Curriculum

  • 1


  • 2

    Beginner optional section - Todo Application

    • Section introduction

    • Initialization of Vue App

    • First code, Hello World

    • Introduction to variables

    • Introduction to functions part 1

    • Introduction to functions part 2

    • How web apps work part 1

    • How web apps work part 2

    • Introduction to operators

    • What is call stack

    • Introduction to objects

    • Introduction to classes

    • More about class contstructor

    • Introduction to this context

    • Introduction to inheritance part 1

    • Introduction to inheritance part 2

    • What is if statement

    • Learn more about ifs

    • Introduction to arrays

    • Map and filter array functions

    • Create custom array function

    • Difference between var, const, let

    • What is function scope

    • Initialization of todo app

    • Vue component data and methods

    • Create todo container html and css

    • Create todo items and stylings

    • Introduction to scss

    • Lets create more vue components

    • What are props

    • Explanation of v-for directive

    • Initialization of modal and stylings

    • Modal open button stylings

    • Move modal to separate component

    • Toggling of modal component

    • Implement close modal

    • Refactoring of modal component

    • Initialization of todo create form

    • What is two way data binding

    • New todo create component

    • Implementation of todo create

    • Introduction to form validation

    • Close modal after todo create

    • Learn how to handle form errors

    • Create edit and delete buttons

    • Display edit form for todo

    • Get values to edit form inputs

    • Data store architecture

    • Dispatch action from the store

    • Finishing update todo functionality

    • Implementing delete todo functionality

    • Introduction to store architecture

    • Learn how to persist data

    • Persist data improvements

    • Section summary

  • 3

    Project 1 - Activity Planner App

    • Section introduction

    • Introduction to Vue JS

    • Introduction to the Activity Planner App

    • Installation of vue js

    • Starting with directives part 1

    • Explanation of directives part 2

    • Explanation of v-for directive

    • Iterate over activities array

    • Introduction to forms - Create activity form

    • Introduction to Vue components

    • Making improvements in activity form

    • Section outro

  • 4

    Introducing Vue CLI

    • Section introduction

    • Initialization of the Activity Planner via Vue CLI

    • Info before cloning my github repo

    • Initialization of the Activity Planner via Github

    • Explanation of CLI application folder structure

    • Merging code from Project 1 application

    • Introduction to lifecycle funtions

    • Introduction to Eslint

    • Introduction to computed properties

    • Introduction to watchers

    • Learning more about computed properties

    • Creating select input in form

    • Moving form to separate component

    • Learning how to emit events

    • Introduction to debugging

    • Responsive UI updates with Vue.set

    • Asynchronous fetching of Activities data

    • Handle error from response

    • Introduction to Style Binding

    • Improving styling of Progress Bar

    • Introduction to Mixins

    • Introduction to Filters

    • Create abstraction of API

    • Finishing the API abstraction + Debugging

    • Introduction to callback functions

    • Implementing Delete Activity functionality

    • Finishing Delete Activity functionality

    • Implementing Update Activity functionality

    • 98 Finishing Update Activity functionality

    • Introduction to Store architecture - part 1

    • Store architecture - part 2

    • Store architecture - part 3

    • Improvements of Activity update functionality Part 1

    • Improvements of Activity update functionality Part 2

    • Persisting activities data in Local Storage

    • Filtering activities feature - part 1

    • Filtering activities feature - part 2

    • Filtering activities feature - part 3

    • Section outro

  • 5

    Project 2 - VueMeetuper App

    • Section introduction

    • Note before cloning github repo

    • Initialization of VueMeetuper via Github

    • Note before initialisation of server

    • [Optional] Initialization of VueMeetuper app via Vue CLI

    • [Optional] Explanation of Node Server

    • Setting up Mongo Atlas Database

    • Explanation of Proxy + fetching Categories data

    • Display Categories data in app

    • Display Meetups data in app

    • Introduction to Vue router

    • Setting up navigation to Detail page

    • Working on Detail page + fetching Meetup Data

    • Display Threads & Posts data in Detail page

    • Working on Meetup Find Page

    • Implementation of Not Found Page

    • Section Outro

  • 6

    Vuex - state management pattern + library

    • Section introduction

    • Initialization of Vuex

    • Introduction to Vuex Actions

    • Injecting Vuex into Components

    • Purpose of Shared Functions in Vuex

    • Easier access to Vuex - Mapping

    • Introduction to Modules - part 1

    • Introduction to Modules - part 2

    • Implementation of Loading Spinner

    • Finishing the Loading Spinner

    • Section outro

  • 7

    Form Validation - Introduction to Validators + Vuelidate

    • Section introduction

    • Initialization of Register and Login page

    • Binding component values to form

    • Validation of form inputs

    • Introduction to built-in Vuelidate validators

    • Creating custom validators

    • Section outro

  • 8

    Server Authentication - Learning Session Authentication + Passport

    • Section introduction

    • Initialization of Register functionality

    • Implementation of Register controllers and routes

    • Configuring Session implementation

    • Introduction to Passport package

    • Implementation of Login functionality + Debugging

    • Implementation of Logout and Authentication middleware

    • Debugging of implemented Authentication functionality

    • Section outro

  • 9

    Client Authentication - Learning Session Authentication

    • Section introduction

    • Sending request to register user

    • Sending request to login user

    • Display user name in navigation bar

    • Creating persistent authentication state

    • Working on logout functionality

    • Informing application about authentication state

    • Creating Secret page protected by authentication

    • Redirecting when user is not authenticated

    • Creating only-guest restricted pages

    • Section outro

  • 10

    Server Authentication - Learning JWT Authentication

    • Section intro

    • Replacing Session authentication with JWT

    • Finishing implementation of JWT

    • Debugging implemented JWT functionality

  • 11

    Client Authentication - Learning JWT Authentication

  • 12

    Meetup Create - Building Interactive form to create Meetups

    • Section introduction

    • Initialization of Meetup create page

    • Separating form into multiple screens

    • Sharing form data with form screens

    • Confirmation form step and input validation

    • Checking form step validity - part 1

    • Checking form step validity - part 2

    • Creating dynamically rendered component

    • Initialization of date picker Input

    • Initialization of time picker Input

    • Emitting form data to parent page

    • Implementing create meetup on server

    • Wrapping up create meetup functionality

    • Section summary

  • 13

    Join & Leave Meetup - Learn how to be a member of Meetup

    • Section introduction

    • Creating join and leave meetup computed properties

    • Applying computed properties to view

    • Implementing join meetup functionality

    • Server implementation of join and leave meetup

    • Finishing up join meetup functionality

    • Finishing up leave meetup functionality

    • Debugging of join and leave meetup implementation

    • Section summary

  • 14

    Posts and Threads - Adding interactivity to Meetups

    • Section introduction

    • Implementing modal window to create Thread

    • Toggling modal window functionality

    • Implemeting Action to create Thread

    • Finishing Thread create feature + Debugging

    • Ordering Threads by date + displaying Toast message

    • New components Thread List and Post Create

    • Introduction to custom directives

    • Creating Auto Expand directive

    • Sending Action to create Thread post

    • Server implementation of create Post

    • Updating view after post is created

    • Section summary

  • 15

    Sockets - Realtime chat functionality

    • Section introduction

    • Initialization of Socket library

    • Learning how to emit event and subscribe to socket

    • Introduction to Vue plugins

    • Creating custom socket plugin

    • Wrapping up socket functionality

    • Testing socket implementation

    • Redirecting after logout - small improvements

    • Section summary

  • 16

    Profile Page - Section filled up with Assignments

    • Section introduction

    • Initialization of Profile page

    • Fetching user statistics from server

    • Displaying user statistics in page

    • Implementing Tabs to display different screen

    • Creating Modal to display update user form

    • Passing user data to modal component

    • Finishing up update user feature

    • Debugging of profile section

    • Section summary

  • 17

    User Location - Learn how to display User location from IP address

    • Section introduction

    • Getting location from IP - server implementation

    • Creating meta module in Vuex

    • Displaying Location in Find Page

    • Providing location to meetup create page

    • Searching Meetup by location

    • Debugging of search meetup functionality

    • Section summary

  • 18

    UX Improvements - Search meetups by category and lazy loading

    • Section introduction

    • Implementing search meetup by category feature

    • Improvements in meetup search

    • Loading more threads - server implementation

    • Applying query parameters to fetch threads request

    • Loading more threads in VueMeetuper

    • Debugging of meetup search and load more threads feature

    • Section summary

  • 19

    Meetup Update - Learn how to update created meetups

    • Section introduction

    • Creating page to update meetup

    • Allow only meetup creators to access update meetup page

    • Bind values to Meetup Edit component

    • Finishing up Meetup update functionality

    • Fixing small issues in Meetup update

    • Style changes in meetup update page

    • Adding location to meetup home page

    • Course wrap-up + Debugging

    • Section summary

  • 20

    [Bonus]: Heroku Deploy - Deploying VueMeetup to live server

    • Section introduction

    • Setting up production environment - part 1

    • Setting up production environment - part 2

    • Deploying application to Heroku

    • Testing Application on Heroku

  • 21

    [Bonus]: Delete Meetup

    • Section Introduction

    • Implementing delete endpoint on server

    • Display confirm window before delete

    • Create action in VUEX to delete meetup

    • Mutate state after meetup delete

    • Remove threads and posts from state

    • Remove threads and posts from state

  • 22

    [Bonus]: Pagination

  • 23

    Confirmation Email

    • Section Introduction

    • Create confirmation Hash

    • Tips and Suggestions before sending Email

    • Send email with NodeMailer

    • New user Activate Page

    • Activate User implementation

    • Display redirect messages

    • Last Improvements + Section Summary


Software Engineer

Filip Jerga

My name is Filip Jerga and I am an experienced software engineer and freelance developer. I have a Master's degree in Artificial Intelligence and several years of experience working on a wide range of technologies and projects from C++ development for ultrasound devices to modern mobile and web applications in React and Angular. Throughout my career, I have acquired advanced technical knowledge and the ability to explain programming topics clearly and in detail to a broad audience. I invite you to take my course, where I have put a lot of effort to explain web and software engineering concepts in a detailed, hands-on and understandable way.


  • How to get help when I am stuck with the course?

    Every video contains discussion where you can create a post describing an issue. Instructor responds usually within 1 business day.

  • What to do when I am unhappy with the course ?

    Within 30 days from the purchase you can ask for a full refund. No questions asked. Your happiness is our priority.

  • Do I need to watch every lecture of really extensive course?

    Of course not! Every lecture is committed (explained in introduction section). You can start watching at any lecture, just download correct version of project attached to lecture resources.