Build a mobile DAPP with React Native [workshop] by Mike Grabowski (@grabbou)
ETHDubai 2023 · 15 Mar 2023 · 1:49:09
Mike Grabowski leads a React Native workshop that builds a small Uniswap interface. The session demonstrates developing mobile decentralized applications with TypeScript.
Speakers
Topics
From ETHDubai 2023, hosted by DeFi Dubai.
Transcript
example maybe your words about me before we started and also part of this Workshop today uh so Mike and earlier this club before that I was doing a lot of react native uh the open sources with a Facebook team that's actually what my previous business was about maybe her wholestack we're doing what we are doing in the open space so I kind of started with webto background and I ended up doing web 3 which surprisingly it turned out to be pretty much the same which is very cool like the text I used to say and so uh Patrick just asked me for like writing this Workshop to show you a bit of how does the getting started look like we are native so I guess my question to you all is like what's your background and like Patrick told me like when
like what are the people that had a workshop he said web2 devs but I already see at least one person who's not a web to this at all which is actually the only person who texted me that I was running late in this commercial and so yeah that's I guess my question so if you just maybe briefly do like a quick uh to start from this thing yeah hi I'm Sandeep I'm doing my eye contact and uh I made them I work for 35 project I'm basically a smart contractor my Milius I'm a developer at the
myself experience primarily working in like mobile packet and web and I'm in a relationship Team part of Frontier wallet so how do we go now I can go next my name is Raj currency exchange now my manager software team it's been a couple of years since I coded but you know and I have no prior web 3 experience but I figured okay this is a project to dive into it it's cool my name is katsai so I'm a technical founder from Project my technical
program is I get closer in the operating systems and launching clients I ended up doing smart contracts as well my CSS food is closer than existent but I can sort of debug that day to build failures because yeah that's what I thought of music no that's not that's a surgical yeah okay thank you all right hello everyone I'm Robert uh I've got some experience with Liberty and build and you know a m online which is actually online uh too from the finance and it's built on uniswap so it's got a surprising place and yeah I love three experiences mostly with react um and just react so getting a lesson about we actually did is kind of interesting
hi my name is from Japan uh I'm agent for Japanese content s I'm CEO but not in today's I'm running a champions my name is and when was the first time you started the degree at Native well it's been
foreign workshops like four years ago and I was just getting people started with Native stuff was just crazy so it's much better and yeah and uh now is your turn actually he will be helping me today as well because you know I figure it's good to have back out for this so uh like more than six years
I ran a company called paddle shop we provide like a day sure you work with a lot of clients like parkinomi polygon Solana pillow fund we developed smart contact apps ux everything for them yeah that's it cool so you see the split here is of course uh he will be probably the web 2 expert here I will be pretty sure able to answer all of your questions are more had more than happy to answer any we updated with related questions you may have but you know I haven't started like watching I think six years ago last year actually even though I think it's like it's great that we are here together so
we will be building reacting up today and just before we start just a little comment that you know react native like how many of you have done what I think before making a superstar in a long time in a long time four years back in two three years later but I just moved into factors but I heard a lot of streams oh yeah I I yeah we got the power yeah yeah so I still like a flatter but like uh when it comes to Victory it's all about react native yeah that's that's my impression too you know we we had lots of discussions like my other companies like you know we have like 100 plus engineers
and we do we have people around the world so naturally every time there's like some somebody's curve react native dying we hear those discussions and we have them and we used to have lots of them like two or three years ago but now everybody's like in it you know I think part of that is web3 actually because like uh when you look at the react native space like most of the projects are like web tool so when I was chatting with like investors and other clients that were like okay react native is strong but it's not gaining any new traction yeah now I can say like here is new cave like web 3 didn't exist with three I made like two three years ago and now it's like something newer we have made it shining so um so similar opinion I also like I thought like react negative is gone and
I mean when I tell what's becoming popular but like my perception got totally changed when it when I moved into F3 space for five years ago it was like right from like um code bases are like more orally the repositories for example that they use a uh like a reusable JavaScript player and won't react as well as react native projects like Ledger they'll do have like an owner with code base mono repository not monolithia so mono repository and that's why going to be the future so I I'm biased so I can say yes
that's cool so um the reason yeah the reason I asked this question is you know when I Was preparing this Workshop I was thinking like what would be the best way to build a re-ening adapt you know unislap is not a uh we have named adopt it's a webdoc and that actually changes a lot because we have native theoretically one may say it's like web like a browser environment but like it's missing some of the let's say found the foundational pieces and actually these pieces turn out to be very important and of course you can probably feel some of them like buffer or like I don't know like a Texan color into color or maybe like basics of crypto library but there is a lot of follicles that are missing
but totally gone for example right now you cannot actually run xmtp or react native just because there is no subtle crypto support so it's not going to work and if you make it run it's gonna run for like five minutes just to try generating pgbts so not recommended so the point is When I Was preparing this Workshop this week I got stuck for like two days trying to get wallet connect to run on mobile as I was like okay we're building tabs so we're gonna explore like forget about it it's not possible and you know that's part of the reason but like that's actually a good thing for you like you can come here and you can stress test all those problems that you might have faced otherwise and be like
okay it's not just me so yes I can confirm it is very hard to run some of those things today uh they're changing so the point is that maybe next month you always collect is going to have like amazing Revenue support because we're actually working closely on this yeah watercolor conversion 2.2 yes yes I spent last month doing all the connect 2.0 for unisa which is like my talk tomorrow and like [Music] yeah it's it's cold but there were some like final problems we can talk about them later so anyway what I'm saying is ideally you should be able to have a reactive app like a web app where you can
also hi what's up um so what I was saying is theoretically you should be able to build a react native Gap just like any other adapt where you can connect with your wallet and do all sorts of different transactions but like I said wallet connect is now broken so I don't really want to make like bloated Holyfield version of like native code for you because that's just not the point instead we can use something different which is actually widely supported and it's really awesome which is using uh web3l or formerly known as storage wallet I guess which is pretty much a social login for web tweet projects so the way it works is that we are going to log in with like password link Google Gmail whatever and then we are creating a
intermediate wallet based on social accounts so tldr is that you can generate Wallets on the go for your users so if you're onboarding somebody from the street and they're like you're building like a web 3 project you're like log in whatever way you want and then you have well you can do some sort of different things so everything from that point onwards will be reusable when we switch to wallet collect later but this is just the easiest and actually quite quite impressive thing we can build today so the point is that we're going to be building a very simple mobile app just one screen no styling however you can style it I can help you style it as well but I just wanted to focus on the logic uh we're gonna build a very simple upper we log in with Gmail or whatever is your choice then we're
going to have um we're going to have like now we're going to we're going to connect to ethereal actually probably got we're going to check our balance and then we're gonna send some transaction to somebody based on the private wallet keys we're gonna have and then we're going to have an ERC Clinic token which is uh you know a ethereum standard something like usdc we're going to learn how does this work in case you did that or you want to refresh your knowledge and how to transfer an upgrade with those smart contracts um and if we have time we can also talk about other things like navigation actually connecting to Solana as well with this whole setup maybe about different things like whatever you want to ask about it
um how are we gonna do it uh there is a GitHub repo that I created actually today so it's like I'm pretty sure everything's running um and every step that we'll be going through is a separate comment so I encourage you to build from scratch and worst case scenario just copy and paste rather than check out the refund just jump through comments but it's pretty much up to you I think the most efficient way to do it will be to just go through those steps maybe discuss give you guys like 15 minutes for each to do you can check out check out how it's done I'll be of course describing high level idea of it as well any questions thoughts things to look at pay attention
does everybody have node running no judge no judgments you guys are set up with node.js cool so that's pretty much all you need I guess everybody's on Mac or we have somebody running back it's cool it's cool yeah you know these days doesn't really matter because we have Expo but when I was running Workshop like three years ago and people showed up with Windows is I was like oh my God you know usually like Android issues all the time so cool we all got Max
um uh you will uh everybody's using vs code or do we have anything our users so I noticed we have installed okay that's cool that's also cool so um throughout the code base uh that I'm going to share with you I'm using uh unisclub eslint config and that is still conflict hello is a everything in a single config configure we use internally which is not only easily but also prettier and all sorts of different things so if you would like to use vs code and you have ESPN plugin installed you can go through that setup as well and just be careful because the way it works is that as soon as you install it and configure it every
everything starts working including Twitter automatically and we don't use semicolons so I know that's a hard one so just just saying I was pretty skeptical but when I joined Universe they were like not using semicolons anyway so I didn't have choices actually I have to say I quite like it without so um maybe you try as well cool so now I guess from the communication perspective are you all on telegram conference group like yeah yeah because I think that might be like what would be the easiest way to set up a group so we can share the links around yeah I don't know if there's like a is there like um
QR code for the group or whatever okay okay let me see if I can do it actually I started using telegram just like recently because everybody was using Whatsapp before okay so I was I'll just start with you yeah contact um
well yeah oh new book okay send me invite link and I sent you and now invite the group violin yes I get to work out okay all right well now let's play the QR code so we can enjoy um
I guess concept is as soon uh let me know works I think it's got it yeah yeah I cannot get it yeah all we just need to do can you zoom out a little bit yeah actually I cannot because I can make them win this I got it now
um so we want to make it smaller yeah if you have any questions later after the workshop you can also delivered directly um yeah okay thank you
so I'm showing the link to the project it's open it's open and um yeah I guess just you know just the very first thing we're going to do which is probably like depending on where we are going to take us some time it's just getting started with like basic react native apps so the idea is that we want to have um we want to have we have native mobile app running and just the same color world and stuff with typescript are anybody's not using typescript cool so the the so the first part is
just getting started with react native mobile app and um the quickest way to do it is to get started by doing it with Expo which is um like a All in One Suite for running everything we have made it related and I'm going to explain it briefly in a second but what you can do is everybody can try running this command I'm going to show you actually we're going to quickly uh create a brand new project actually font size that's all right actually I'm going to do the worst data
I can which is just based on the command and chat and I'm going it's right here as well so as you're running it I can briefly go over what expert is um which thankfully is something that will make our life easier today how many of you have used Expo okay so two people so everybody who hasn't used Expo before you're gonna love it because the good news is that it's everything all included reacting so normally when you're building real
native app you have to react native install it and then you have those negative folders you have to run them and you have to open xcode and do all sorts of different things if you're relaxed you can get done get away with just running a npm start or something command and it's got that kind of work Expo is something that is managing the whole life cycle for you so rather than building a standalone application throughout the development life cycle you can think of it as rendering web app inside a browser so Expo is like a browser and inside that application is your react native code an expo takes care of all the negative modules takes care of all the breaking changes of react native performance speed and step so the way it works is that everything is included for you and as you can see
very simple command is spinning up everything you need with GitHub repo basic project structure and stuff like that and also the good news is that Expo is like well documented all the modules have like amazing documentation they work unlike with real neighbor sometimes you have some issues and you also have very nice DX pipeline for developing your application to the app store which is pretty much a single command and you can actually deployed to the cloud as well very easily so forget all the signing forget all the Apple issues I'm gonna have to do it all you have to do is just log in with your CLI Apple account and everything's done automatically for you so as soon as it happens as you can see at the very end you have some commands and the idea here is that you just need
to go to this app and pretty much um npm uh run iOS I'll be quickly switching to yard anyway so uh you can um previous yard anyway and what's going to happen is two things the first one is this command is going to start something called packager which is like webpack it is what is battling the whole code into a single file so always make sure that this is actually running somewhere mine is not going to run because I do happen to have another one running which is the demo project so for you there should be actually a QR code which you can also scan with your actual device if you want to build on your real device not on the simulator so that's kind of up to you let me actually close the
so we can see this one going further so yeah as you can see the port is taken so it asks me if I want a different one so that's that's kind of DX Improvement that I'm talking about like we don't have to think about it so what's going to happen now is you can see it's starting virtual bundler you got this beautiful QR code you got some URLs ipe address where your code is hosted and um some other information so once we get to this stage uh you have to press I which is open iOS simulator and at this point we're going to see potentially some issues to result because if this is your first time doing it chances are that you may not have some agreements or executed yes so you
executed command npm run IOS and Android iOS around iOS okay actually at this point it doesn't really matter because as you can see you can still press a for Android what happened what happened actually when I did run iOS is that packager is just building entry point for iOS so it's like bundle splitting yeah there are actually two files at the end of the day your application for iOS which has all the Death code for Android unlike it and for Android which has all the iOS codes but because we are not running until like I'm not going to be running Android today unless I have to so I'm sticking to the iOS and the good thing about Expo is that all the modules are cross-platform so you don't really
have to worry about Android until the very very end if it's working on iOS it's going to work for you as well um so you press I and it should spin out the simulator whatever is the default and the default screw it is open app app.js to start working on your app and my question is who's who's who's it like who's who's still not at this point I am not looks like my android setup is cool yeah you can see this this one is here okay [Music] if you want to work with like like premium internet
it's up to you yeah the only problem is that in my code I'm using Expo modules and I think there might be some additional setup required for them if you want if you want you can go with that it's just that I'm afraid that it may require some time for the uni modules to work you know like the Expo put more like but if you're feeling like adventurous you can replace them on the go with the ones that work with Vietnam so feel free to do it okay how's going for you guys okay yeah actually yeah this or just Expo star will do
um yeah and how's it going for you guys just want to make sure that if anybody's stuck just let me know uh so I can help but like I said every step including this one is on GitHub so you can just check it out and I'm more than happy to answer at any point okay [Music]
those are the issues that I love at workshops every time you do it there's something yeah oh yeah um that's also fine um in this case I would recommend um now to check out the very first comment the project s or actually maybe maybe if you want you can start by running this command that I pasted on telegram because once you run it and you get to this stage everything can be copied and pasted between the projects so might be a bit
easier finally skip this started already foreign oh yeah you know what I'm not thinking this might still remember no no this symbol ism so you should get you should get out of
this project just do another folder so not run inside this one um this one is just for reference you don't have to clone them uh it's just for you to know that yeah foreign Fields so we go inside and there's like
50 modules crypto browser five and like that and people usually include it is bloating your app because your project doesn't need all of them and some of them are not maintained so we have like the smallest assumption that is like making it possible to run and once you get it set up whether you do transactions like we do today and whatever like up to you at this point you're like you have provided with a wallet you can do whatever yeah is so it's just about getting started yes okay surprise to see actually you know I have to tell you I have not run on Android at all this product so you will be the
person to tell me if it's working yeah all right okay so you got somewhere no I had to run it I don't know check out okay so you did check out the um no I know why it is not work so rather than um just select this one okay that's inside the project you can check out the fresh one but if you want to run this one just run the generate whatever just generate types command and we restart it's just uh I did that proposal just on purpose okay uh anybody else
like uh still setting it up yeah I don't have anything okay oh my God we'll check back with you in like three hours with this internet I mean okay um actually yeah you can do one thing you can just go to the code sandbox an expo snack maybe thank you yeah Expo snack snack snap like a snack it's like it's like um it's like cooked some dogs yes and uh theoretically you are you're you're it is possible to install third-party packages yeah so I'm not
sure if it will work with all the polyfills but actually you know what I can lend you my hot spot because quarters is a local internet I'd be happy to have unlimited 5G without any fair use limit so um you can just connect to my hotspot and it will download like so it's slow I know if you can if you can charge my iPhone then you can you can just like it like I said I don't have any limits but it's just gonna run out of um okay so uh in an inside let's open up this project structure see what's there just they are very
quick walk around that is probably not even visible from the outside how was this picture called magnifier in the windows anyway if you open up your project and you will see the left sidebar you've got a bunch of different files and the good thing is like
if you have ever run a basic reactivated command you will notice that there's less files which for people like me that prefer to just as little files as it can be which is like paradise and you only got packages to play with the largest double config of course app.json and app.js are the two files that are most important here with the app.json being the configuration for Expo it is pretty it's pretty expensive it's just this is just basic so it's not really something that we should be aware of but if you are building native app you'll usually open a base code and modify some pill p list or whatever this is the place where you can do all those settings so if you whatever if you want
to change your icon title build version or stuff like that this is the place so when you are wondering like okay I'm not owning my app I'm using Expo you should check this file's running configuration that is possible and then um and then on the on the on the Valero file on the app.js which is just a basic uh JavaScript reacting project a single screen as you can see uh the structure is very simple pretty much like react is just that we have different tax view text status bar which is equivalent and style we have stylesheet.create which is something that you might want to replace at some point you have something more convenient like
what are you using for a styling on the web components uh react native I mean like mua chakra UA something like that have you ever have used um tamagui already I'm probably up the spelling but okay the one from garcelle yeah it was pretty cool but you know as with every styling library that is pretty cool via where it's actually pretty cool but can you just write it so yeah or you can add it in the telegram channel so today like I said we're not going to be
messing around with styling however you can do it if you want or but this is like the simplest it can get stylesheet.create you have to you may want to call it but you will quickly notice that the style prop of any view in react maybe you can actually accept either an object so you don't have to do style sheet.create and make it you can write plain objects so we can write Style double curly brace and then you can write your style this is more of an optimization technique uh it's like creating a separate CSS file let's say so that you don't have to transfer expensive objects across you know react native world and Native world where you
have to style the app so we have view we have text which is just like paragraph or span Maybe and that's pretty much it nothing nothing more um any questions regarding the real Navy structure okay the good thing is that it's like it supports pretty much every CS properly uh later the very main version that is important to for Flex Gap and grid so it's really awesome now like very easy to build like very nice layouts so this is it and um what I can recommend you uh what I can recommend you to do is switch from npm to yard if you're using
the yarn just run the arm and so that we can be using VR if you want and also there is a eslint config if you want to use if you have your own feel free to use it the one that I'm going to be using is from unit spot you can also integrate it uh so that's it so everybody got this running or still not excluding the xcode installation if you're using snack yeah what to explain I want you yeah for the start I think styling uh did you place that on telegram yeah already yeah
yeah it's okay so um what I can briefly what I can briefly show you is um what I can briefly show you is this like I said we want to have um a weekend like first of all let's do actually add typescript support so in order to add typescript support to this project is actually very simple all we have to do is we just have to create a RTS you just need to create a new file this is really crazy right this way but we have to just create tsconfig.json actually empty file nothing more and just rerun this command again so we cancel we shut down the server that we
were writing previously and we started again and what happens is that if everything goes well you should see this problem saying that we detected you're trying to use typescript do you want to explore some additional dependencies yes and I will automatically configure anything for you through the config so once this finishes running you should have text group set obviously so again just create mpts config.json so I was not able to get that this price no like the typescript one which you did so you did you create empty TS config.json in the root folder oh no yeah so all you have to do is you have to create TS config.json empty file nothing inside if you are bash guy you
can just touch this file and not do anything yeah empty file rerun again it will just look for the file of the file system years conflict arches okay it is crucial like yeah yesterday I spent like three hours debugging why my yesterday oh okay yeah I spent like three hours yesterday trying to debug why my ears lead was not working just to realize I named the file eslint conflict.js instead of eslint.eslin or c.js I'm like seriously yeah so you need to be careful with the name
so like I said uh this is this is Step number uh this is Step number two actually I think and um I'm going to uh actually uh paste the link commit if he wants to check out that one but like I said if you've done all those steps you should land this after that just cancel the server that was running okay and we run it again yeah so now for the uh now for the esplan config you can skip this step I'm just I'm just
going to I'm just going to do it uh just because actually uh just just because maybe it's a wallet it will actually help you Sonic can we walk on the lightning because it's not that clear from here we can turn off those lights you have the conference t-shirt you should know this hey what's up hey why didn't you tell me there was second Meridian Hotel here
I like fighting it's not really good to know I arrive and I'm like where is this conference and it's like what kind of thing and then I remember somebody message yesterday on the channel Airport and for some reason that was very weird to me like what airport had to do with Marina next episode let's go this is going crazy so guys now now that he's here you can tell him how awesome this Workshop is so far he's just like just just checking okay so far it's good live feedback yeah
um so did you manage to get there yeah Okay cool so uh now now we're going to set up book three out which is the crucial point and this is where we're going to have like most of the polyfills set up as well like I said we'll look like it's not working so we're going to create a web 3 Alpha account and then we're going to use the API keys and and make it all happen the idea is that there's going to be login button here you press it you log into Google and then you have your wallet and then you're good to go so before we start uh all like we first all have to visit the electrical dashboard let me uh paste the link on telegram again and like I said this is the dashboard and you can all
log in with your wallets if you have that I'd say a very good opportunity to test your life to a native staff use your wallet which has a money yeah yeah I mean depends right because this is just for the management of the year like this is not the API the key that we'll be using for work for you for like admin stuff and this is actually honestly like this is the most exciting thing for me in the whole Western World which is you know is it a lot of like just a short of topic what three apps like usually there's like a lot of those D5 projects I happen to work for a while as well but when I started talking with my friends
they're like building on web3 right now I think a very common misconception is that your application has to be built and sort of like some token related Services it's not the way I'm thinking about like this whole ecosystem is that in web3 we have like like micro services for example where we can have all those different services that we can use and build our app on top and this is amazing key component of it because once once you log in with let's say Google or GitHub or Twitter you generate wallet under the hood and then you can use that wallet to build your whole infrastructure transparently um chain so let's say you created a
intermediary wallet that is derived from your Google account there is no money in it but maybe you want to allow your users do some in-app purchases then you can top it up right let's say that you want to build a chat application since you have wallet you can now use xmtp or some other web 3D centralized platforms to do it you don't have to use Firebase anymore and you have this connection between your Social account and your wallet which is this this project so it's really cool well it's not technically like a typical dap I believe this might be very handy if you like want to prototype some stuff like hello to the people that have just arrived you guys are like just watching or want
to throw it along not this one okay cool if you want to code along there is a telegram group there is GitHub there and every step is a commit so you can also check it out at the end and be like yes okay whatever whatever you want so like I said just log in uh let's log in and then we're going to create like this is going to be this pop-up or you can choose your Gmail account and um let's say account and once you get inside we will have to create a special project for our mobile app
because the API keys and just get it [Music] apparently I need to create some out of the company so this is where you should arrived is used in unison fam uh that is not it right I mean technically doesn't make that much sense because like I said once you log in with Gmail and say there is a wallet created for you actually you're gonna create it in a second but there is no money left so yeah no need nobody
let's say you were building a bank all right decentralized yeah institution where you wanted to log in with Gmail and then you can use that address as a destination for Unison exchange so you can have something like yeah I have used the three or one of my projects foreign so that should be that should be much easier I can create one API I'm gonna create one API key for you anyway like in case you don't want to go through all the process uh the only thing is that once we finish you need to tell me your IP address where it is otherwise the uh pop-up will not redirect you once you try to again
so we create project which is our Workshop demo and then uh we're going to use test net and the chains we're going to use this evm and I actually select sold on as well just because I actually I use Salah a lot but let's just check it you can also check others it doesn't really matter and that's it once you've created we go inside and then we have the client ID which is the client ID it is something that you can write down because it is where we will be uh what will be um doing this so all right
let me based into plan on the other chart just in case you want to use that one and um and yeah now it is pretty much up to you I'm going to be following this uh this guide anyway you can either follow this guide I pasted the link on the on the channel or you can check out again you can go to the project we have project that was a commit called and web3l you can
copy and paste it all and that's where you will see this whole set but if you don't want to do it if you want to do it right now you can also do it it's very easy surprisingly just like I told you it's one of those super easy things right this is helpful it's super easy and my laptop is about to die I've judging by that it's very easy because you have Xbox SDK support so there is nothing really complicated here the guys actually did a very great job by not depending on anything related to negative code so every time you go to any documentation online you guys just look for Expo managed workflow which is what you're doing right now if you were building a
royal rare native app or maybe you ejected Expo app which is something we're not covering today then we could look for the second one which is very very important right export managed workflow is what you can look up it is where you can learn about things like like how to set it up specific view of Expo which is uh very simple and we will get into it in a second so for Expo installation there are two things that you need to get installed the first one is the react native SDK of course yarn at the web history of Slash react negative SDK it's right here and then a second one is export install export web browser so you will notice that
or native dependencies you're not using npm or yarn you're using Expo command and this is because Expo has some compatible compatible players and some compatibility Keys as well so by running Expo install we always make sure that the library we are pulling in is compatible with your products conversion whatever the operation so we need those two before we actually begin configuration so you should be able to just run it actually Expo install is so good that you can run everything's through it including the uh let's say JS Library so the command here would be something like this said we start a new session here and that would be Expo install Expo web
browser as well as let's say we have this web 3.0 we have native SDK I know it's very hard to see but it is what it is we run it and it will say some style about uh just yeah installing one SDK compatible native module and one other packages again VM so it's doing two things across for us once it finishes we'll have everything we need to get started we've got to go yeah and except for one vulnerable vulnerability which is surprisingly I don't know where is that coming from but it's good I mean it's okay so
anybody like where are you with this I mean uh on stock I guess I don't know I'm just following along okay what I heard actually is that when you write like import and snap when you import a module in stack well I heard it lay out uninstall it yeah you can try but it is correct but it's it's special for resolving dependencies how's it going for you guys yeah so I'm pressuring you now just kidding like uh you executed that Expo install Expo web browser yes okay why do we need a web browser over here
yeah the login will be just you know okay I will just make a package name just package manager it is it is confused confused about browser it's an API to open up themselves basically it's like third party dependency that you are installing correct the name is no uh so all the dependencies are prefixed with Expo are the libraries that are inside SDK ah that is fine so after Expo you have like an iPhone web browser right so that could be like Expo with three or something like that so everything that has Expo in the name is an official it's part of official SDK what happens is unless you explicitly install it yes it is gone so that's why that way your
build can be if you install the uh this this mobile preview we have here um client that is rendering our application is a Expo mobile application it's called Expo growth it's Expo gold you can find it on the old Expo space go okay and installed and that application has 100 megabytes okay because it has all those modules but the one you're building right now is like 25. but as soon as you start running Expos install web browser Expo install Expo clipboard that we're gonna install anyway this will start growing in size up until you reach the 100. but you cannot install something that is not
included USD that's why many people have issues with Expo sometimes because especially in crypto world when you need to Hash something there's a lot of native modules for hashes they're not available here so it's like choosing between peace of mind and this working or having native modules but being like Oh my God why is this bill taking time yeah yeah so there is always one thing for another you need to choose wisely it's like uh Expo command not found you have to run oh sorry I haven't actually nobody so just run npx export because I've never using an expo primary digital position yeah yeah actually I I
would suggest you run it with npx I just have some of the global version that I never have time to install but we have got it this is yes okay so what's the visual creative or counter and just got your keys okay the developers environments yes
okay so like I was smart I had a pretty good knowledge but when you are like there's a lot of code foreign uh
yeah it doesn't say oh okay so now just expose install because without like npns for itself is just defaulting to start okay so now let's just expose install and those two packages so yeah this is where I was yeah yeah oh come on now but now there is no NPS oh okay okay so you have configured in such a way that you can exhibit Expo directly yeah so we have to run npx Expo install or Xbox One browser okay and then don't forget about this don't forget about the second package which is what was this first package
the web browser was the one and the second one was packages only one package we discussed I guess no no there's two okay you need to install two packages the web okay the first one is but free out slash react native SDK so it's at web free out slash or react Dash negative Dash is DK now if we go to the documentation we've got recorded Koreans there yeah so once you get that up and running once you get that installed why is this so you need reason like why do you uh why do you use yarn
I just use it so I just I just I just I just said it at the beginning so you are not confused but you can use npm as well or I don't know so whatever happened to you please okay yarn is running very fastly many when install a package the both engines which the fertilizing and installing the package are the different engines right now so npm is mostly broken that's why you face problem and you need to change every time a node version 2016 16 to 18 and 14 or something yeah India you don't have faced that problem because the tree is very clean and running in this model is very different okay if you don't want
to do both of them you can use one the bun is very early in your beta you live much faster than both of them but but this isn't that yeah yes that's clever that's much faster much clever a bike lighting a smaller oh I'm waiting for somebody to write it in Rust by the way please so when you install yarn just make sure you don't stop to put the X but if you do just make sure that everybody else knows because it's like you know
I don't know like yarn yarn when yarn first came out it was so fast yeah everybody moved on like I started using yarn that's why like when I run MTX which is from npm or just any npm command I just don't feel like I'm at home but then they did something strange they created a new young version 2.x amazing version but they kind of didn't play the rollout Super Bowl what happened is they shipped it out to the community everything was broken people were like skeptical there was a huge pushback so huge that even though they switched back to one projects for that time and kept on developing 2.x on a separate Branch a lot of people are still on 1.8 just because of that thing
that they were like so pissed never never moved on which is unfortunate because there's so many features but for example at every company that I worked including give me Squad we use the r13x and it like it is not possible to go to like 100 engineers and tell them to install the R2 like it's not gonna happen it's I I don't know it's just not gonna happen maybe plpm would be easier but it's one of those decisions once you start not gonna change so so yeah I use yarn but whatever it is you prefer um okay so once we get this up and running um we actually need to run two more commands
which are coming again from this share tomorrow pasting the exact commands you can run actually sorry you need to prefix with npx so that it's always struggling so now the reason why we need those two additional packages which are um which are Expo linking and Expo constants are because we'll get to it in a second but pretty much it's because of this code we're going to be opening a browser where we can show the Google login and then redirect back to react native app so first of all we need to know through the
Expo constants module whether we're running inside Expo client which is development mode this client we have on simulator the Expo Go app or Standalone mode which is you build your app it's Standalone is just yours based on that of course the name of the app will be different and stuff so we need to know it in order to figure out the best URL to open up your app pack again so that's why we're using linking and we create URL I don't know if you can see it but for all the cases like for a standalone case we passed a schema which is your app prefix so once you are a standalone mode maybe your prefix like the in-app URL will be my app
that's where you pass it otherwise you don't because you're not running inside like you're not running Standalone so we need those two modules and we will be pretty much copying and pasting this code uh into our application how to make this one cool so again this redirectional URL which is like uh more like uh bounded to this Expo right for every redirection we will be configuring different different setup is it yeah this is specifically for web 3 off so once you open up this login that will open in a second it has to know how to get back to your
app exactly so let's say if you are using some other library or packages then like we'll be again configuring them for that particular dependency correct yes so if you are if you will be doing any redirect URLs within Expo you will always need to have this if statement whether you're running in uh you know there's a app ownership expo here so whether you're running an expo client then you have this URL and whether you're running scandal in production you have this URL okay otherwise it may break so you need to make sure that this is always present just because it can change and when this constants will be used resolved uh redirection of the URL and I uh login that we will create oh in the login that
we can yes we will be pretty much calling web3 out in it and then login redirect to this URL and log in with Google provider so it's very simple so I guess we can get started um so uh okay okay thanks here I don't know pretty much I think I think I'll end up somewhere different place where uh what I what I was but let me actually check okay cool um
so again this one this vocal uh I'm just going to shamelessly copy here and this is pretty much what you just saw in the this description in the docs and actually maybe to make it easier for you to follow along I'm going to also share a link to this commit so you can open it up and a homepage actually you will see that I have this code planning okay so basically you created a separate component called home.exs yes and I I
recommend you do it as well because it will soon also have some other things so I guess what we can do is just Pages folder but again this is pretty much up to you whatever is the way you want to do it who got it can be pages and actually my structure is different so I'm going to school even as as the repo so it's easier for yeah this makes sense app and I create pages but again I mean to follow this one then inside we have home DSX which is the main screen and then for the home TSX so pages is like subfolder to apply yeah
it's up to you how you how you configure it I don't think I run Xbox I guess we can go it in the similar fashion so that it's easy to follow yeah I'm I will be trying to follow pretty much what I did anyway but there might be little differences in that case let's let's keep an eye on them so um TSX instead of jsx because we already activated the typescript yeah so that is easy uh okay I got this one the only I can also I'm going to also rename this PS so pretty much what we need to do is we
create this come to ESX and again I think it's just easiest for you to copy the whole file from this comedy share on telegram yeah no really need to write it down and say a basic component just a whole world stuff then we have app DSX so enough TSX all we have to do is we have to um pretty much render this component now so let's just get rid of everything here so it's empty and then we write home and beautiful vs code that automatically imported this stuff here but in case it doesn't work for you this way you may
need to import it manually from this location so you have home and I don't know if this is going to work but if it's going to work yeah I got two of them right so that's pretty much very impressive I know but it's very close to like seeing it all in action you will see this little warning here as well uh which is me it was just saying that there's a scheme missing which is what I told you we need to set a scheme for our project and scheme can be configured here on app.take Json now if you're like feeling confused where we are right now just go to this GitHub commit and one of the files has scheme added so just
put your skin here and be like uh my workshop or wherever you want and this is validated so in case you make a typo there will be like some some information back so once you change this and this is very important anytime there is any change related to your related to your config Ura you need to start Expo again otherwise those changes will become so I guess the scheme is for the URL linking yeah yeah the scheme is for the LinkedIn now it's working I see the hello and
that's it I don't see them the beautiful thing here is that I mean we just need to make policymals and then we are done so it's like very close yeah so I was basically making yeah did you replace did you create the home page yes I did and then replaced the code as well okay it's press location say this one yeah I did okay and in that case you know everything is correct even here yeah that looks good try and refreshing that simulator go to
the simulator here and make it just like double error we're going to be here so sometimes Little Things so uh how is that yeah tabular like water test I just refreshes and sometimes you know uh for usually we have made it fast Refreshers ever change but sometimes it doesn't and in those cases just read all the closer actually um when I was building for example Solana application or react native my app was crushing it we lost like half an
hour and CPU was like 500 so but sometimes you need to close it as well it's not like it's been an awesome world I think they actually have a memory leader but we have to do that anyway it's like sometimes it's got stuck and you know we're going to be able to remember with Expo not but traditionally yes yeah solution yeah
yeah well you know what I can what can I say when you know it's like I'm personally maybe to blame as well because I was working on those I always do it for like building things but yeah you know when you look at we have native architecture around the way it's built it's actually so beautiful that sometimes you feel like you know um like like many years ago when I was working with Mexico pipeline was like Supply I started completely successfully because some of those Solutions are very popular so it is likely that there might be some well please uh especially now that there's an
architecture and like this is beautiful about Expo that this new architecture is very just like that and you don't have to worry about it but if you're working with a native somebody who posted on Twitter recently like the migration guide for community libraries and like all those changes pretty scary started off with like exposed cell battery right so it's sort of go with the radiation of the three amazing like three space I think everybody is using Expo even even at Uni Squad uh the mobile wallet started as an Explorer it's objective now because like I said you need to sign stuff and not every signing library is part of this client because this client
is serving everybody yeah so they're like we don't have to include all the crypto dependencies and you know that's that's kind of a problem I mean it's good to know that you can eventually write your own like hashing functions but the fact that you cannot you know generate pgpps with react native without any native module and the native module itself is questionably good yeah then like will you be used we're going to be actually using ether uh under the hood anyway so that's why I said it's going to be the same yeah because for the creation and like uh for the onboarding of the wallet like which one you are using currently foreign specifically we have web3 react which is
like block me it's actually the library that I was like working for last two months the three react what is that yeah it's uh the name is awesome right it's like it's like I don't know how they claimed his name but the name is like awesome uh it's like it's like just a collection of books for working with react later than ethers so when you have like a beauty Squad we have different kind of Commerce right you can connect with metamask you can pick up your fully connect so we wanted to have like an abstraction where you can you know switch back and forth so okay somebody not me of course created what to reacts four years ago so when people ask us like why don't you use Rodney I'm like oh we didn't even exist but I'm dead you know
was created three years later so reactive and this supports react native as well agnostic sorry oh but we're planning to kind of slowly Sunset it so just just I guess why yeah yeah because we're we're like this Library itself is kind of confusing I mean it's it's very simple for just connection management and that's it but clients these days like developers these days they want like more functionality for like working with contracts and stuff and we are not planning to extend that functionality because we don't need it but everybody needs it so you know we're like as a company we are you know we are not a Open Source Products company so we
don't have like resources to maintain this library to a degree that everybody will be happy there are some issues and we don't want to do those issues to be bloggers so you know we would probably consider migrating in a way at this point but you know migrating like when I joined uniscover I looked at the code base I was like yeah let's migrate to next.js that's migrate this and that because it's just a simple app right it's just exchange right it's like a widget that's it once you get into the code you're like maybe we should not migrate so we've got to react it's like we know it's not the best right now but the migration is going to be more expensive to do than dealing with whatever it is right now so
okay so it's like with three four react to that one right yeah yeah I mean it doesn't it it has nothing to do with what switch I guess yeah it's just the name using ethers under the hood and that's it so it's the name may be confusing depending on how you interpret it like I joined I joined you know web free space not so long ago so for me web3 doesn't really speak forward 3js because I haven't ever used that library and it's now not that problem just like for you it doesn't really matter what the real related pain points were three years ago and I know them all so every time I'm getting confused about it whoever Jones right now is like oh my God this Expo is beautiful
you know there were times where people were questioning whether it was interesting like okay like dramas have you ever seen using electric reaction yeah yeah I mean the um yeah Universal previous we're talking about words we react not web3 JS web3 react like a name that's the library you're using for just connections yeah so under the whole like it uses the [Music]
okay what we are doing is we're taking all those providers whether it's with three ethers or whatever we package them in an abstraction that has similarly unified API but you know honestly the data is like a wrapper on top of the three JS then like under the hood it's again same with three days you are using correct that can be like I did not go that deeper actually but there is a new one anyway uh VM right VMware yeah I don't know how to say that but um anyway uh if you are interested in this topic I recommend you watch my talk tomorrow which is precisely about web3 react uh wallet connect okay that's that's actually what I have
called diagrams explaining the difference um so also got my glutes and my video yeah but yeah the point is that um we could use web 3x here as well but I wouldn't use it for the workshop because as soon as we start it would be like wanting to write contracts for example ride read from them and what happens is you know it is just easier with what like personally I'm not a huge fan because I prefer being close to the metal so I like is there as a little stuff apis or types but it's easier just in general to work with like use read contract code or something from what means this is very easy so not everybody likes it that way
depends on your purpose but I think generally speaking for like workshops and just getting started I think it's much easier though yeah perfect so um once we have it running this is what do we have um we will be adding a simple um simple login finally so um before we do that we need to explore some more packages and that probably is these are the last two we have to install now these are actually the following things so as soon as we start using a student you can see as we start using um as soon as we start using web3 off we will have some errors because there are like I said the environment is different
so we are missing different uh different things so what we have to install is two libraries we have to run again npx Expo install Expo Dash crypto and buffer the second one is without license which has those two packages Expo Dash crypto and buffer and this is a part of another Common comparator Please can you close to the internet I'll post it yeah what
so this is going to composer control motor so this is this is for this is for polyfills so first of all we need a buffer buffer is usually available in a global object in a browser so a lot of those web libraries like like three out they use buffer for like that's a really big things okay and the Expo crypto is you know a uh crypto that is also available in the global namespace and that's where you have methods like get random bytes and stuff like that so this is used by those libraries to generate some random stuff so pretty much and this will become much cleaner again
um if you want to copy and paste it this is another from it in the in the in the app what we have to do is pretty much let's create a uh inside the app let's create a new file we can call this file whatever we want but I I usually do it like how it spells TS and then we have this integrate DSS right it doesn't have to be when you don't deal with react code so as long as it's just a simple uh okay JS sorry simple code then it doesn't really have to be here so what we are doing here is a very simple actually I can finally larger
which is um we're importing that explicitly and we are assigning that in a global object so guys the first thing and the second one is crypto and as you can see I'm actually ignoring a TS error which is saying that the crypto from Expo crypto is not compatible with the type for Global dust proof which is correct because like I say in this comment the crypto policy bill doesn't contain sub 2 with 3 with code API which is a product so if you start running something like xmpt you will have one time crash cannot run as crypto.spruit or something there is no
there is no policy for that one not at I not that I know so I was actually chatting with xmppt last week about it and they said they were planning to rewrite they really have native SDK for that rely on this so then you can use without a joke so once we have this uh it is it is a good idea to actually import this file somewhere so we can have you can have like some actual new aspect so I guess uh we can do it right here so this will just make it this will just
make it work now that we have a let's say uh let's say a moment to configure the web 3 out so what we can do is we can go to the pages the home page and so here between resolved for data URL and the export default some weird issues of my setup join me phrase but so what we can do now is we can create this web3 out our client which is the one we're going to be using for login and so to build it it's very simple we could do what we all for some reason the important so you can surely you're important then we pass it through web browser
see this is called I think okay okay so we need to import the web browser family browser package that we just installed before
you get it we possibly froze our limit here because that's what the API requires but then we have the unique firearms and those unit Firearms are client ID which is the client ID created before and maybe have it somewhere if that is taken from you can just take it from the from the telegram group yeah then we have Network network is going to be one of open logging networks Testament this is jazz internal constant by library to all that we are creating accounts and we testing it so whatever we create right now is not going to interfere with the ones that we were
using in production and then we have the redirect URL which is right here and that's uh that's pretty much it so once we have it why is controllers to establish okay so then very simple stuff actually you know it's fine I don't even have to write it it's already suggested thing how can you explain that crazy thank you um so I'm actually going to do it this way
okay we have we're going to your state to hold the information about you know login or logout state actually you know what I used to do and to close the vso because for some reason it's still different I don't even know what's going on but the blue is hot okay so then we're going to write the async Handler which is um going to be the function that we will be calling to register we have the right catch so usually a good practice here is to just do something right allergy error from the time being that you may want to have something more of a signal is located into the
internet and then again you have the state and state is going to be coming from the local function that I said we were going to call anyway and for that function we have actually two parameters the the first one is the login provider and I think that is coming from here to Google and then um and then the second parameter is actually I don't really know why actively I already know in both places but it's closer
because it's it's too much work so meanwhile because this is pretty much this is pretty much the very the very last function that we need to login I I kind of guess that you maybe get lost somewhere like I said on telegram the last GitHub comment is the colleague that has all those functions okay let's start with that now so what you can do is you can open up this commit and just um there you will see all those functions so you can copy them into your code and please give me one okay it's actually faster than I thought but I still don't
know why that that is maybe I should not have Photoshop open your eyes global.com yeah you got that already
I get that alert and like okay so the code is coming down no like I use it even after adding that late just like uh I'm facing that is including each other can you check it's gonna be close all the things too I'm hoping that my laptop will start functioning yes so what's the what's the euro this is coming from um
or something disable this question is this one is coming from vs this is what I was coming from Webster so I guess you don't need these important ideas trouble getting the profit yeah so I'm getting an error when I click login it's in property buffer it doesn't exist yeah it's really important to just file in the uh who identity yeah very well I got I got there I got through a couple of cars just make sure yeah it's yeah uh you don't really yeah yeah even that uh link this required for the storm password so when I just haven't commented
is this ah yeah zero yeah yeah did you need your pitch up yeah yeah try to try to make it as a brand new or as possible while into Indian song cool um so you missed that part um no it's okay
um so what I said uh to do is I'm using this is uh would say I need that opportunity to check my life without the problem is usually you can actually leave those rules online movies such as that cry right here just as simple refills because usually the people out of love while it's connected right now is not working really negative so hopefully that's one thing that I chose something that was working so you know not if you were building web up or if you were doing the right things next time finally out of this table we will do what connected to have the remote actually if you if we manage to get
there you can also drop one of the latest comments I have in the contract call for like just checking out actually checking balance or if I do as with actually the chicken cause of like some years or years when you're talking about okay what was his name but you can use the same sorry I don't know seriously it's for that Horizon so we can have like some draw some places like just privilege transfers about us just because 99 of people they don't use it this way unfortunately yeah most people use web apps and for mobile
they're really important building wallets is easy using them and mobile numbers so hopefully like it is going to become changing like a couple of three dollars in Cycles like that yes this one is called the app Jason yeah it's either you do it in line or do
you use consonants exactly yeah yeah so you need to do the app.json and we need to just yeah I don't know um
yeah that's the reason why not running uh laptop okay so I don't have X code set up and I just uninstalled my employee in my studio and they told you everything so this might happen I may just forgot about like something but can you run locally exposed car to the server okay that's like if you want to get rid of it because I think MTX Expo staff yeah I think so now you need FPS try running and tell me who gets the QR
codes because I just forgot about nothing actually that's because you know what I said I I think I forgot about it only around the edge when kids that's about to start just a minute yeah but you know the thing is you don't need it I don't know why I didn't think about it you could have just installed the Expo client on your iPhone 7 QR codes yeah we can do that as if he doesn't really need an expert as long as you're not running on your iPhone yeah you just go to the App Store install the Expo go client it's got the QR code yes and you're gonna build it without expert
she's but I think this should be like this should be on this idea so that we can remove the yeah we need to login from both sides here and in the CLI and then it will show up automatically when you run it right because no no
yeah the basketball game it works the only thing that doesn't work right now is uh like what was that nice over here and well if it's amazing yeah but like a library almost I don't think yeah so there's no way yeah the only way to collect my husky mobile is just like connecting my unless yeah because like when you're building a wallet for example you might want to generate some keys
and protein bath salts might not be correct enough but this is something that you need to see here as you go for the starter should be fine um for this one you only have like typically you only have three types of kilometers the first one is lower connect you have we also have metamask provider which in reality is injected provider which means that it's ejected by the extension wallet included we're going to go object working on so it's like coinbase trustable and browser extension all those really gorgeous they inject video by ethereum not objective and Wilson connect which is for every wallet that cannot engine so your mobile wallet cannot exactly the browser so they're losing your phone just like mobile when you're trying to collect
with browser extension there's also one way for the use Google operate so they're using both of them I mean you typically either declare Third Law which is the one we're going to be using today it's called Json RPC provider and it's the one that we're gonna pass this wallet and create it and this is the one I use remember roller coast so this one working perfectly easy it's like working here in general is yeah I guess I was kind of Lucky but we did have something we did have some uh like so we were like working on the video for the last yeah month and like we were
working together like some things like you know their their Syrian provider food nuts inside of the 18 19 1193 spec so you don't have to be like hey you sometimes it's interesting so yeah so that's why what we can do is a lot of volatile feature in my dream and okay yeah so what you can do is reacting to this if you can again like a platform code which is the movie you can access code separate gym but yeah well that's a lot of work I mean yeah but yeah but actually it's one of the workarounds I've seen people doing the run recording a web view on the side and they cross community yeah
but also you know the problem like V2 and V1 not working is that they started with a browser first time so they use window as well and they open you know windows are open and they open the spot so you have a look and this is not working with the FPS they started an obstruction that was not yet that's like this they do have an example what they're doing well connected language so I was like okay for this Workshop this isn't over here if I tell you guys you have to write QR code generator you have to render all the icons just so that I remember this connection but like I said they're working to make a decision I like it so like next month
hopefully normally we should be as easy as just like me or you know so at least so for time being adaptive project like so did that on my mobile thing succeeded the 8644 but I'm not feeling uh in other airlines it's funny you cannot find MPX you know nah I think it's complaining of this is maybe not a
conversation so it's really good did it move before the year round and be Explorer yeah I was using snap what did I think what if you do Yahoo I'm using yarn okay so I think we are a stockless I think it's kind of ways to show you the you know and maybe I mean see this is this is a unique like investigators just get the whole packages of this project because I think it's missing some information uh
so if there is somebody using the scene now I can I can also learn something from you [Music] hopefully this works this is like straight straight check out the darker or you are just uh quietly okay send me a distance
traveled just try these babies when you uh yeah yeah uh did you change the url yeah so did you make it made it or not okay then just uh I guess just whatever we can just continue and then 15 years
old and pretty soon times so the next thing actually I'm just going to take my app to do because so we need to give a couple more things but the first thing is that we need to rewrite this from New State to something that really not go away every time so now as soon as you refresh the information about you being happy to do this again I'm really interesting actually
you can actually keep reloading your app until something or foreign library and then as you can see pretty much all we have to do is create something I don't know what is the same word but I think you will ask again so whilst we once we have the uh so
now that the login goes once you log in after reloading the app that information is done so you need to reload so we need to login every time we see that which is how do you want so we need to persist it to that information and to persist that information we need in full I do I mean you can do it only but it's not worth it you can do it with two very nice libraries the first one is Joe Kai which is a library for State Management and the second one is just free I believe it's supposedly oh yeah Amazing Stories uses sharp questions yes so we we're using this plus job type yeah jota uh I'll send you the comment so we can check it out okay and I'm sending it on
the I'm sending it on devotion so the thing is that Joe Tai is very similar to your state so it's very easy to do it cool and the code that I have created for the authentication is I'm using something called atom of storage so you can check it out it's it's gonna make process uh it's gonna be able to make it make way more sense so the thing is we use this Atomic storage and we have async storage there so that every time you mutate your atom let's say you set new user it will automatically represent so afterward tutorial which one is that it's not there in the world no no it's at the very top the first part the very first time I
booked it good so we have the X call get rid of that sudo it will chase you I'll get rid of the night as soon as you start using Studio yes it's easier getting rid of MacBook and now you don't know what she's saying so that's all they do so they store the whole file yeah yeah so Json basically yeah yeah that makes sense so you need a key and that key like comes from a various uh you can you can you can have the key persistent somewhere yes that's still fine you can access the file the entire file inside contents are completely yes yes it's a double mechanism yeah yeah
that's the same so that uh send stuff to you okay yeah yeah good luck man good luck um is that tomorrow that was like we have somebody tired who like started fundamentally I'm a board developer so I will never get into that area right I'll see like results more attention yeah see I I'm with you on this so like uh how my way of approaches like I built a
strong project so that we see comes to make that yeah yeah that's what I do you don't want to go to them yeah the problem the problem is that market is gone like that's what this is the same with cars now if if you want to buy a calorie watch you need to you know there's like they're they're sold out these guys so they they're not even sometimes picking up their phones the same with the pieces like it's not the market for like us they're like calling us like hey please guys please build something it's like the project which I worked or entirely it's a bootstrap about it so we built a strong fundamentals and by which like any good Approach at least ages diseases but I think I got it yeah
we should definitely catch up sorry for like not responding but this preparations got me like so having you staying in the gym like forever really yeah yeah pretty close yeah six months six weeks oh okay I wish I came earlier though no but I'm not going anywhere that's good it's a good thing to say before Ramadan I find Europe is still cheaper than Dubai sometimes and Poland is more expensive I can go I can I can genuinely tell you yeah it's more expensive or close to seven to eight countries in Europe like most of them I find it cheaper only so Italy uh I mean uh specifically Rome Barcelona Paris and like what kind of expenses
I mean stay accommodation and then like flight expenses I don't know like you know like I think that Europe is specifically expensive Chicago when it comes to like treatment places and Dubai is opening places so it's totally average you know let's say it was pretty in Italy we know let's say we go we don't wear to protofino which is like this beautiful Italian place yes you know yeah I wasn't I was just curious what's it all about you know coffee 20 Euro okay for for espresso okay