Skip to main content

Build a Fitness-Tracking App with Low-Code

Build a Fitness-Tracking App with Low-Code


  • Transcript

    [00:00:06.540] now what's really important here. And I think the most [00:00:08.769] exciting part is that we'll be doing a [00:00:11.310] live bill that you conjoined. [00:00:13.410] So if you go to this, [00:00:15.939] your l here at the bottom of the screen, [00:00:18.219] you come down with the project files [00:00:20.370] and start your own A [00:00:23.730] Yeah, Yeah, [00:00:26.219] that's that's a really cool feature here. So we [00:00:28.320] will be going through it [00:00:29.929] a little bit faster than, [00:00:32.229] uh, you know, then [00:00:34.560] usual. So if you're new to medics than [00:00:36.990] maybe it's better to Ah, [00:00:39.240] you know, uh, check. Check that [00:00:41.289] out afterwards. [00:00:43.539] All right, let's get onto the use [00:00:45.780] case. Yes. Sorry. I just saw a [00:00:47.789] question coming. The men explosions 8.10 [00:00:50.469] point two for anyone who wants to know. [00:00:53.030] Uh, yeah, so high. Everyone a [00:00:55.359] mine must meet you. [00:00:57.390] So basically, I've been working from home a lot [00:00:59.439] lately and call myself slacking [00:01:01.509] more and becoming a bit of a cut potato. [00:01:04.400] So I called up some brands and [00:01:06.430] said, I want to get back in shape. [00:01:09.200] So that's when we decided [00:01:10.909] we're gonna build an app [00:01:12.469] so we could share our runs and we could compete [00:01:14.560] for, like, a leaderboard try for you know, bragging rights. [00:01:18.540] So she has what we want [00:01:20.549] the up to do. So we need Teoh [00:01:22.939] have a mobile app that uses native Mobile [00:01:24.959] functionality. We want to use GPS data. [00:01:27.069] We want to use the camera. And when you use the local [00:01:29.319] storage, [00:01:30.579] we want to be able to start and stop [00:01:32.590] runs and invite friends to the AB. [00:01:35.239] And we need to compete in a readable or like a safe [00:01:37.329] for bragging rights. [00:01:39.250] We want to add voters to the runs, [00:01:41.299] and that just needs to look good and feel [00:01:43.379] good. And we need to talk about sinking the [00:01:45.439] data. So it's going safely in the ground. [00:01:49.200] We have a little preview over here [00:01:51.439] off what the APP is gonna look like if [00:01:53.909] you stick with us to win. [00:01:55.890] So whoever hasn't downloaded the files, [00:01:58.079] you conduce. Um, Now there's a link there. [00:02:00.629] Yeah, this get started. [00:02:02.569] Excellent [00:02:03.609] time for the most important part. [00:02:05.500] Let's build. [00:02:07.719] So I'm just sharing my screen. [00:02:10.539] Can you see my screen? [00:02:12.639] Yeah, you're good to go. [00:02:14.900] All right, [00:02:16.099] One second. [00:02:18.139] So [00:02:19.719] to prepare for this web, not I have created a medics [00:02:21.979] adequate foot fast on. We'll just [00:02:24.139] go into the environment. [00:02:27.870] So this is the medics developer [00:02:30.090] Portal, which is available at home. [00:02:32.189] Not many. Stop calm. So here you can really [00:02:34.340] see your team, your stories, What [00:02:36.460] you guys are working on. [00:02:38.099] What's princes active right now? All that [00:02:40.180] kind of stuff. [00:02:41.639] So this just opened up [00:02:43.659] so normally you would do it from your it [00:02:45.909] up, click the era, and then can choose [00:02:47.939] to edit in studio or mid [00:02:50.099] extra year pro. [00:02:51.439] I'm really [00:02:52.580] sorry, Ryan. Just just checking. Are you [00:02:54.599] recording? [00:02:55.639] Yes. Yes, I am recording. Excellent. [00:02:58.449] So I really have my app open young. [00:03:00.639] So when you guys download it on, [00:03:02.889] open it up. You can come to the main [00:03:05.000] model. Yeah, So [00:03:07.729] Medic Studio is perfect for building [00:03:09.860] out the user flow making basic [00:03:12.150] page designs in the overall navigation [00:03:14.219] structure of your app. [00:03:16.020] And what we're gonna do is take [00:03:18.139] it a step further and add some more advanced [00:03:20.240] features using Mendik Studio Pro [00:03:22.729] that you could download it install on your computer. [00:03:25.340] Of course, if you do start a project in studio [00:03:27.650] Pro, you can seamlessly transfer [00:03:29.780] that over. [00:03:30.860] If you do create something in Munich studio, [00:03:33.219] you can [00:03:34.219] transfer that over in Studio Pro [00:03:36.250] and continue working on that. [00:03:39.039] Yes. So we're gonna start with the first [00:03:41.360] feature right now. So [00:03:43.620] starting at the domain model, I already have [00:03:45.669] some entities in that crate. So there's three [00:03:47.930] main ones. So we have run, run [00:03:49.990] images and location. [00:03:51.639] This is most people tracking the rent. Dates like [00:03:54.319] distance when it started and ended the [00:03:56.469] status of the rent, which is not [00:03:58.580] busy. Busy done. [00:04:00.840] Um, [00:04:02.099] the duration and all that kind of stuff. [00:04:05.879] Um, [00:04:09.909] yeah. So I was just looking at a jackets. I will [00:04:12.039] share a link to the Project 1000 in a moment. [00:04:14.939] Um, [00:04:15.939] so about this time, a model, the main model [00:04:18.100] is really a representation [00:04:20.290] off what's in your database. And [00:04:22.470] so every time you store something where you want to retrieve [00:04:24.790] data, you use the domain model for [00:04:26.899] that, and medics will take care of [00:04:29.160] the underlying database so you don't have [00:04:31.300] to worry about primary keys. [00:04:33.370] Optimizing Cory's. That and so [00:04:35.430] on. Yeah, exactly. [00:04:37.839] So looking at this object [00:04:39.910] that we hear the accountable the entity, [00:04:43.519] this is basically we restore the user [00:04:45.810] stats like the title distant. They run [00:04:48.060] total friends [00:04:49.509] and yeah, total runs [00:04:51.930] It's also a generalization off [00:04:54.189] system dot into persistent but image, [00:04:56.730] which basically music and hold pictures. [00:04:59.720] In our case, we're going to use it to store [00:05:02.079] profile pictures. [00:05:03.839] Awesome. [00:05:04.949] So let's create the run page so [00:05:07.069] we can start starting stop runs [00:05:09.370] and the track our time and our distance. [00:05:12.680] Yeah, So we're going to start your on the coordinates [00:05:15.079] of Page, which doesn't have a [00:05:18.100] that second king of Yes, we have a view [00:05:20.470] runs and brings. [00:05:22.139] So we're starting from the other section [00:05:24.290] where we already have a carousel, just [00:05:26.290] some images. [00:05:27.540] And we're also had a data New [00:05:29.560] Year that just shows the details of [00:05:31.600] your most recent run. [00:05:34.040] So [00:05:35.189] we're gonna add in the middle here, [00:05:37.290] and we could add the elements one [00:05:39.339] by one, but to say time for the [00:05:41.509] webinar. I've created some building blocks, [00:05:44.639] so we're going to start off with dragging stock [00:05:46.990] around page onto this area [00:05:50.800] so [00:05:51.970] the bowling block is just a collection [00:05:54.060] of widgets on. You can pre style [00:05:56.079] them, their data agnostic, so if you have [00:05:58.220] a button on, it will remove the net of blood. [00:06:00.839] But it really just say it's time. It's reusable. Craig, [00:06:03.540] think of it like a complaint. [00:06:06.509] So here we have the image [00:06:07.930] and we have a button start run. We're going to [00:06:09.930] create a men of flight for that. So [00:06:12.339] gonna select on click? Never flown [00:06:15.790] Picking the right holder and they're just gonna call [00:06:17.949] it a C two [00:06:20.529] Great new [00:06:22.939] A C T. Stands for actions, the name [00:06:24.959] conventional. [00:06:27.610] So go to the metaphor. [00:06:31.870] First thing you always do is to [00:06:33.990] allow the users access to this meant [00:06:36.139] afloat using module world. So we [00:06:38.189] want a laugh admin and use it. [00:06:41.240] So [00:06:42.540] the first action we're going to [00:06:44.980] create is just a creates [00:06:47.379] on, and [00:06:50.250] we're gonna create the run. [00:06:54.160] We can commit this because it's using the local [00:06:56.350] database. Then you worry about that. [00:06:59.040] Um [00:07:00.319] and then we're gonna link this to the accounts object [00:07:02.660] using association, [00:07:05.089] and we also need just [00:07:07.370] a run i g, which [00:07:09.379] were just using a con fooling [00:07:14.040] and anger, adding a score, [00:07:17.649] and we're gonna just a random number [00:07:20.240] on multiply that by thousands to get [00:07:22.389] a random number, but between one in 1000 [00:07:24.790] so it's gonna be there full name [00:07:26.509] and along number. [00:07:29.220] Yeah, we'll be re using that as well later [00:07:31.290] on to retrieve this specific run. [00:07:34.990] So after that, we can just [00:07:37.209] add a [00:07:38.560] show page action [00:07:42.899] and we're going to policy run, [00:07:44.910] object, and we need to them [00:07:47.089] just select the page. We don't have one. So [00:07:49.129] we're gonna say you [00:07:51.540] the page name is already full. Didn't run [00:07:53.839] you in it. That's fine. We are using [00:07:55.990] the Native Mobile profile and we [00:07:58.089] have a navigation. They'll select it. [00:08:00.139] You do have to select your type [00:08:02.709] off page. [00:08:04.839] Yeah, and ah, Paul is actually asking [00:08:06.990] a really good question. Who are you were using a nat'l flow [00:08:09.180] instead of a micro flow. [00:08:10.740] Now, in medics, logic is captured [00:08:13.269] in either [00:08:14.220] micro flows or nano flows. So [00:08:16.240] when you're building a normal app, Ute simply [00:08:18.509] used micro flows. But [00:08:20.730] in this case, because we're building a native [00:08:22.759] mobile app [00:08:23.639] using nano flows, because nano [00:08:25.709] flows are pieces of logic that run [00:08:28.029] on the device itself. So [00:08:30.089] they're offline [00:08:31.839] pieces of logic and they don't need [00:08:34.009] a connection to a nap [00:08:36.129] location server, for example, [00:08:38.039] as opposed to micro flows that [00:08:40.190] do need an active connection [00:08:42.370] to a nap server. [00:08:45.740] So [00:08:46.639] we have the pain chair, [00:08:49.370] so we're just gonna drag samo building blocks on. So [00:08:51.610] we have a stets [00:08:53.519] moving book, and this is going to show you the [00:08:55.610] duration, distance and speed. [00:08:57.799] So these are just then using labels inside containers [00:09:00.340] with a bit of styling. [00:09:01.899] What we need to do here is connect our [00:09:04.330] attributes to the labels. So duration [00:09:06.909] little get duration. And so [00:09:12.019] eso Well, while you were filling that in, um, [00:09:14.889] some was asking What is the difference between the two? So [00:09:17.320] ah, Michael flow. Ah, normal [00:09:19.669] micro flow [00:09:20.960] needs an act of connection to an [00:09:23.059] act of data missed river, [00:09:24.539] but a nano float does [00:09:26.590] not. So that's a huge difference. So you can use [00:09:28.649] nat'l flows for offline capabilities [00:09:31.139] in your in your app [00:09:33.110] next to that, because a natto flow [00:09:35.600] can run locally on your device. [00:09:38.240] Um, it can also access [00:09:40.659] device capabilities like [00:09:42.820] your camera, a GPS tracker [00:09:45.330] on things like that. [00:09:46.840] So it offers different capabilities [00:09:49.000] for, uh, for different scenarios, [00:09:51.409] Really? So [00:09:54.250] we finish with the first building block. So [00:09:56.429] now we just added the number another one starting [00:09:59.110] start and stop time on. So [00:10:01.809] pretty simple spot time gets start flying [00:10:04.240] and in time gets in time [00:10:09.049] You know what you see here is a little text block [00:10:11.269] and it has a parameter. Now, you could just [00:10:13.490] add normal text in the block [00:10:15.639] that static, like in bed and started. [00:10:17.889] Or you can show [00:10:20.019] a dynamic piece of content, a piece of data [00:10:22.340] that's related to a user [00:10:24.610] that you pull from the database in that [00:10:27.139] Yeah, exactly. [00:10:28.690] So now we have most of our elements on the page [00:10:31.210] and we just Addison buttons. [00:10:33.330] It's the building block [00:10:35.070] when page buttons. [00:10:37.059] So these are just the buildings were going to connect on [00:10:39.230] the inner flows for recording the GPS [00:10:41.370] data, and we met. [00:10:43.539] So before we do that, that's just spend [00:10:45.759] some time making sure they are [00:10:48.059] the correct visibility. So we're gonna do that [00:10:50.120] by buying conditional visibility, [00:10:52.730] and we can just go to visibility [00:10:55.379] in the properties. We're [00:10:57.529] gonna hide this condition based [00:10:59.580] on attributes value [00:11:01.429] on the status of the rent. So start [00:11:03.600] will show for not started in. [00:11:06.440] Yes, that's not showing its busy. [00:11:08.889] And so, [00:11:18.450] and the view map is only going to show [00:11:20.929] when it is done. [00:11:27.539] And also this label we just wanted [00:11:29.700] only show when [00:11:31.730] we wanna show. When it is done. [00:11:37.539] Yeah, this is really Andy. So you can use this to clean [00:11:39.639] up your you y a bit. So [00:11:41.580] you don't necessarily want to have a stop button [00:11:43.870] when you haven't actually started a run. [00:11:46.259] So, using conditional visibility, [00:11:48.519] you can configure that. [00:11:51.139] So now we're just connecting our net [00:11:53.320] inflows to the buses. So [00:11:55.779] we're just gonna do, stop, run and [00:11:58.350] run their people close. [00:12:01.139] And in this you on that is just [00:12:03.230] a [00:12:04.639] one click page, and we're just gonna civic run, [00:12:06.850] Matthew. A metre shows the location [00:12:09.299] dates of intimate. [00:12:11.909] Excellent. Um, [00:12:14.120] what do you think? Is it time to [00:12:16.559] show the app, or shall we build some extra [00:12:18.779] stuff? Let's build the foetus, Isom. [00:12:20.950] Yeah, Cool. All right. Yeah. [00:12:22.980] So another requirement that we have for the app [00:12:25.100] was that we want to be able to take pictures [00:12:27.450] during a run and show that for [00:12:29.529] the run. Yeah, [00:12:31.549] So to do that, we're just going to create [00:12:33.649] a floating action, but [00:12:35.919] it's a Abdelmajid with native mobile, [00:12:38.720] so this is just like a regular, but it just [00:12:41.080] looks a bit cooler and has a bit of [00:12:43.169] a circular [00:12:44.919] shape. [00:12:46.169] So we're gonna sneak icon off camera, [00:12:50.899] and we're going to select an on click events [00:12:53.200] to call an elephant. [00:12:55.139] So for this, we're gonna build the flow. [00:12:57.529] Just put it in a run on. We're gonna call it a [00:12:59.710] CT again. Action [00:13:01.820] and capture. Running. [00:13:04.440] Very simple convention. [00:13:08.899] Awesome. So, um [00:13:11.240] yeah, when we added [00:13:13.309] the certain stop buttons, Um, [00:13:16.139] what Ryan actually did was [00:13:18.409] use a JavaScript action. [00:13:20.840] Uh, are you going to use one again [00:13:23.279] in this data flow [00:13:25.750] in the capture run image, we have [00:13:27.960] a standard [00:13:29.639] pre bolt [00:13:31.009] capture photo [00:13:32.360] job script action, which is both by the R [00:13:34.490] and D team um, index. [00:13:36.100] Excellent. So just out of the box, we can add [00:13:38.169] that capability. We don't have toe develop [00:13:40.539] anything ourselves cool. Don't have to do anything. [00:13:42.549] Just cold action. So all we do is [00:13:44.909] we call a creates objects to create [00:13:47.019] all rent image. [00:13:49.110] Got a link that to the run object [00:13:51.330] Fire association. [00:13:56.190] Then we immediately can. Cole. [00:13:58.490] I would take picture action. [00:14:01.600] So this [00:14:02.809] man, and [00:14:07.120] so he had just opens up the property. So we just [00:14:09.269] need to provide it with our [00:14:11.320] new rank image city [00:14:13.389] and select the source for the pictures So [00:14:15.460] you have the choice is off MT. Camera [00:14:18.039] your library. Either We're gonna said either [00:14:21.389] and the picture quality we're [00:14:23.610] gonna set original [00:14:25.820] the are two fields yet for when you [00:14:27.909] choose a custom picture quality, [00:14:30.009] we don't need to spend by anything for [00:14:32.049] them. But we do need to set them to anti. Otherwise, [00:14:34.529] it's just gonna have an era. [00:14:37.240] Excellent. [00:14:38.409] Yeah. And so jobs hurt. Actions [00:14:40.769] are [00:14:41.710] reusable actions based on [00:14:43.720] Java scripts that run on the client [00:14:45.929] like banana flows. [00:14:47.740] And yet they allow you to use [00:14:50.259] capabilities such as HTML five [00:14:52.399] browser functions, Cordova phone get plug [00:14:54.450] ins, um, and react modules. [00:14:56.980] So this allows us to take the pictures. [00:15:00.740] So we do need to set a display [00:15:02.840] field on the run itself, which [00:15:05.110] is just has images. True. So [00:15:07.309] this will just show the images when [00:15:09.409] they have been [00:15:10.870] and they were just gonna commit all objects. [00:15:16.669] And then we're going to call this pre prepared flow [00:15:19.100] which this checks. If we have [00:15:21.360] connection [00:15:23.190] and then six the date I'll go in so you can [00:15:25.250] see it. [00:15:26.120] It just checks if we have connections. [00:15:28.149] These are native jobs protections [00:15:30.629] and then synchronizes everything if it's [00:15:32.710] true. Eso again, those a [00:15:34.730] pre built right, Those check connection [00:15:37.110] things. [00:15:38.850] So [00:15:39.669] I'll just let this run so long, And [00:15:41.759] then we can talk about the job script [00:15:46.139] style. August needs to go away. [00:15:48.240] I have some errors. What? [00:15:50.679] I'm gonna guess it is access [00:15:54.519] most common here [00:15:56.490] as always to keep in mind that when you build [00:15:58.620] a nana flow or micro flow, [00:16:00.610] you need to give permission to at least [00:16:02.740] one [00:16:03.700] user role to actually [00:16:05.980] execute that, uh, that type [00:16:08.110] of document. Otherwise [00:16:10.039] it's gonna be blocked and no one [00:16:12.149] will be able to use it. [00:16:13.740] Yeah, So just before we compiled, [00:16:16.610] I did forget to put the images on the page. So [00:16:18.659] we had a rampaged images building block [00:16:21.940] straggling awesome. It's better. [00:16:24.279] S o. This is just a native carousel like [00:16:26.320] we have in the home page on it just [00:16:28.450] has a image you're inside [00:16:30.529] and then is a shoe icon for when [00:16:32.539] there's no images. So we're gonna [00:16:34.409] apply some visit traditional visibility [00:16:36.820] to this [00:16:38.240] just on that has images [00:16:41.539] false [00:16:43.039] on. Then the carousel should show [00:16:45.279] when we have images. People, true, [00:16:49.210] do that. [00:16:51.639] Just a reminder. So if if you're using [00:16:53.970] the chat [00:16:54.960] at the bottom, you can select who you're sending [00:16:56.980] your messages to. So either [00:16:59.009] just us or also [00:17:01.429] all the other attendees. [00:17:04.240] So we needed truth. The database [00:17:06.509] data source for the [00:17:08.369] carousel. I'm just doing a fire database. [00:17:10.799] We're going to select you run objects. [00:17:15.019] Sorry, No running images is what I mean to [00:17:17.019] say by it association. [00:17:19.410] And we're gonna put a sort order on it for [00:17:21.700] creative dates [00:17:23.490] and sort of descending. So we always had [00:17:25.609] much reason. One. [00:17:27.970] And that's a pool. The carousel. [00:17:30.109] We just need to connect the [00:17:32.210] image. You. It's run emissions. [00:17:36.039] Yes, you can just drag and drop that from the [00:17:38.480] connector [00:17:39.519] pain. Also, [00:17:42.660] very good questions in the chat. [00:17:44.470] We will get to them [00:17:47.289] and [00:17:49.230] either. Yeah, if something pops up now [00:17:51.480] or when we Ah, when we get to the Q [00:17:53.579] and A, we'll go through them. [00:17:55.640] Yeah, so while [00:17:57.759] that's busy building, I'll talk you guys through [00:17:59.990] the Java script behind it. So we have [00:18:02.170] to actions. We have Star tracker and [00:18:04.559] stop tractor, [00:18:06.339] so [00:18:07.900] it's basically want to stop the recording [00:18:10.210] off the location and want to stop it So [00:18:12.430] it's thoughts has a few parameters [00:18:15.410] all of these settings here under category. [00:18:18.279] That means it's for battery life and [00:18:20.359] sort of power consumption. [00:18:22.079] The more [00:18:23.619] the more your stationery radius [00:18:25.970] radius is, the more powers can use. [00:18:29.220] Beside that, we have a moral which [00:18:31.470] means to be the EPS euro. [00:18:33.720] So in this case of my local host [00:18:36.710] and serenity, which we created [00:18:40.039] so if we look at the Kurds [00:18:44.839] so firstly disclaim, I didn't [00:18:46.930] write this code. This is a library [00:18:49.059] I found on YouTube. It's Atmar [00:18:51.460] and 85 [00:18:53.039] reacting native background geo location. [00:18:56.240] If you zoom in a little bit, yeah, course. [00:19:01.380] If it allows you to [00:19:03.640] to do that I don't know if I can zoom in [00:19:05.990] this. [00:19:08.160] Okay, [00:19:09.339] If anyone needs to look, you have [00:19:11.390] the project files you can open up. [00:19:13.740] So these are just my parameters [00:19:15.799] and imports. [00:19:17.329] We have essentially a constructor which [00:19:19.529] configures the [00:19:21.269] background geolocation using our [00:19:23.539] parameters [00:19:24.609] So you can see here the euro is using [00:19:26.660] our you're always possible [00:19:28.799] and the rent ideas being set. [00:19:31.440] And they re simply just hold geolocation [00:19:34.069] dot stop [00:19:35.400] and similarly to end [00:19:38.940] and stuck doesn't have any princes [00:19:41.180] and we just call [00:19:43.400] geolocation. Don't stop. [00:19:45.210] Yeah. Yeah, [00:19:47.150] What's what's really important here [00:19:49.390] is to note that while medics is very visual, [00:19:52.440] um, were not a no code platform. [00:19:54.819] We are a low code platform. So [00:19:57.190] this offers thievy ability [00:19:59.690] to extend your applications [00:20:02.049] with your own custom code or code. And he [00:20:04.109] found mine. [00:20:05.609] And, uh, yeah, next to JavaScript [00:20:07.920] actions that are built into the platform. [00:20:10.390] You could also create your own job script actions [00:20:12.849] on. Of course. That's why we have the medics app [00:20:14.880] store, right? So a lot of extensive [00:20:17.210] bility is possible. [00:20:20.170] So the APP was just busy loading [00:20:22.170] on my device. [00:20:23.329] So [00:20:24.190] we should have said this in the beginning, but you guys [00:20:26.480] need to test using the A P K we [00:20:29.039] put in the damaged files. [00:20:30.940] It's basically a special [00:20:32.940] adaptation of the making native at [00:20:35.119] with some special leggings just to make the geo [00:20:37.259] location [00:20:39.039] um S O and the make it natives [00:20:41.259] app is, and at that, you can download from [00:20:43.460] the AP stories. [00:20:44.640] It's amend eggs app that allows [00:20:46.779] you to test, like, locally, [00:20:49.000] test your applications. [00:20:51.789] So we just living it load the data this and day during [00:20:53.980] the database. So the first time it's run, it's [00:20:56.000] gonna synchronize all of that stuff? [00:20:59.019] Yep. [00:21:01.039] Now, before we continue, I have [00:21:03.519] a question for everyone. [00:21:05.289] Him? [00:21:06.440] Oh, there we go. [00:21:07.990] The voting, Those money. [00:21:09.680] You doing? Okay, [00:21:11.890] So I have a question, and the question [00:21:14.130] is [00:21:15.359] I will put it on your screen [00:21:17.289] right now. [00:21:19.539] Are you using the Native Mobile? [00:21:21.839] Now? [00:21:22.700] We have a very mixed audience here today, so [00:21:24.880] I'd love to know, Uh, [00:21:27.140] you're not using it yet, but you like to [00:21:29.420] Yes, we are actually using it in [00:21:31.549] production, APS or only [00:21:33.660] for testing it. [00:21:34.940] Or maybe there is an answer that's not on this [00:21:36.990] list. If so, what is now in the chat? [00:21:39.630] Um, and we'd love to know what you think. [00:21:45.170] Good. Lots of questions coming in. [00:21:51.440] So interesting. Interesting. [00:21:53.890] I'll share the results in a little bit. [00:21:55.619] Um, [00:21:58.039] is your absolute ID? So here [00:22:00.059] we have a love in school. [00:22:04.140] You just so [00:22:12.130] straight away it's going to take us to the landing page [00:22:15.440] on. You can see this. The carousel [00:22:17.640] on the home page [00:22:21.240] on a nice swiping [00:22:23.309] features the hair of the one page [00:22:25.630] we have friends Page, [00:22:28.109] and we have the stock around a tree created now, [00:22:30.210] so That's that [00:22:32.940] Tom and the Buttons on show. But that's OK. [00:22:35.200] We'll get them back later [00:22:36.950] and see, here's the rampage with our labels, [00:22:39.720] nothing has started yet. [00:22:41.660] And we can just be in this [00:22:43.880] test camera. So let's take a photo. [00:22:48.589] It's on my window. [00:22:52.240] That is OK, [00:22:55.539] you're a nice park, uh, park around [00:22:57.660] your house. Yes, on that [00:22:59.779] story. So that just sometimes [00:23:01.940] happens waiting [00:23:03.839] the burned trying to save [00:23:06.440] on there. It's sinking. [00:23:09.400] There we go that I wear a watch because [00:23:11.529] my wife I dropped on. So [00:23:13.680] did the image. Has a belated [00:23:16.460] so excellent [00:23:18.069] I'm just gonna end the pole to see and share [00:23:20.289] the results [00:23:21.369] so everyone could see that [00:23:24.029] There we go. [00:23:25.440] So most people are not using Native Mobile yet. [00:23:27.849] They like to, [00:23:29.440] um [00:23:30.720] what people don't know enough about it yet. So [00:23:33.640] good thing we're doing the webinar. [00:23:35.470] I don't want people are testing [00:23:37.509] it now. I do like ah, [00:23:39.829] like seeing that there are people [00:23:42.549] using this in production APs as [00:23:44.589] well. So [00:23:46.140] yeah, I love to get some examples if you [00:23:48.359] if you guys have some. [00:23:52.140] So [00:23:53.059] now that we're done with that, [00:23:55.039] why don't you say why don't we build the [00:23:57.039] rampage? [00:23:58.029] The France page? [00:24:00.789] Uh, so on the home page, we [00:24:02.859] already have three tabs. You run friends, [00:24:05.210] so at the bottom, we have [00:24:07.259] a bottom sheet widget. This will drag [00:24:09.319] from the bottom [00:24:10.440] with some labels, just the shell friends and [00:24:12.769] the a constant wording to [00:24:15.220] So this is [00:24:17.609] raise. [00:24:19.230] But [00:24:20.299] what if our friends haven't register on the app yet? [00:24:23.039] Yeah, How do? How could I invite people? [00:24:25.349] So we're gonna go get out now? [00:24:27.339] So we're just gonna add another [00:24:29.509] flights in action, but [00:24:32.240] And we're going to select the iconic user [00:24:36.740] and create [00:24:38.269] selecting unclipped Nana foot. And we have [00:24:40.440] this one pre vote. So this one is called, [00:24:43.289] uh, good suit. [00:24:45.059] Go to bring such [00:24:48.950] Okay, if I just go to [00:24:51.210] the front page takes into this account page [00:24:55.039] so you can see here This is a search page [00:24:57.509] where you can search accounts already added [00:24:59.589] on them. And basically, [00:25:01.839] the way this is gonna work is if there's in the [00:25:03.839] results, [00:25:05.029] is going to show this block at the bottom. And [00:25:07.329] if the results in the local app is gonna show [00:25:09.369] that top [00:25:10.640] So we're gonna build up when they're not in the system. [00:25:14.390] So to start both, we're gonna add [00:25:17.089] the Frayn's building [00:25:19.269] block magically [00:25:21.309] into this container [00:25:24.039] so confined here, you're looking for sending [00:25:26.309] magic [00:25:29.180] drag email advice [00:25:31.359] once in the text. Boss, this is just a [00:25:33.650] string within to enter their [00:25:35.849] email. Well, whoever we're gonna invite [00:25:38.910] and then we have a button [00:25:40.289] that doesn't have an enter fly. So we're just gonna [00:25:42.319] select on Click Man Ifo [00:25:45.880] and we call this one [00:25:49.140] link singling [00:25:51.390] a citizen [00:25:54.019] a magic invite, like, yeah, [00:25:56.789] so going in, this is a very simple [00:25:59.130] flight. This is also a [00:26:01.549] native job script action that comes [00:26:03.630] with the native mobile Kickstarter, [00:26:06.339] and it's just drops an email [00:26:08.400] on your local, [00:26:09.940] uh, [00:26:10.890] default email apple in your blood. [00:26:13.740] So [00:26:14.519] we're setting the recipient address [00:26:16.589] to, you know, invites CC and peaches [00:26:18.769] is empty. [00:26:19.690] We have just a subject which [00:26:21.759] is drawing on the past, [00:26:23.740] and we have a body, [00:26:25.170] and the body is pretty much [00:26:27.220] just so we can give them this limb [00:26:29.380] and you couldn't bear any link in there. This is just [00:26:31.670] for my local environment. [00:26:34.980] And you just showing message. Invite saying [00:26:37.329] so we'll show you guys that birds, [00:26:41.880] but we're gonna carry on for a moment. [00:26:45.339] Yeah, so that's I think that's great. [00:26:47.549] Now, what I would also love to see [00:26:49.819] is that leaderboard that sweet sweet [00:26:52.069] leaderboard [00:26:54.880] in this. Yes. [00:26:58.269] So we have the leaderboard area [00:27:00.640] we're gonna put under friends. [00:27:02.630] So [00:27:04.039] we're gonna turn this, patients the report. And [00:27:06.339] to do that, we need to start by [00:27:08.359] adding the leaderboard. [00:27:10.900] Um, [00:27:12.640] need a board headed. So this is just some nice [00:27:14.789] images for each aboard [00:27:16.890] on to show your trail distance [00:27:18.900] compared to everyone else. [00:27:20.779] So connect your total [00:27:23.059] distance field to the one [00:27:25.329] that the label that's expecting a [00:27:28.410] graham it's a [00:27:29.940] just follow the association toe can [00:27:32.180] hold their total distance. [00:27:35.289] I like that. You're using kilometers. Yea metric [00:27:37.519] system in [00:27:39.960] South Africa. It's the anyway. [00:27:41.829] And so after that, [00:27:44.130] we're just going to add a, [00:27:46.920] um [00:27:48.509] certainly. [00:27:51.799] Yeah. So I'm going to add a list [00:27:53.950] view to the page [00:27:57.529] and we're going to select [00:27:59.890] data source as a Nana Flow [00:28:02.089] and we have a ranking manager [00:28:04.980] called D s Ranking order Little [00:28:07.279] D s stands with data source [00:28:09.799] any any [00:28:11.029] men afloat or Michael Flow, which populates [00:28:13.200] the group should be named es [00:28:17.059] We're not gonna take you through that flow [00:28:19.440] being caused since just ordering them. [00:28:22.299] But what we're going to do is build about the risk of this. [00:28:25.940] So [00:28:27.500] here on the [00:28:29.539] account item need a bullet building [00:28:31.619] block. We can just drag that in. [00:28:36.339] And this is gonna be our conscious place. [00:28:39.299] Connect your accountable that [00:28:41.680] entity to the image of you [00:28:45.630] and connect your missing premises. [00:28:50.279] So the 1st 1 is gonna be for men. [00:28:53.640] I just needed followed that to count. [00:28:56.940] Yeah, Yeah, it's one over down, so the [00:28:59.569] search doesn't pick it up [00:29:02.140] and again, we're going to show the total distance because [00:29:04.529] this in Bermuda board [00:29:10.220] and then we have some nice image it is. So [00:29:12.480] this is your 1st 2nd and third, respectively, [00:29:15.690] in the Sneh flow, we assign [00:29:17.980] the accounts in [00:29:20.009] order for where they're going to sentence this. [00:29:22.509] So we're gonna just hide these condition [00:29:25.210] based on the order field. And [00:29:27.759] to do that, we can just get properties, [00:29:30.490] visibility. [00:29:31.940] We're going to base this on an expression. [00:29:34.819] So [00:29:36.039] the current object is referred to the [00:29:38.150] council, for instance, a reinstate current [00:29:40.200] object [00:29:42.099] smashed order, [00:29:51.759] and he went [00:29:53.160] So just [00:29:54.440] copy that, [00:29:56.539] and we're gonna pace the adapted on the [00:29:58.619] second s. [00:30:00.670] So what that means right here is [00:30:02.990] it will look at [00:30:04.490] which one was retrieved first. [00:30:07.109] And we know that that is the right [00:30:09.140] person to be ranked number one because [00:30:11.509] it's ordered based on longest distance. [00:30:13.819] So that's gonna be the first record. Second person's [00:30:16.109] gonna be number two and so [00:30:18.130] on. Yeah, [00:30:20.740] so that's pretty much it for the leaderboard. [00:30:24.349] We Do you want to have another [00:30:26.519] view page off the runs, right? [00:30:29.079] Yeah, Exactly. I also [00:30:31.420] of course what I see. Like, which ones have I done? [00:30:34.430] Uh, you know. Ah, [00:30:36.799] And [00:30:37.680] how far? Iran. [00:30:39.579] So, yeah, if you can build that, that [00:30:41.589] be cool. So over here [00:30:43.650] we have the runs tag, which is completely [00:30:46.269] anti, Nothing on it. [00:30:48.029] And we're just gonna start off with a [00:30:50.650] grid. Sorry. Listen, you [00:30:53.130] and the less new is going to be [00:30:55.200] populated just from the database. [00:30:58.039] Full run, [00:31:01.019] and we're gonna add a constraint. [00:31:03.980] The subtle of the sorry [00:31:06.339] don't automatically phone [00:31:07.920] sort order must be [00:31:10.220] start time descending. So [00:31:12.309] your most recent round will be a talk, [00:31:14.950] right? And they re just by [00:31:16.960] that the run [00:31:19.539] run item on page building block. So [00:31:21.589] if you drag the scene, [00:31:23.619] got a few things in you. [00:31:25.509] So we have a date of you for the [00:31:27.539] image, and we're just gonna [00:31:29.589] populate this [00:31:31.579] with a net outflow [00:31:33.500] cold [00:31:35.029] get last run, image or D is [00:31:37.180] underscored. Get last language. [00:31:39.529] This is [00:31:40.740] pretty self expense, or it just gets the [00:31:42.839] most recent image. Will that run [00:31:46.039] again? We need to connect the [00:31:48.839] run image. Institutes of imagery [00:31:51.940] don't automatically. [00:31:54.140] And then we have some [00:31:56.140] details here in a container. [00:31:58.980] So first off, connect your attributes. [00:32:03.930] So the lost ground we're gonna put start time, [00:32:06.220] which is a date and time. [00:32:08.289] Let's put a custom mapping on that. Right. [00:32:10.920] So he's gonna do day day [00:32:13.309] at the case in month, month, [00:32:15.410] month, the case. Why? [00:32:17.710] Yeah, Yeah, yeah. [00:32:19.589] I'm just gonna do another case age for hours [00:32:22.009] and murder case in minutes. [00:32:24.160] Copy this. [00:32:25.900] We're gonna put it on the [00:32:28.440] finished act premises. So finished. That [00:32:30.710] is gonna be [00:32:31.880] in time. [00:32:35.650] And with same [00:32:37.099] dates on that. [00:32:40.150] Finally, the duration, [00:32:42.339] which is a time stream Englishman, display [00:32:46.920] relation. [00:32:49.839] Oh, but this is just gonna sure [00:32:52.170] or within the same color, right? [00:32:53.990] And I think that's what we want. [00:32:56.160] Yeah, So the cool thing is, what we can do [00:32:58.589] is give give the [00:33:00.869] list items a different color [00:33:03.079] based on the run distance. [00:33:05.390] So, for example, if you run a [00:33:07.049] 10-K it'll be a different color. [00:33:09.259] Then when you run a five k, for example [00:33:11.640] and again, the way to do that is [00:33:13.819] by using [00:33:15.039] expression with conditional visibility. [00:33:18.440] Yes, I have this expression pre [00:33:20.710] boat because I always struggle with greats [00:33:22.970] of them is then [00:33:24.740] so pasting it, I'll talk you through [00:33:26.940] it. I'm [00:33:29.869] sorry. One second. Copy. [00:33:37.190] Copy and paste. The good old [00:33:40.190] developer 101 [00:33:42.299] So this is just checking on the distance [00:33:44.400] field that the brain is greater than [00:33:46.500] zero and listen [00:33:49.690] and consider case of that and [00:33:51.779] this has a ceases. Kloss [00:33:54.089] card kicks boss. [00:33:55.990] So straight off [00:33:57.710] a copy of this [00:33:59.039] paste, the twice [00:34:00.660] look, the entire block [00:34:03.279] would be this [00:34:05.339] or contain. [00:34:06.569] And we're gonna pace the [00:34:07.839] plus. It's funny, [00:34:10.050] someone someone just asked, Are you using a [00:34:12.059] lot of shortcuts or [00:34:14.670] to navigate so fast? But [00:34:17.059] I think Ryan is practiced [00:34:19.059] this so much that he's clicking through it very [00:34:21.090] quickly. [00:34:22.050] Yeah, I'll slide on you guys, [00:34:25.119] but you always needed a control. C control, [00:34:27.449] be guys. It's going to say good life. [00:34:30.460] So the first thing we need to do is on [00:34:32.590] the copied ones. [00:34:34.340] We're just gonna change the distance hoaxes [00:34:36.579] to be treating [00:34:38.239] five on [00:34:39.679] up in the middle tent, [00:34:43.250] and this bottom one is [00:34:45.579] basically gonna be just 14. [00:34:47.699] So we're just gonna take that [00:34:51.539] next? We just need to change all serious as [00:34:53.690] classes [00:34:54.920] on. They're just gonna change the bottom, too. [00:34:57.309] So pink will be [00:34:59.630] for [00:35:01.230] 5 to 10 [00:35:03.239] and the bottom one is gonna be the best [00:35:05.320] were 15. So I'm gonna make that gold. [00:35:07.639] It's a card text box. [00:35:11.730] Nice. So these classes [00:35:13.949] are classes that we've created [00:35:16.349] ourselves for this webinar. [00:35:18.789] So when this part's done, [00:35:21.170] uh, will take a look at what [00:35:23.280] that custom styling looks like. [00:35:27.239] So just stop there [00:35:29.500] and we run. [00:35:34.139] So let's go into the [00:35:36.349] sliding. [00:35:37.869] I've been Serifis. [00:35:40.849] Here it is. I'm gonna say access. Yeah, [00:35:47.940] yeah. So right now what we've been doing [00:35:49.980] is using some [00:35:52.199] built in classes and something [00:35:54.599] that we've pre prepared. And, [00:35:56.869] um, there's a little button in the top right [00:35:58.909] that says show styles [00:36:00.849] If you click on that, it's enabled. Now you [00:36:02.849] can see the little CSS tags on each of the [00:36:04.929] elements. So that means that [00:36:07.000] on those elements we've used [00:36:09.159] custom custom class is basically, [00:36:12.130] um [00:36:13.199] but yeah, we have prepared [00:36:15.300] a style sheet for this, [00:36:17.530] um, [00:36:18.440] before the webinar, it's in the [00:36:20.469] package when you downloaded [00:36:22.110] and, uh, it runs gonna show that [00:36:24.400] Yes. So this was prepared for us [00:36:26.460] by a designer? Not seem. I didn't create [00:36:28.760] this. I'm not that good [00:36:30.880] at styling. [00:36:31.969] So basically, he's created [00:36:34.309] a few classes bribes, which replied. [00:36:36.730] And here you can see the [00:36:39.030] three clauses which we just applied. So [00:36:41.210] we have thing [00:36:42.579] new and gold. [00:36:44.500] These simply just get a background color [00:36:46.519] and contain service [00:36:48.349] file is called Custom Job [00:36:50.550] Jay's. [00:36:51.349] You can find it in your theme folder [00:36:53.769] inside of the project director. And [00:36:55.869] if you're just going to native, there will be a full [00:36:58.110] Nicole [00:36:59.269] native, [00:37:00.630] um, [00:37:01.789] styling or Dean's or something like that. [00:37:04.119] I'll find it for you. [00:37:06.400] Yeah. Can you show that? [00:37:08.099] Yes. If we just go to [00:37:10.480] the project and say [00:37:12.880] Project show putting [00:37:14.380] Kleenex border [00:37:15.909] to be in fear Sing [00:37:18.289] styles. [00:37:19.610] Major [00:37:20.809] Jay is [00:37:21.920] we have unfolded at. [00:37:23.920] It's their custom thought Jay's [00:37:25.940] That's the pull the files that were [00:37:28.070] sharing. So [00:37:30.570] that was wrong. [00:37:32.420] That's just take [00:37:41.599] costing. Disconnected [00:37:43.449] was thought that [00:37:45.480] yes, there were using ah little app Cold air [00:37:47.699] server to duplicate the phone [00:37:49.750] screen. [00:37:50.659] But it's running. I think it's running on trial mode. [00:37:52.860] And, you know, sometimes it [00:37:55.619] decides, Teoh say, Hey, [00:37:57.630] you've been sharing long enough. I'm going to close. [00:38:00.630] So in that case, we just need to restart it. [00:38:04.519] So here it is. [00:38:07.219] Okay. I'm just looking [00:38:11.550] in England. [00:38:23.760] What's your password? Oh, now [00:38:25.829] I know you passed. [00:38:27.670] Very good. [00:38:30.000] So here we have all run page, [00:38:32.519] the run of you. You can see [00:38:34.610] the different colors that we have there. You [00:38:36.699] can see the distance of sorry [00:38:38.849] the the C s [00:38:40.869] s of applying the colors [00:38:43.590] and you can see our friend leaderboard, [00:38:45.940] which is over here. [00:38:47.219] So last Jesson was in the lead, [00:38:50.099] followed by Young and then myself [00:38:52.309] with some other guys in the index team. [00:38:54.820] I e need to up my [00:38:56.860] game to catch up on Mars. [00:38:58.579] Yeah, and [00:39:01.619] I can show you the invite [00:39:03.710] process service search for young because [00:39:05.940] he knows the system. So that's such [00:39:09.119] going back. If we type in some random [00:39:11.329] strings, essentially the [00:39:13.340] results. [00:39:16.420] Well, just you, ma. You met address [00:39:20.619] so you can see the drafted email created. [00:39:23.309] Um, [00:39:25.019] I'm just gonna open up this name, [00:39:27.619] and basically, this is just a phone [00:39:29.780] browser profile page, and [00:39:31.880] this is just waiting to sign up. And when [00:39:33.920] they're done, they can name completely dominated [00:39:36.269] the Yeah, [00:39:39.789] we got back. [00:39:44.260] That's just what I can simply dropped action. [00:39:47.380] So [00:39:48.820] this check the run button [00:39:51.219] again. [00:39:52.590] Oh, I don't just fall out there. [00:39:54.619] They're being the perfect files. Sorry, [00:39:56.619] guys. And [00:39:59.449] yeah, so that's most of the, [00:40:02.409] um [00:40:04.070] yes, I think on important part Here is [00:40:06.199] also now that we've finished the app, [00:40:08.500] you know, even though some elements aren't showing yet, [00:40:10.670] so we can we can debunk that a little bit. [00:40:12.880] It's probably to do with conditional visibility or [00:40:15.510] empty, um, [00:40:16.940] like, empty objects. [00:40:19.119] But I think what's important [00:40:21.250] here is also [00:40:23.110] how we sink data back [00:40:25.500] to [00:40:26.719] the APP server. Because right now we're running [00:40:28.800] everything locally and in a native mobile [00:40:30.929] app. By default, everything is stored [00:40:33.429] in the, [00:40:34.320] um, [00:40:35.550] in a local database, [00:40:37.389] so [00:40:38.460] yeah, Uh, [00:40:40.340] Let's take a look at how we can actually sink [00:40:42.539] the data [00:40:43.510] we share with our online server. [00:40:45.710] So the sinking process [00:40:48.219] is pretty straightforward. [00:40:50.400] So we have a APA venture in [00:40:52.460] the layouts, and this is just a default, [00:40:54.570] which is just going to synchronize when the [00:40:56.619] page loads when the pages we open [00:41:00.019] has some timer actions as well. [00:41:02.449] So that's gonna continually synchronize the data. [00:41:04.550] But we need to think about how we [00:41:06.599] want the data to sink. Right? [00:41:09.059] So under navigation [00:41:12.449] concurs, everything we have our device [00:41:14.730] profile so responsive is basically [00:41:17.099] for form [00:41:18.400] any sort of preform browser. [00:41:21.019] Then we have phone browser, which [00:41:23.280] can also be sort of blunting with [00:41:25.320] tablet process and use our online [00:41:27.849] on browses, which can access your devices [00:41:30.179] browser. And then we have a native metal [00:41:32.679] pressure. And on that purple, we have sinned. [00:41:34.880] Configuration. [00:41:37.309] If we open this up, [00:41:39.969] make that bigger for you guys. [00:41:42.079] So each entity in your [00:41:44.190] project you can now specify [00:41:46.210] Do I want to download this to [00:41:48.320] device or not? So, for [00:41:50.750] some [00:41:52.119] in cities like account, an account holder, [00:41:54.780] we need those in search on the [00:41:57.079] home page images. [00:41:58.449] We want everyone to have these objects, [00:42:00.480] right? But the wrens [00:42:02.619] asses are specific to the user and [00:42:05.019] run images as well as what is the location? [00:42:08.000] So we faulted by exports [00:42:10.920] explosive. Just a querying language, [00:42:13.070] basically. [00:42:14.800] And we [00:42:16.500] faulted them [00:42:17.800] too. [00:42:18.900] The account owner. [00:42:20.889] So we followed the rent association [00:42:23.329] into account, and we save the account for [00:42:25.500] this run. [00:42:26.530] Needs to be the I d. [00:42:28.599] Off the current user. Basically, it needs [00:42:30.719] to be for the logging guy. [00:42:33.530] And we do this for all of location [00:42:35.940] runnin runnin vigils. [00:42:39.590] Perfect. Yeah, so that's Ah, that gives [00:42:41.730] you a lot of control on which data you synchronize [00:42:44.389] and what you don't. Because that's really important [00:42:47.099] for mobile app. Says Well, is that you don't use too [00:42:49.139] much data. [00:42:50.309] So yeah, these options really allow, [00:42:52.829] uh, allow you to do this. [00:42:55.050] So, yeah, [00:42:56.480] you do have a lot of questions coming in. [00:42:59.099] Um, [00:42:59.980] and we'll get to them very soon. [00:43:02.380] Can we use this as an offline app? Yes. [00:43:04.750] This is an offline it. So by default, [00:43:07.289] a native mobile app is an offline [00:43:09.809] amp that is built [00:43:11.869] that way and architecture it that way. [00:43:14.090] And so [00:43:15.519] when you do want to use online capabilities. [00:43:18.670] You have to make a connection with [00:43:20.730] a server specifically [00:43:22.469] and get information in. [00:43:25.409] And so now that everything is [00:43:27.530] done, [00:43:28.599] we get to the deployment options. [00:43:31.550] Now, uh, up to now, [00:43:33.590] we've friend everything locally because, [00:43:35.719] you know, we've been testing and, [00:43:37.630] um [00:43:38.800] yeah, it's it's quick Teoh [00:43:40.980] to do that. [00:43:42.099] But once we're done, [00:43:44.210] we got to figure out where we want to deploy this. [00:43:46.250] And this is really where it pays off Teoh to [00:43:48.260] be a cloud native platform. So [00:43:50.750] not only [00:43:52.260] can we deploy an app on any [00:43:54.380] cloud and running in any environment [00:43:57.000] you can scale it up. Field was effortlessly [00:43:59.320] to match your burke, your [00:44:01.420] app, your growth of your business and so one. [00:44:03.980] So you know, if we're lucky, [00:44:06.030] for example, let's say are fit fast [00:44:08.409] app, uh, [00:44:09.889] on boards, one million users next month. [00:44:12.019] Then I can be sure [00:44:14.030] that the infrastructure, [00:44:15.789] uh, can take care of that without the need [00:44:18.039] to make big changes to the APP [00:44:20.230] itself. [00:44:22.090] Yes, So it's actually really easy to [00:44:24.260] pick your cloud provider so you can just [00:44:26.389] go to the environment page under [00:44:28.940] her book index and you can select [00:44:30.940] your provider [00:44:32.610] once you selected a junior configure your [00:44:34.619] log in details. Actually, let me just share my screen [00:44:36.849] so I can show you guys. [00:44:39.679] So sharing modeler [00:44:41.429] we can then configure the [00:44:44.289] run on cloud foundry [00:44:46.110] Jetsons and this is for your life. [00:44:48.900] And once that's configured, you literally just [00:44:51.059] hit first run icon, [00:44:53.210] which is with a cloud icon in that [00:44:55.860] that will run and deploy the AB in [00:44:57.880] your selected cloud. [00:44:59.610] All goings need aim index license. [00:45:01.960] If you want to use 1/3 party app [00:45:04.750] at the party Cloud provided side, [00:45:07.389] and that is basically going [00:45:09.489] to allow you to host [00:45:12.230] almost anywhere. Really? [00:45:14.670] Yeah, basically anywhere. So [00:45:16.860] you're not restricted to Microsoft [00:45:19.139] or AWS, [00:45:20.780] basically any any provided that [00:45:22.860] allows [00:45:24.630] the that has a Kipper narratives capabilities. [00:45:27.179] That's where you can host your host your application. [00:45:29.530] So yeah, [00:45:30.789] All right. So this rounds [00:45:32.969] of the life built part [00:45:34.880] and we can now go to the Q [00:45:36.960] and A. But before we do that, [00:45:39.119] I want to ask another question. [00:45:41.519] And that is [00:45:43.190] what app [00:45:44.389] do you want us to build next? [00:45:47.269] So I've been able to pull, so [00:45:49.329] you should see it on your screen. [00:45:51.789] Uh, I hope you hope you're going to see [00:45:53.889] it on your screen. [00:45:55.090] Um, [00:45:56.059] yeah. So do you want to see [00:45:58.239] how we style and native mobile app [00:46:00.780] Do you want us to build something completely different? [00:46:03.349] A rideshare app like uber lifter lime [00:46:06.110] or maybe a food ordering app [00:46:08.530] like uber eats food or just eat. [00:46:11.210] Um, [00:46:12.480] and [00:46:13.449] just to give an example of what [00:46:15.510] we can do either with native mobile or [00:46:17.639] other platform capabilities. And, of course, [00:46:19.800] if you have other ideas for topics, [00:46:22.380] be sure to let us know rather than the chat [00:46:24.739] or [00:46:25.550] in the survey afterwards. [00:46:27.780] So we'd love to know what you think about the [00:46:29.840] webinar and how we can improve that as well. [00:46:33.579] All right, So while everyone is voting, [00:46:35.989] I am going to enlarge [00:46:38.050] the Q and a window. [00:46:40.170] Let me see or sort of the chat window [00:46:42.349] because I like to see [00:46:44.679] what everyone is [00:46:46.480] talking about and all the questions everyone's [00:46:48.510] asking. [00:46:49.420] So let's give me Ah, [00:46:52.030] please give me a moment. [00:46:54.679] Wow, There are so many questions. [00:46:58.619] Let's see. [00:47:00.079] So [00:47:01.280] just ah, reiterate we are recording [00:47:03.940] everything. So we will be posting [00:47:06.199] this online afterwards so you can share it with [00:47:08.800] other people. A swell. So, um, [00:47:11.530] you're good. If you want to follow along and [00:47:13.550] built this yourself, you can do so [00:47:15.909] on and [00:47:16.969] play it at your own pace [00:47:19.679] using the recording. [00:47:21.780] So let's see. Um, [00:47:24.420] what's the difference between Mike Phelan and Flow? We've had [00:47:26.530] that one. [00:47:29.639] Is the medics native mobile app built [00:47:31.750] on top of JavaScript. [00:47:34.280] So Ryan [00:47:35.679] So [00:47:37.449] yes, And so it's actually [00:47:40.019] a combination of John script and allowed [00:47:42.280] recall react. [00:47:44.170] So this basic meat is [00:47:46.639] wrecked is a [00:47:48.460] transpired basically convert Jewel [00:47:50.679] Reiko into Johnson. So essentially, [00:47:52.980] yes, it is all [00:47:55.150] running on job script. [00:47:57.739] All right, what is the best [00:47:59.840] time to do a sink activity? [00:48:03.360] Eso [00:48:04.570] The single activity should generally [00:48:07.000] be done after a critical [00:48:09.130] thing for as we did alter the images [00:48:11.590] or when he created the new data. [00:48:14.570] But it really depends, so you can have sink [00:48:16.940] as a [00:48:18.329] timer event that synchronizes [00:48:20.539] every few seconds. Or you could do it in, or Michael [00:48:22.849] flow with the action. [00:48:25.550] And basically it's [00:48:26.760] what feels best to you. But it's [00:48:29.250] Do you think this needs to be available on the server [00:48:31.590] immediately, You [00:48:32.829] or is it a case even for [00:48:34.949] a few minutes or hours or whatever [00:48:37.179] and then just synchronized when they manually [00:48:39.309] selects. And [00:48:40.570] that's what's on offer. You can have a manual synchronized [00:48:43.170] activity, [00:48:45.239] right? Right. [00:48:46.969] Um, [00:48:48.139] can you Sorry. How are you dealing [00:48:50.280] with permissions on operating system [00:48:52.329] level? So, for example, once you install [00:48:54.559] this on IOS or Android [00:48:56.719] device, [00:48:58.650] So inside the reactor native [00:49:00.679] library, [00:49:01.969] um, which we used for [00:49:04.389] geolocation from Mara there's [00:49:06.530] actually pre bolts that. [00:49:08.530] And when you call geolocation [00:49:10.800] dot star, [00:49:12.050] it opens after permissions. If you haven't [00:49:14.150] given the permission ready, [00:49:16.519] So it should just automatically work [00:49:18.880] on my phone. I've done it already, [00:49:21.000] so I can't show you the [00:49:24.440] but yeah, [00:49:25.710] when you guys tested off, you should see [00:49:28.550] Perfect. [00:49:29.849] Yes. So can you connect this to heartbeat [00:49:32.139] monitor, for example? [00:49:33.630] The simple answer is yes. You [00:49:35.860] can basically connect [00:49:37.559] anything to amend eggs app. So as long [00:49:39.599] as it has an interface or an A p [00:49:41.710] I, you can connect that [00:49:43.750] with medics. We do have a lot of [00:49:46.110] out of the box integrations already [00:49:48.570] in studio pro, [00:49:50.269] or you can download extra integrations [00:49:52.750] from there from the minutes app store [00:49:54.670] or, if you're feeling adventurous you [00:49:56.760] can build your own integrations [00:49:58.780] and consuming arrest service is [00:50:01.059] a very simple process in minutes as [00:50:03.090] well. So it's mostly visual. [00:50:05.260] Um, you just have to put in the settings [00:50:07.409] and you can consume this service. So yeah, [00:50:09.659] the heartbeat monitor, for example, is [00:50:12.050] something that could be done here. [00:50:14.760] You can also check up. There are [00:50:16.969] some resource is on using NFC [00:50:19.349] functionality [00:50:20.849] that that's actually one of the how [00:50:23.090] to reference guides available [00:50:25.159] for So it teaches you how to access the [00:50:27.380] NFC off your app, which would most [00:50:29.409] likely used to connect through hard [00:50:31.949] moments or something like that. [00:50:34.860] Right? So, going back to code, [00:50:38.260] Uh, does this have typescript support [00:50:40.760] or doesn't Bendix have types typescript? [00:50:43.030] So I'm 100% years eso [00:50:45.900] the JavaScript actions and the [00:50:47.940] pleasurable ridges [00:50:49.989] they all support typescript. [00:50:52.150] And it's basically any version [00:50:54.340] off JavaScript is compatible [00:50:56.679] with the native mobile side of things. [00:50:59.460] You do need to consider your permissions. [00:51:01.769] You're you're important, [00:51:04.409] that sort of thing. [00:51:05.659] But yet anything you want can basically be [00:51:07.670] adapted. Yeah, [00:51:10.659] So taking a step to [00:51:13.050] testing, [00:51:14.329] uh, [00:51:15.110] if you want to test the medics app, what do you do? [00:51:17.630] And How do you test it on your phone. [00:51:20.050] So normally we have [00:51:22.050] the maker native app, which is [00:51:24.150] available in the place. [00:51:26.230] The adjudication side of things here [00:51:28.599] required us to create a clone of that [00:51:30.969] in order to add some first civic [00:51:33.159] permissions and imports. [00:51:35.840] Also some dependencies. [00:51:37.659] But when you bundle your app [00:51:39.849] into production 80 k [00:51:41.849] on these resource is online. [00:51:44.159] When you do that process, then [00:51:46.300] you can add your permissions there and your dependency [00:51:48.570] there and work as that for [00:51:52.139] perfect. [00:51:53.800] So someone's asking. I would like to know how [00:51:56.030] you link the forgot password module [00:51:58.780] to the APP in case the user forgets [00:52:00.880] the user name and password. [00:52:03.550] So we didn't do that [00:52:05.610] in this one. Um, [00:52:08.349] we just sort of created a manual, [00:52:10.639] ever. I forgot possible. [00:52:12.510] There is a module. [00:52:14.440] And if you just read through that documentation [00:52:16.500] on the model, it should do everything [00:52:19.090] we wanted to. [00:52:20.449] I think they might also be a [00:52:22.489] implementation off the growth model, [00:52:24.889] which could check up [00:52:29.309] perfect. Yeah, [00:52:31.699] so let's see. Um, [00:52:33.710] we have five minutes left. [00:52:36.340] Let's Syria, uh, have [00:52:38.360] any, uh, detailed [00:52:40.769] questions. Are there so many questions? Guys, there's [00:52:42.889] so many good questions [00:52:46.219] and let me share my spirit because I [00:52:48.250] fixed those buttons. [00:52:50.250] So what? We're waiting for. The next question. [00:52:53.860] I could give you guys a little premium. [00:52:55.889] So what was what was going on with the buttons? [00:52:58.409] It was just a [00:53:00.320] user rights. [00:53:01.869] I e. [00:53:04.579] Sorry, my costume has stopped used. [00:53:09.449] By the way, if anyone has any suggestions [00:53:11.840] for a good phone screen [00:53:14.039] clone app, uh, [00:53:16.150] this would be a good time to share it with us because [00:53:19.159] their server is great. But it's a bit [00:53:21.300] doctor sometimes, [00:53:22.780] so you guys can see other buttons are showing. [00:53:25.440] So if we could [00:53:26.730] clicks thoughts [00:53:28.110] conceived there in the notifications [00:53:30.429] to get a little [00:53:31.760] notification, saying it is tracking you, [00:53:34.349] Um, I can lock, screen, [00:53:37.280] shake it about. [00:53:38.849] It's picking up the movements. [00:53:41.159] Just think [00:53:43.250] and stepping it again. [00:53:45.539] You can see there. It's synchronized that's open, [00:53:47.949] and you can see the labels updated, so we're going [00:53:50.719] very slow, and we didn't very fall, but [00:53:52.719] it's been 12 18 seconds. [00:53:54.909] So if we had stub, it's gonna open [00:53:56.980] up the map [00:53:58.300] so it looks like craziness. [00:54:00.489] But when you zoom out, you realize this is about [00:54:03.309] a meter apart. [00:54:04.920] That's my [00:54:06.289] that's me on and you can [00:54:08.329] keep zooming. [00:54:09.539] That's where you want [00:54:10.980] on this Has the [00:54:13.300] people maps, affection, everything. So she just doubled [00:54:15.429] separable Zoom in the game [00:54:18.039] and yeah, [00:54:19.300] that's that. [00:54:21.230] Excellent. Yeah, that looks super, super [00:54:23.369] cool. So there's a couple [00:54:25.670] more questions here. We're gonna see if we [00:54:27.679] can. We can go through some of these quickly. [00:54:30.130] So Paul is saying I see that the design [00:54:32.429] motive, the page editors great out. Does that [00:54:34.590] mean that that feature doesn't yet work [00:54:36.650] for a night of mobile pages? That's correct. [00:54:38.940] So for normal pages, you can use the design [00:54:41.239] Moto get a view of what it what [00:54:43.449] it looks like, like sort of a Wiz e week view, [00:54:46.039] but from for native mobile pages, that's [00:54:48.130] not being activated yet, But it will [00:54:50.139] be in the future. [00:54:52.630] Are scheduled events available [00:54:54.760] on Native Mobile? [00:54:56.139] Yes, So it's likely additions [00:54:58.820] on we have these evidence. [00:55:01.000] So it essentially is [00:55:03.110] calling this under the BIS every [00:55:05.130] few seconds so you can [00:55:06.599] have a few different options. You can call in [00:55:08.699] any flow. Yeah, [00:55:10.510] you can synchronize [00:55:12.199] Utkan do a whole bunch of stuff, [00:55:14.710] and you can configure things for winter [00:55:16.809] connects online when it goes offline [00:55:19.349] on how often you want to synchronize [00:55:21.860] just by itself. [00:55:23.530] It is also some styling things, but that's [00:55:25.530] not really rid of them. Because you don't see what's really, really [00:55:28.949] and [00:55:30.550] you can also have a [00:55:32.980] We have a [00:55:34.840] scheduled event running, which collects [00:55:36.900] the runs from our run [00:55:39.159] tracker [00:55:40.239] and basically doesn't processing [00:55:42.320] on that created Jason String, which [00:55:44.639] we met onto our [00:55:46.880] once on that. [00:55:47.840] So we create that on the server [00:55:50.409] and in the synchronization, called the data [00:55:52.800] into the device. So there's no calculation [00:55:54.860] on the device. [00:55:56.119] And then we just showed that map in the page basically. [00:55:59.820] So yes, it scheduled events taking years. [00:56:03.380] Perfect. Yeah. [00:56:05.400] Um, so some was asking, Hey, [00:56:07.460] am I right in saying that the [00:56:09.769] A p K doesn't work on IOS [00:56:12.099] on the dyno five. There's an a p. K. So [00:56:14.269] yeah, yeah. So it's not [00:56:16.369] gonna work on Iris. We can [00:56:18.480] provide in IOS one. [00:56:20.940] Just need some time to do that. You can spend [00:56:23.369] it out off to this. Maybe [00:56:25.579] if anyone wants connected does on [00:56:27.690] these black Community channel [00:56:29.480] and we'll send you the file. Yeah, [00:56:32.150] good. So I [00:56:34.329] like this question from some year. [00:56:36.730] I usually prefer building the front end [00:56:39.010] from the browser. So, [00:56:40.960] um [00:56:42.429] and then come to a pro. I d [00:56:44.789] like, you know, medic, Studio Pro [00:56:46.960] to do the beckoned. [00:56:48.599] Do you have a recommendation for [00:56:50.710] this approach or how [00:56:52.920] to do this with medics? So [00:56:55.320] I know that most rent in guys like [00:56:57.380] to use the inspect elements and then they [00:56:59.420] do [00:57:01.289] styling inside of the inspect element field. [00:57:03.400] Then they copy that over to their i d. E. [00:57:06.110] So I'm native Mobile. You can't [00:57:08.219] really see the device in [00:57:10.300] a brother. It's not gonna work because [00:57:12.489] it's offline, right? [00:57:14.309] So [00:57:15.210] the best way I have found is just [00:57:17.570] to [00:57:18.530] test that test the classes on a [00:57:21.190] online page and you can copy the [00:57:23.380] classes onto the native mobile. [00:57:25.909] That's one of the best ways I found. [00:57:28.070] And also with the makeup native at every [00:57:30.119] time you re run hot reload. So [00:57:32.420] you don't need to completely rerun every time [00:57:34.829] justice you fighting. [00:57:36.280] It will be really quick and starting over effect [00:57:38.710] on this instantly. [00:57:40.730] Perfect. [00:57:41.929] We're going to do [00:57:43.309] one more short question because [00:57:45.460] we're a time [00:57:47.500] um don't worry. We'll go through the questions, [00:57:50.099] all of them, And try and get you [00:57:52.130] and answers. Still, even if we [00:57:54.079] don't talk about this in the webinar right [00:57:56.300] now, you're not for gotten, [00:57:58.510] so don't worry about that. [00:58:00.519] Um, [00:58:02.159] let's see. Let's pick one. [00:58:06.420] How much battery will it use [00:58:08.480] if you sink as a scheduled event every 12th [00:58:11.440] or does it depend on the data? [00:58:13.199] So I've been testing pretty [00:58:16.309] hard core, [00:58:17.739] and my friend battery doesn't [00:58:20.010] really drain so much, [00:58:22.119] but [00:58:23.219] I did [00:58:25.480] create the actual production version of yet [00:58:28.650] And when I tested that, I went [00:58:30.900] forward like a five K [00:58:32.619] and use the about, like, 10% [00:58:35.230] my battery power, [00:58:38.119] right? That's not bad, actually. Yeah. [00:58:40.639] Yeah, well, it took me, like often our I'm not that cost. [00:58:43.360] Uh, [00:58:45.619] all right, [00:58:46.550] um, was that I went to round up the webinar. [00:58:48.789] I want to thank everyone for joining. [00:58:51.119] Um, please fill out the survey [00:58:53.320] so that we can see what you think [00:58:55.349] of the webinar and give us ideas [00:58:58.280] to improve this [00:58:59.719] maybe other topics and so [00:59:01.760] on. And if you want to continue [00:59:03.800] the conversation, [00:59:05.070] join us on the community slack, [00:59:07.280] so [00:59:08.110] go to bit. Lee slash medics [00:59:10.320] community slack [00:59:11.590] and created account for free. We've [00:59:13.670] already got 1500 developers on there, [00:59:16.210] so join us there. [00:59:18.269] Thank you all for joining [00:59:19.960] and [00:59:20.820] see you at the next Lebanon, [00:59:23.070] they said. Run.

Choose your language