Create an App for Android, iOS, Mac & Windows - in 30 MINUTES!

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
in this video I wanna show you how to create this beautiful to-do list up from scratch I've got it running and working on five different platforms iOS up you see here Android up a mock-up a windows up and we're gonna get this running in a web browser as well in 30 goddamn minutes if you new here my name is Danny I have an India developer and creator of budget if you want to learn how to create cross-platform apps for the web iOS Android Mac and Windows from a single codebase click subscribe and click the bell so you don't miss anything so that's have a look at this up we're going to build so has this striking stylish tall header this beautiful background image of mountains and clouds has the name of our up today's date so if we view this up tomorrow and this will show tomorrow's date we can add tasks or add Pooh bananas we can click at us to mark it as complete and once it's complete we see this delete icon you click on that get this confirmation box asking if we really want to delete it and then if we click OK and the task is deleted we see this nice little notification we click on this menu button see this beautiful draw with a header image at the top the user avatar and some details and links to our two pages we also have this basic help page if we click back to our to do page you can see the state of our app is maintained and when there are no tasks we see this nice no tusks icon as well so you might be thinking Danny you're talking out your bot mate how can it be possible to create this up on five different platforms in 30 minutes well it's made possible by quasar framework which is an incredible new framework which allows you to create a few GS up with a single code base and apply it to multiple different platforms so you can deploy it to the web as a single page application progressive web app or a server-side rendered up you can deploy it to a mobile app using Cordova both iOS and Android and you can deploy to desktop app using electron for Mac Windows and Linux not only that but it also has over a hundred different material components such as buttons in all kinds of different styles lists and lists items again loads of different styles five components all the different farm components you're likely to need it's got almost anything you'll need for most apps and you can just click on this button for any component grab the code and just paste it into your app and start using it it's also has a ton of different utilities and plugins such as inbuilt date farmer tin the ability to store and retrieve data with local storage has hot reloading on all devices which means when you save your work you see the change instantly and this works not only in the browser but also on mobile and desktop apps as well and it also has platform detection built in which means that you can for example show a particular element only on desktop and then show a different element only on mobile or you can fire a particular block of code only on mobile then fire a different block of JavaScript code only on desktop so quasar really is the best cross-platform solutions out there at the moment okay let's get started by creating a new quasar project so you want to go to quasar dev you want to click on install it tells you how to install it up here we need to have node installed if you don't have that you can just go to no JSTOR and download one of these probably the one on the Left is safer and once that's installed and you want to install quasar with this command NPM install - G at quasar slash CL I already have it installed so I'm not going to run that once that's installed we can then create a quasar project with the quasar create command so I'm gonna jump over to my terminal make sure I'm in my projects folder and we're on quasar create and then the name of our project I'm going to call it quasar - to do it's going to ask us for some settings now so I'm going to leave the project name you know change the product name to a czar to do will leave the description leave the author I'm going to use SAS with s CSS syntax for the CSS and I'm going to use auto import for the equator components and directives this means that whenever we use a quasar component our directive in our app Waze our will automatically detect that and add it to our project for us pretty good damn clever when you're disabled all of these options because this app is going to be pretty basic for the Cordover ID I'm gonna just start calmed up Danny Connell dark quasar to do I'm going to use NPM okay that's installed if we scroll up a little bit tells us how to get started just need to CD into the folder then run quasar Dev so CD quasar to do quasar Dev okay that's running in the browser so to begin with you just get a very basic quasar up with a toolbar along the top and a draw along the side and the draw can be toggled with this button here and on mobile you'll see the draw disappear and again it can be toggled with this bond so I'm just going to drag the folder it's created into my editor which is here quasar to do drag that in there now in most of my videos I take my time and explain everything I'm doing step by step but in this case I'm just gonna smush through this as quickly as I can and the first thing I'm going to do is change our primary color which currently is this blue color so I'm going to talk to source CSS quasi variables s CSS we have all our color theme variables in here so I'm going to change the primary color to this nice blue color and we can see that color change straightaway in the browser and now I'm going to jump to our layout file which is in layouts my layout view I'm gonna remove this title and this subtitle and I'm gonna remove this elevated prop on the Q header which is creating this drop shadow here save that I'm gonna add a div after our Q toolbar where we'll display the title on today's date so I'm gonna stick another div with a class of text h3 it's gonna book to do in there then we'll grab a div with a class of text subtitle one I'm just put today's date and there which is Monday the 4th of November and this could do with a bit of padding around it so I'm gonna add some padding classes which are built into quasar to this div so I'm gonna add a class of Q - px - LG to add some large padding on the x-axis then I'm gonna add Q - PT XL padding top extra-large to create this nice gap between the menu button and the title then I'm gonna add Q dash and B dash MD for a medium bottom margin you can find all these classes on the equator site okay so I want a nice background image for this header so I'm going to talk to a site called pixabay.com I want to search for mountains and this is the image I want someone like the combat click download I'm going to drag this into my project folder into the source folder and then statics and I'm going to rename that file to just Mountain stock JPEG come back to our editor I'm going to add a cute image component here I'm going to set the source to static slash mountains dot JPEG and I'm going to give this some classes so I want to give it a classic header image so we can target this for styles and a class of absolute top to position at the top absolutely and then I'm gonna have some styles for this so I'm going to jump down to the bottom another style section I want allowed to be a CSS we're going to target the header image and I'm going to give this a height of 100 percent so it doesn't pop outside of the header there's that index of -1 to stick it behind our other elements and opacity of not point two to make it semi-transparent then I'm going to add a filter property set that to grayscale 100% to make this image black and white so that we can see our primary color popping through it nicely okay we want this date to display dynamically so I'm going to jump to the quasar site just going to search for a date jump to date utils then I'm gonna jump up to farm up file display and it shows us here we can get today's date and then format it using crazy hours inbuilt day formatting so we want to tick this first line this import date at the top of our scripts section so I'll stick that there and these are the two lines I'm gonna stick those within a computed property so I'm gonna add computed object to our export here and a lot of computer property called today's date I'll paste in those lines it's indentation stead of putting this formatted date in a variable I'm just going to return that so I'll get rid of that bit and just put return and then I'm gonna replace our hard-coded date here with that computed property sort of double curly braces today's date save that okay that looks a bit bobbins so we want to jump back to the quasar site and you can see all the date tokens here so we can use these to farm at this date nicely so I'm going to jump back down to that computed property change this string here which is telling quasar how to farm up the date so I want day of the week which we can get with DD DD and then day of the month which we can get with the capital D and they form onto name which we can get with capital M times for mmm see how that's looking now okay can now see today's date in there okay now I'm going to replace this butt-ugly draw with a nice one we're jump to the quasar site go to layout and grid and then layout draw scroll down I want one like this with this nice header image so I'm gonna click on View source and I'm going to copy the code for the draw jump back to our code and replace the existing draw completely and this V model here determines whether this draw is open or closed and if you look down in our data it's currently set to left drawer open so I'm going to change that to left drawer open so that works properly okay that's looking pretty sweet we replace the Avatar and change these details so the avatar is here when I change the source to my Gravatar link I'll update the name and the Twitter handle now I'm going to replace this background image which is here with our mountains image so static slash mountains JPEG and I want this to be a little bit wider so I won't jump back up to the opening QR tag and set this width to 250 and this breakpoint prop this determines at which point the mobile mode kicks in as we scale it down and it's a little bit too low at the moment so I'm going to set that up to 600 we should see the mobile version click in there okay great now I want this header image to be the same height as this header so I'm just going to see how tall that is now inspect that try and find the header so it's 192 pixels high so I'm going to scroll down to this header image and it's currently set to a height of 150 I'm gonna change that to 192 if we look at the cue draw this Q scroll area is also using this 150 to offset it from the header image so I'm going to update these 152 to 192 as well now I'm gonna work on this nav menu so I'm gonna just delete all of the items except the first one and the first Q item is here so I'm going to delete all the rest now I want to change this label that says in box two to do this is going to be a link to our to do page will change the icon to the list let's give it this little list icon and I'm going to duplicate this Q item to create a link for our health page and we'll change the label to help and also change the icon to help okay now I'm going to set up some pages and routes but before we do that I want to make sure our pages keep alive so if you look down here at the bottom of the queue layout component you can see this route of you here that's where our pages will be displayed we can make these keep alive by surrounding that in keep alive tags like this this means that if we make changes on the to-do page then go to the help page then go back again all our changes will be preserved okay so now I'm going to jump to our default page which has this image on it and that's in source pages and it's index dot view and I'm going to rename this to to do and this will break our up because we look at our routes file just in this Ruta folder then root CAS we have our roots here and this default route is currently pointing to index top view so we need to change that too to do dot view save that and now I'm going to open that to do page and the pages folder I'm going to get rid of this name property I'm going to get rid of this quais our image I'm just gonna stick a page five on the page which just says to do save that we now see that heading on the page I'm also going to remove these classes on the cube page element to stop everything being placed in the center now I'm going to duplicate this to do page rename that to help dot view open that up just chase this heading to help save that then I'm going to jump to the roots file in the root folder setup for root for this page so I'm gonna duplicate this existing route to this new page set the file to help dot view will set the path to slash help save that so if I go to slush help don't run the help page if we just go to slash then we're back on the to do page so now I'm gonna hook these pages up to this nav bar so I'm gonna jump back to the my layout dot view file in the layout folder jump up to our queue items which are here so here's the to do you item gonna break up the attributes here we're going to add an attribute called to just set that to slash so that will make this item linked to the path slash then I'll do the same on the help item but we'll set this path to slash help save that let's see if these links are working yeah you seem to be working you have some issues with active classes here before on the help page we can see the to do page is still marked as active and we can fix that by adding a exacts prop to both of these cute items save that we can see those styling issues and that fixed okay I'm just going to quickly set up this health page so I'm going to open pages help top view we're gonna add some padding to the page wanna quasars built-in padding classes so I'm gonna add Q - PA for padding all - large for a large padding all around and then I'm going to remove the top margin from this heading with Q - empty for margin top - none and then I'm just gonna stick a couple of paragraphs in here with some lorem ipsum say that ok let's create a list of tasks for our to do page so I'm going to jump to source pages to do and I want this page to have a gray background so on the cue page component we're at a class of BG - gray - 2 3 and I'm also go around a clustered column so that all the elements on this page are stacked and I want a list of tasks with the check boxes so I'm going to talk to the quasar site go to view components farm components and check box and I'm going to talk down to with qit see this nice list here of items with checkboxes so I click on view source grab all of this cue list I just paste it over this h5 here save that we can see those items on the page I'm just gonna remove this comment and remove all of the EQ items except the first one and I'm gonna remove this tag equals label prot because I found with this on there clicks are handled properly on mobile so I'm gonna get rid of that I want our list to be white so add a glass of BG white to the cue list component I'm gonna split the attributes on this checkbox get rid of this vowel frogs you don't need that we'll set the color to primary will set the v-model on these later this basically determines whether the checkbox is checked or not and because this color property doesn't exist it just has this indeterminate state at the moment okay now when I add a data property for our tasks so I'm going to set up a data function that returns an object create an array called tasks and each item will be an object with a title property and a done property which will be set to false to begin with so I'm going to placate this twice so we have three items I'll just stick some titles in here so get bananas eat bananas and do bananas okay we want these to display one by one on the page using this cue item so I'm going to jump to that cue item and add a V for loop and we want to loop through our tasks so we're gonna do beef our task in tasks say that we now see three items on the page and we have an error here because we need to add a key property whenever we use the V for and for now I'm just gonna set the key to task title now normally you'd want this key to be something unique like a unique ID but in the interest of speed I'm just gonna set it to the title okay we want to display the title of each task in these labels here so I'm going to remove this teal text replace that with double curly braces and then task dot title save that can now see the titles of our tasks we're just gonna style this list up a bit so I'm going to jump to the cue list component we're not a separator prop on a bordered prop I saw stick a border around our list and stick separators between each item and now I'm going to bind this checkbox to are done properties within our tasks array so on this cue checkbox I'm going to set the v-model to tasks done save that we can see they're all on checked at the moment because all of our tasks assets have done false down here but if we set this middle one to true then we can see this middle one is checked if you found this video useful so far make sure you smash the like button leave a comment tell me what you think about quasar okay so I want to be able to mark these items as done or not done and we click them so I'm going to click handler to the cue item which sets the done property to the opposite of itself so I'm going to jump to the cue item I'm going to add a click handler so I'll click where I'm just going to set task dog equal to the opposite of task done so if it's true set it to false if it's false set it to true this cue checkbox component has its own click stuff going on and I want that to be ignored so I'm gonna add a class of no pointer events to that so that any clicks on that checkbox will be ignored okay so let's see if that's working that's not working because we need to add a clickable prop to this queue item so I like that clickable say but let's try that again yeah that's working now but I want to style these tasks differently when they're done so I want to conditionally add a class to these when they're done so on this queue item I'm gonna buy into the class attribute and conditionally add a class of done whatever tasks done is true save that and if we just inspect that this one that's done see this one has a class of done and the other two don't so when we jump down to the Style section and add some styles for that set the alarm to a CSS we're going to target the done class and within that I want to target this label so just see what the class is for that so the class is Q dash item doubles go label so I'm going to copy that paste that within this selector the dot at the start when the task is done on it to have a line through it so we'll add text decoration set that to line through I'm also gonna set the color to a grey color so color I'm gonna use BBB save that and we can see our done tasks now have these styles and I'd also like our done tasks to have a different background color so we're going to jump up to the cue item where we're binding to the class attribute here when a task is done I'm also going to spit out the class BG - blue - one let's give it a nice blue color there we go okay so what a task is marked as don't want to display a little delete button here that we can click to delete the task so these cue item components are made up of these cute item sections so I'm going to create another one of these I'm just gonna stick X in there for now and I only want to show this if the task is done so I'm gonna add V - if task done I'm also going on a proper side to make sure it's over on the side so we can see that little X but I'd like a nice button so they jump to the quasar site go to view components button sputtered and I don't like a flat round icon like this so I'm gonna quit pea sauce grab the code for that paste it over this little X say that okay we can now see this little gift card icon and I'm gonna split up these attributes on the button I'm gonna have a proper of dents to make this a little bit smaller I'm going to change the icon to delete so we get this little bin icon and in order to delete the correct task from our tasks array we're gonna need the index of that task that's been clicked so we can get that really easily so on our V for loop just going to surround task in parentheses and then just to add comma index and now I'm gonna add a click handle to this delete button which is here so I click I'm also going to modify it of dot stop to this because we already have a click handler on this cue active and we don't want that click handler to be triggered when we click this delete button so adding this modifier will stop that from happening so click that stop equals will trigger a method called delete task and we'll pass in that index save that and now I'll create this delete task method so after our data function when I add methods add this delete task method pass in that index and to delete the task screen just to this dot tasks dot splice parentheses and then index color up one this is just going to delete the tasks in the tasks array at the position of index and it's only gonna delete one item so let's see if that's working click on the delete button and the task is deleted it'd be good if we had a confirmation dialog before it's actually deleted so I'm going to jump back to the quasar site this time when I go to plugins and then dialog and I would like a confirm dialog like this so I'm gonna click P sauce click on script grab the code for that confirm dialog and want to paste it inside this delete task method and I'm gonna get rid of all of these callbacks except this first on ok call back this on okay car but will be fired when the user clicks on okay in the dialogue so I'm going to move this line where we delete the task into that car back we'll just going to change the message to really delete save that let's see if that's working the comment button no it's not working because we need to install this dialog plug-in we do that in our config file which is in the root of our project and it's this quasi Comte s file so here's the plugins array so I'm just going to add dialogue to that save that see if that's working click the button yeah we see this confirmed pop-up click OK and the item is deleted I'm also gonna add a little notification that pops up at the bottom when we do delete a task we could do that with the notify plugin so I'm gonna plug it in the slots just here they look kind of like this so we again need to install this so I'll add it to our plugins array here in the config file and there we could trigger it like this so I'm going to copy that line jump back to our to do page and we'll trigger that after we delete the task so I'll paste that in there I'll just change the message to task delete it save that ok click the delete button click OK and we see this nice little notification at the bottom we're gonna have the ability to add a task now so I'm gonna stick an input at the top here a live the header with a button that the user can click to add a task so I'm gonna jump to the top and above our cue lists without a div with a class of row on a class of queue - PA - SM to add some small pudding and a class of BG - primary to give it our primary background color I'm just gonna stick the text add tasks in there for now okay we can see that on the page now we're going to need an input preferably with a button that we can click so when it up to the quasi site go to view components farm components on input text field when it jumped down to filled and if we scroll down there's a nice input here with a little Add button there so that's perfect so that's the fourth one from the top so I'm gonna click on View source and one two three four grab this code paste it into this row that we've created save that okay so we need to make this look a bit better than that so I'm gonna get rid of these slots that we have here this before slot which is adding this icon and this filled hint slot which we don't need delete that and I'll split up the attributes on this cue import when we get rid of this bottom slots prop get rid of the counter which is adding this character counter thing get rid of the max like I'm gonna set this dense prop to just dense to make this a little bit smaller I want this input to have a white background color so we'll add BG color set that to white and we want this to stretch all the way across so I'm gonna add a clasp of Kolb to make this a column columns will stretch all the way across by default we'll add a prop of square to square up the edges on this input and we'll change the label to add task absolutely chase this label to a placeholder so I'm not keen on it displaying the Tusk label up there so I'll just change that to placeholder okay that's better okay so this import already has a V model on it I'm just going to move that to the top and this is set to the property tax which doesn't exist I want to set this to new tasks then I'm going to create a data property for that down here in our data so new task set that to an empty string you check that's working by just sticking some text in here so niala poo yeah that's working I'll set that back to an empty string now let's create a method for adding a new task so in our methods objects I'll add a new method called add tasks for now I'm just gonna log out our tasks and we want to trigger this whenever this add button is clicked so I'm gonna click handler tool appleton so up to click on a trigger on task and we also want to trigger it when the user hits the enter key when they're in this import so on this cute important going to add our key up and now to modify it to that I've got Enter so whenever the Enter key is clicked we also want to trigger this method odd task let's just make sure that's working just going to clear my console click the button yeah we see add task is triggered or if I hit the enter key then add task is also triggered okay so let's update the task method to actually add a new task to this tasks array thus or dating our view so we want to push a new object to this tasks array with a property of title and a property of done so in this add task method we can just do this dot tasks push and we want to push an object with a title property which we're going to grab from this new task property which is bound to this input so set that title to this stop new task and we'll set the Dom property to just false by default okay let's see if that's working two more bananas yeah that's working however this field is not cleared out after we hit enter so back in our add task method after we push that to us to the array we're going to clear out this input by clearing out this new task property so we can just do this new task equals empty string try that again two more bananas yep that's working so I'm just going to comment out all our Dooley data so everything inside this tusks array say that let's try that again get apples eat apples to apples great ok there's one more thing I want to do which is to display a nice message to the user when there are no tasks so I'm gonna stick a div on the page after our cue list we give this a class of no tasks so we can style it on a class of absolute sensor to position it in the center of our page we're gonna stick a div with a class of text h5 to give it the styles of a h5 heading and text primary to give it our primary color text sensor to make it centered I'm just going to stick the text no tasks in there let's save that I'd like to have a nice icon above that check icon so above that div without a q-dash icon and i'm gonna give this a name of check on a size of 100 pixels and a color of primary save that okay I'm just gonna make this a bit more faint so in our Style section I'm gonna target that no tasks class just set the opacity to 9.5 save that okay that's looking pretty good however this is going to be displayed all of the time at the moment even if we have tasks so I'm gonna add a V if directive to that dip that we've added so V - if not tasks dot length so in other words if our tasks array is empty then display this dip save that okay now if we add a task couples then we see the no tasks message disappear and if we delete our tasks then we see it reappear again okay so the app is basically done let's make sure it's going to look all right in the mobile browser so it's add some tasks get chicken eat chicken poop chicken okay we can add tasks we can mark them as completed we can delete tasks see the notification you see the dialogues and we see our no tasks by bit we can get to our menu click on the help page and get to that let's just make sure our state is preserved if we go with a help page and back again so I'll just add get chicken now if we go back to the health page and back to the to do page yeah we still see get chick in there right let's create a mock version of this up so if you're developing on a Mac this is really simple just want to jump to the terminal close the dead process just run quasar dev - m4 mode electron because quasar desktop apps use the electron framework we now have the Mac version of our up and it's popped up with a little inspector so you can do all the things you would usually do with a web app and there's tons of things we can do with electronics like customize the menu bar and our own options we can interact with the users file system we can do lots of the things that you can do with a true native Mac app so let's just check it's working okay so help pages work in and get to the to do page we can open and close the draw see we can add tasks get oranges eat oranges to oranges okay so we can add tasks we can mark them as don't can we delete them see they're nice little pop-up we can delete them when we see the little notification as well okay let's create a Windows version now there is a bit of setup involved if you're doing this on a Mac you need to have a virtual machine installed with something like VirtualBox and I explain how to do all that in my fault quasar course so what I'm going to do is I'm going to use a quasar build command to build the windows up on the Mac and then I'm going to run that my Windows virtual machine so I'm just gonna close this mock version and this has already killed our dev process and we do need to change a setting first so we need to go to our config file in the root quasar confer yes I'm just going to search for electron we have our electron settings here packager settings here and these are the settings used by electron to package Windows or Mac app so we need to add an option here which is platform and we want to set that to win32 so that this builds the Windows version and not the Mac version so I'm gonna save that jump back to the terminal and I'm going to run quasar so for the mock up we use the quasar dev command to launch it in development mode well this time we're going to actually build an app so we're gonna run a quasar build and then again - m4 mode electron okay so we have an error here we have this bumbler is not a function era and I don't know what's causing this I assume it will be fixed in future but a quick google show me that i can fix this by just deleting an old modules folder and running npm install again so i'm gonna do that so i'm just going to right click on i know what modules folder just delete that now i'm just going to run npm install okay that's finished so now I'm going to try running that build command again so quasar build M electron okay great it says build succeeded says our output folder is in dist electron so it's great this new folder here dist we go in there you have an electron folder then decide that we have this quasar to do win 32 X 64 folder and if we go in there we can see our windows up we see the exe file there quasars also created this source electron folder where our electron project goes if we go in this main process file and open this electron main j s then we can customize our electron apid settings such as width and height and also i'll tap into native map functionality and stuff like that but anyway I'm just going to jump to my virtual machine which is a VirtualBox virtual machine and I have my projects folder shared with this virtual machine so I can see all my projects here we will not open up quasar to do and then dist electron ways out to do win32 x64 we can just go ahead and run this exe file and we now have a Windows version of our app so let's just check if it's working see if we can add a task get eggs eat eggs poo eggs yeah that seems to be working we can map them as done here's a little bit jerky well that's just because we're in a virtual machine this will be a lot smoother on a real Windows PC we can get to the help page we can go back we can resize the window it all looks pretty good okay let's create the Android version so I'm going to shut down this virtual machine and for Android you do need to have Android studio installed and navd installed so there's a little bit of self involved but again I show you how to do this in my fault quasar course but I'm just going to jump to Android studio I'm going to go to configure and AVD manager Android virtual device manager I'm gonna launch this pixel device okay now that our virtual device is loaded we can launch our app on it in development mode so I'm just going to talk to the terminal and run quasar dev - M the mode called over this time because quasar apps use the card over framework - capital T for target Android and we now have an Android version by our app coaster on mobile D drawer is hidden by default see if that's working yeah that's okay you can get to the different pages let's see if we can add a task get milk drink milk and to milk yeah so we can add tasks we can mark them as dawn and we can delete them pretty goddamn good so I'm gonna close up let's create the iOS version so we've closed that dev process I'm just gonna run quasar dev - m4 mode called over - capital T and this time iOS and he do need to up Xcode installed for this to work and we now have an iOS version of our app which is looking pretty goddamn sexy right so the sidebar is working d draw you can get to the help page get back see if we can add a task yeah but honest puh bananas you yeah we can add tasks we can mark them as dawn we can delete them possibilities with quasar framework are absolutely insane I mean you can create your app once with a single codebase and publish it to the web and all these different app stores you could monetize your app with ads and in-app purchases on all these different platforms when you need to fix a book you just fix it once and redeploy to all the platforms when you need to add a feature you just add it once and redeploy again so for me as an indie app dev quasar is the best thing that's happened with web technologies in a long time now this isn't a real-world app doesn't have a back end users can't log in or register doesn't have a settings page or error handling or for invalidation or anything like that but if you want to go deep with quasar I have a udemy course in which I teach how to create real-world apps with quasar view j/s view X and firebase along with all the things that real apps need like user authentication settings pages farm validation error handling real time data sync across devices and much more by the end of this course you'll be able to take your own idea create a real-world app from it and publish it to the web and all the different up stores the course is packed with fifteen hours of content assignments to supercharge your learning and it has over a thousand students who are so happy with the course so it's now the highest-rated course on udemy in the view j/s category so if that sounds interesting and you want to check out the first 23 videos for free click the link at the top of the description you
Info
Channel: Make Apps with Danny
Views: 107,427
Rating: undefined out of 5
Keywords: create an app, how to create an app, create an app for android, first app tutorial, how to create an app for android, how to create an app for ios, app tutorial ios, make an app in 30 minutes, how to create a mac app, android ios development, how to create an app for windows, electron tutorial, create an app in 30 minutes, quasar framework, create an app for beginners, cross platform app development for beginners, create a hybrid app, how to create a cross platform app, vuejs
Id: GV-D85D9KJQ
Channel Id: undefined
Length: 43min 32sec (2612 seconds)
Published: Fri Nov 08 2019
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.