Cross-platform Desktop App Development for Windows Mac Linux
4.6 (12 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
158 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Cross-platform Desktop App Development for Windows Mac Linux to your Wishlist.

Add to Wishlist

Cross-platform Desktop App Development for Windows Mac Linux

Create a multiplatform desktop applications which runs on Mac, Windows and Linux with one single code base
4.6 (12 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
158 students enrolled
Created by Adria Jimenez
Last updated 8/2017
English
Curiosity Sale
Current price: $10 Original price: $145 Discount: 93% off
30-Day Money-Back Guarantee
Includes:
  • 7 hours on-demand video
  • 2 Articles
  • 33 Supplemental Resources
  • 3 Coding exercises
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Develop cross-platform desktop applications from scratch without copy/paste code
  • Build distributable desktop applications for Windows, Mac and Linux
  • Use operating system native features with a single code base
  • Apply coding patterns specific for building desktop applications
  • Sell multi-platform applications in Mac App Store
  • Sell multi-platform application in Microsoft Windows Store
View Curriculum
Requirements
  • General understanding of HTML, CSS & JavaScript
  • Basic terminal usage (launch the terminal, navigate on folders, copy and move files, etc)
  • Windows, Mac or Linux computer
Description

Create cross-platform desktop applications from scratch and start selling them in the Mac App Store and Windows App Store

Last course update: August 16th 2017

Are you looking to build real-world Desktop cross-platform applications? Maybe you want to create a new side-project Desktop app which can run on Windows, Mac, and Linux to get some extra income or you want to get more clients by being able to publish their app to the three primary operating systems.
Either way, you're in the right place.

I’ve created this course around a single goal: Turning you into a professional Cross-platform developer capable of developing and deploying real-world production desktop applications for Windows, Mac, and Linux.

Multi-platform is becoming more and more popular. Coding an application once and having it run everywhere will allow you to implement new apps for you or your clients quickly.
Cross-platform means creating maintainable apps, not worrying about each operating system needs.

Get better job opportunities by offering cross-platform desktop app development.

This course is entirely project-based. From the very beginning, you'll be hands-on programming from a simple “Hello World” app to a complete from start to finish “Workout Timer” application.

There's no copying-and-pasting here.

This course is about writing code and building projects.
You will be programming a complete Workout Timer cross-platform application ready to submit to the Mac App Store and Microsoft Windows App Store.

During all the chapters you'll learn:

  1. Why using Electron
  2. Setting up all the environment
  3. Creating your first application
  4. Electron API
  5. Using third party libraries
  6. Custom fonts
  7. Building a complete application (you will create a Workout Timer application from 0 to complete)
  8. Multi-platform app menus
  9. Playing audio
  10. Multi-platform Desktop notifications
  11. Keyboard shortcuts
  12. Managing application state
  13. Application debugging
  14. Storing user data
  15. Cross platform accessibility
  16. Application building on Windows
  17. Application building on Mac
  18. Application building on Linux
  19. Windows app signing
  20. Mac app signing
  21. Microsoft App Store distribution
  22. Mac App Store distribution
  23. And much more!

Up-to-date. In-depth.

I guarantee this is the most up-to-date and engaging Cross-platform course available, and it comes with a 30-day money-back guarantee.
While other tutorials or course might teach you individual parts, this course will show you how to go from 0 to selling your cross-platform application without copy-pasting code but coding everything by yourself.

Access to fast support and a community of like-minded students.

I offer quick and friendly support. You won't have to sit around hoping someone will actually reply. I answer every single question that students post in a timely manner.

Don't take my word for it. It's one of the things students like Filip and Nicole love most about my courses.
"I'd like to thank Adria for this course, he is not just a great teacher, but also he's quick to answer questions and provide feedback even for my code which wasn’t related to the course." - Filip Hudcovic
"Adria is amazing. Very straightforward. Seems to be the stuff I want to learn. And he answered all muy questions and helped me building my project." - Nicole Maron
"The course is high oriented to practice. Lot of tips and tricks very helpful to obtain an immediate profit and the instructor helped me with all my questions" - Brennan Matthew

This course will not remain this price forever! It's time to take action!

Click the "Buy Now" button, top right, now. Every hour you delay is costing you money as cross platform will give you more time for development.

See you in the course!

Sincerely,

Adria

Who is the target audience?
  • Anyone who wants to get better job opportunities by offering cross-platform development
  • Freelancers who wants to offer cross-platform application development to their clients
  • Anyone looking to create cross-platform desktop applications
  • Anyone who wants to create easily create maintainable apps regardless of the operating system
Students Who Viewed This Course Also Viewed
Curriculum For This Course
66 Lectures
06:52:01
+
Introduction and welcome
2 Lectures 05:16

I'm Adria and I want to thank you for starting the course. In this lesson we are not going to spend much time, but I want to be sure that we start properly.

Preview 02:19

In this lesson you will learn why we will be building the cross platform application using Electron.

Electron is used by several cross-platform applications in the market and it gives a lot of flexibility.

Preview 02:57

Before we continue with the course, it's good to make sure that you are ready to start building the application with the following quiz.

Are you ready to start building?
5 questions
+
First steps: Setup the environment on Windows and Mac
8 Lectures 28:55

At the end of this lecture you'll have Node installed on your MacOS machine which is the foundation and a requirement for following the course.

The foundation: Installing Node on MacOS
05:16

At the end of this lecture you'll have Node installed on your Windows machine which is the foundation and a requirement for following the course.

The foundation: Installing Node on Windows
04:41

You are free to use any text editor for programming the electron application, but I've chosen Atom.

Why Atom? Because it's built with Electron. Yes eat your own dog food they say.

At the end of this lesson you'll have Atom installed on MacOS.

The text editor: Installing Atom on MacOS
02:50

You are free to use any text editor for programming the electron application, but I've chosen Atom.

Why Atom? Because it's built with Electron. Yes eat your own dog food they say.

At the end of this lesson you'll have Atom installed on Windows.

The text editor: Installing Atom on Windows
01:41

This lesson will show you how to properly configure Atom for cross-platform development. This is optional but recommended if you want to have a similar configuration than what is displayed in the course.

Properly configuring Atom for cross-platform development
06:09

Now it's time to install Electron. This is the base of our application. So we will build on top of this.

The required component: Installing Electron
02:09

If you are using Windows, you probably don't have GIT installed (on MacOS it comes preinstalled). So it's time to install GIT on Windows in order to proceed.

This is a required step to continue.

Installing GIT on Windows
04:31

The course is full of resources, but after you download the resources and exercises, you must do something before running the application.

Find what you should do in this lesson.

How to use the course resources
01:38
+
Building our first real cross-platform application
3 Lectures 32:42

Starting from zero, we are going to learn the basics of Electron. How to create an application window that displays our content.

Creating a Hello World simple application - The basics
18:35

Let's spice up things by adding some javascript to our application in order to learn some differences between main and renderer content.

Improving the Hello World Application
12:03

Now that we have built our base application, we can save it as a template. So whenever we want to start a new cross-platform application, we can start based on this one.

Saving the application as a template
02:04

Creating an application window
1 question
+
Understanding the app: Main process and Renderer process
5 Lectures 29:15

The main process is the responsible of managing your whole application. Opens windows and is the connector between them.

In this lesson you'll learn all you need to know about the main process.

Main process app responsible
01:42

The renderer process is the responsible of working with your layout, think of it as the javascript of a website.

This lesson will explain all you need to know regarding the renderer process.

Renderer process working with your views
02:03

Now that you know what is the main process, it's time to learn how to properly write code in it.

How to add code to the main process
03:03

Now that you know what is the renderer process, it's time to learn how to properly write code in it.

How to add code to the renderer process
03:27

It can be a time when you need to communicate between the main process and the renderer process. Doing it properly is crucial and in this lesson you are going to learn how to do it.

Communication between processes
19:00
+
Using libraries and third party modules
8 Lectures 40:32

There is a tool which will allow us to boost our development speed. I totally recommend using the following tool. It's totally optional but recommended.

In this lesson we are going to install it and set it up.

How to speed up development process
09:11

Having to reload or stop/start our application everytime we make a change can slow us down. But we are lucky as thanks to this method we will allow to see our changes directly while coding.

Seeing code changes live
05:28

This lesson will show you how to live reload your application without electron forge.

ONLY do this procedure if for some reason you don't want to include electron forge in your project.

Live reloading without forge
06:56

As you can realize, adding third party libraries opens you a complete immense world. Therefore we are not going to spend all the course viewing lectures of third party libraries.

I've collected the basic ones which are usually required in most projects and only use the essentials in our application.

What is possible to do and what we will do
01:57

By default, only system fonts can be used in your app. But there is a way to add additional fonts. In this lesson we are going to see the procedure to bundle fonts.

Preview 06:14

jQuery will allow us to do fast DOM manipulation, which equals to faster development. In this lesson we are going to see how jQuery can benefit us.

Adding jQuery for fast DOM manipulation
04:35

Underscore is a great library. This lesson will show you how to add underscore javascript library to your multiplatform application

Adding underscore
03:13

Thanks to normalize, we can start from a basic state. In this lesson we will add normalize to our application.

Resetting your styles to start from a clean state
02:58
+
Cross platform desktop app design
10 Lectures 01:19:01

Designing your application is crucial in the process of creation. But when you have to think about different operating systems you have also to consider some things for your design.

Discover what to consider in this lesson.

Basics first: Things to consider when designing a cross-platform desktop app
01:44

Find in this lesson the design of the Workout timers application that we will design together. Creating the design first is important in order to develop a great application.

Preview 04:20

It's very important to do a proper setup of your directory structure so you can then later work properly with your application.

In this lesson we are going to cover the basics of a great organization.

Directory structure proper setup
08:24

From the design we are going to start building the code that will make the layout starting to properly appear.

Creating the initial layout and style
16:55

Time to work on the app menu, it's important that we layout things properly so when the window is being resized, all elements appear properly on the screen and nothing is squashed.

App menu layout, structure and style
08:42

The naming of the module in the next lesson has changed. Please use this new name instead.

Naming for the next lecture
00:21

Making your users add the data in a proper way is very important.

In this lesson we are going to see how to make our inputs look nice and most importantly, how to make sure the data that the user adds comes into the proper format.

Then later we will see how to validate and tell the user if the data is good or wrong.

How to properly force an input type of value
15:14

It's very important to give the user the ability to change options. In this case we will do it with buttons in the menu of the application, and in this lesson we are going to see how to add them and make them work.

Adding buttons to the app menu which will change dynamically
05:14

This part is where everything happens within the app, so in this lecture we are going to be building and styling the central part of our workout application.

Creating the main application window
13:24

In this short lesson we are going to see how to add user tips in your app, in this case, following the app design, we are going to add user tips in the bottom bar.

Preview 04:43
+
Cross platform desktop app functionality
9 Lectures 01:36:29

It's important to always validate the user input, as the user can add values which won't work. In this lesson we will see how to validate what the user adds properly.

Validating user input
13:11


Now it's time to get serious. We are going to start by creating a TimerController which is going to control how our application timer behaves. This is going to be like the brain of our application.

Preview 11:26

Continuing with the development of our application, is time now to prepare the TimerController to handle all our timers properly

Preparing the workout timer
16:26

We are making progress building our application. Now it's time to update the time properly so it displays the right values on each second.

Updating the time properly
13:40

Now that we have updated our timer, we have to make it function properly with the different settings of the app.

Prepare, Work and Rest.

Working with the app functionality: Prepare, Work and Rest
17:17

A challenge for you: Try to do the global timer (the timer that counts all the time that has passed) and if you don't manage, continue with the lecture to see the result.

Challenge: Building the global timer
06:17

Playing audio files in your desktop applications is something which you will probably do. Either if it's for sound effects or if it's for playing music.

In this lesson we will see how to play sound effects based on our workout application.

Playing audio, sounds or music
10:57

It's very important to let the user know what is happening but also without flooding the user with many notifications.

Desktop notifications are hard to handle when you think about multi-platform, but in this lesson you will see how is not really so hard, thanks to Electron.

Cross-platform desktop notifications
04:19

Creating desktop notifications
1 question
+
Desktop application advanced customization
9 Lectures 41:44

In this lesson we will see how to properly react on keyboard shortcuts to do things accordingly.

Desktop application keyboard shortcuts
05:29

As you may probably seen, once our app is in the background, the timers stop. This is because our app goes into background mode, and MacOS "suspends" the app.

In this lecture we will see how to solve this problem, as well as how to prevent the computer going to sleep.

App background and preventing the computer to sleep
05:36

When developing, we see a very cool application menu. Well this menu will just disappear when we package our application for distribution. This is why it's important to build our custom menu with the options that we want and the ones we really need.

Custom cross-platform application menu
11:12

Building custom menu coding challenge
1 question

In this lesson we are going to see how to easily know when our app is in development. It's a simple snippet which will help us to know that.

Know when your app is in development
00:17

Here is a challenge for you with the corresponding solution.

Will you know how to properly save the application state so when the user restarts the app, all his setting remain there?

Find out more in the lesson.

Challenge: Saving application state
09:16

On the previous lesson, we saw how to use the local storage for saving the application state. Well if you encountered problems while working on it, this lesson will show you how to debug the storage or even clean the values.

How to properly debug local storage
01:34

Now that we have our app ready, you may want to optimize it. Electron gives us a bunch of tools fine made for developers, which will help us optimize our application before we release it to the market.

Advanced developer extensions
03:46

Now you can almost start building your own applications. So it's better that you know how to easily debug your javascript renderer code.

In this lesson we will learn how to do so.

Debugging the renderer process
01:31

Accessibility is important, yes we know it. Thanks to Electron which is based on web technologies, we just need to follow the same approach we would do on the web.

Luckily we have also a tool built in which will help us know if we need to adjust something in our application before we distribute it.

Cross-platform desktop applications accessibility
03:03

Adding advanced stuff is great, but make sure you know properly what you are adding if you don't want to make your app behave wrong.

Making sure your app behaves properly
4 questions
+
Cross-platform application distribution
12 Lectures 58:09

You have probably started with some random name for your project. But when is time to distribute it, you may want to change the name to something more commercial.

In this lesson you will learn how to rename you app easily.

Changing the name of your application
01:43

You have to consider that on the underground, your application runs with Electron. Let's see in this lesson which systems are supported by Electron so you know where you can distribute your app.

Distribute to supported platforms
04:01

It's time to create now the package for MacOS. In this lecture we will see how easy is to create our application package almost ready to distribute.

Building and packaging your application in MacOS
04:05

It's time to create now the package for Windows. In this lecture we will see how easy is to create our application package almost ready to distribute.

Building and packaging your application in Windows
04:12

It's time to create now the package for Linux. In this lecture we will see how easy is to create our application package almost ready to distribute.

Building and packaging your application in Linux
03:50

Now that the app is built, let's add our application icon so when we package it, it looks more beautiful and matches our brand.

Let's learn how in this lesson.

Final touches: the application icon
05:17

If you just bundle your application, you might be exposing your source code easily. Don't worry, in this lecture we will see how to protect against that.

Protecting your application code
04:46

When distributing your application, you have to make sure that the application is properly signed or your users won't be able to open it without allowing permissions.

Check in this lesson how to sign the app on Mac.

Signing your applications for Mac distribution
01:14

If you are one of the users who want to upload your Mac application to the Mac App store, in this lesson you'll learn what you need to prepare the file which Apple requires.

Preparing your app for the Mac App Store
07:26

When distributing your application, you have to make sure that the application is properly signed or your users won't be able to open it without allowing permissions.

Check in this lesson how to sign the app on Windows.

Signing your applications for Windows distribution
05:37

If you are one of the users who want to upload your Windows application to the Microsoft Windows App store, in this lesson you'll learn what you need to prepare the file which Microsoft requires.

Preparing your app for the Microsoft Windows Store
13:26

You've finished the course! Congratulations!

Check now what are the next steps for being able to professionally make cross-platform applications.

Congratulations, thank you and next steps
02:32
About the Instructor
Adria Jimenez
4.1 Average rating
898 Reviews
13,148 Students
11 Courses
Software Engineer, Designer

I love creating software and teaching how to be more successful.

Currently, I work at Xing creating software for millions of people. I've worked in other big and successful companies like Softonic, Honda or Fnac creating websites, apps, designs, and software.

I really enjoy teaching people new skills so they can improve their lives.

All my life I've been surrounded by computers. As a child, my father - who was a programmer back then - introduced me to the world of computing, which marked me forever. Years later, after hours and hours in front of computers, I am dedicated to my passion: code.

I try to do my best to achieve the best result day by day.