 My name is Asif Moomin and we are from N-Trip Technology and these are my colleagues Kiran, Asmita, Anuj. So, what is N-Trip? N-Trip is an enterprise mobility. Our core theme is to help enterprises solving their workforce productivity problems. So, the app we are going to demo is we are developing this for a doorstep called NGO called Doorstep. So, what is this NGO does? It kind of helps the children of the migration worker for education. So, on a particular construction site, the workers where they are kind of nomad people and they kind of travel across the country depending on where the construction is going on. So, nobody takes care of their education. So, this NGO's main image to like on like a long term as a short term is like how do you manage the education of this children? So, the government kind of gives free education but they struggle in terms of making sure that the attendance of the student is adequate and they also want to record. Second is the security of the students and on a long term basis what they want to do is they want to track the student and make sure that there is a continuity. Because once the students travel to across an unit there is like there is no track of it. How do you track the student? Make sure that if he is in fixed standard like he gets continuity in that student. So, that's what we are trying to help those NGO. So, what we are doing is like basically we have a mobile platform which help enterprises to develop this mobile app and we have used this mobile platform. So, what is this app does? It kind of solves both the problem and the existing app like so it helps to take attendance of a student. So, what we are trying to do is using QR code the attendance would be taken. So, the process is that like so there is a bus which travel across, pick up the student, take to the school and then drop back to the site again. So, this student would be given an iCard which will have a QR code and that is the existing functionality. So, I can show that demo how that works. So, this is the app. This is developed. You can log in and see a pickup. So, you have to select the route. There can be multiple routes right now. We have only configured one route. So, what you will see is the list of students. So, it's a simple process. What you can do is like I will just simulate. So, we just click on take attendance and there is a QR code. So, which would be in the back of the student ID card. So, I will just simulate how this will work. So, now the attendance is taken. So, if you go back there. So, the student for which the attendance is taken is kind of take mark. So, that's one. But secondly, what will happen in the real time basis, the data is reflected on the back end. So, I can show you that. So, that was the student for which we have taken the attendance. So, this was the existing functionality and what we are going to enhance. Like we enhance this application and what we added is kind of three functionality. First is the tracking of this device. In terms of we want to track the bus where it is currently. And second is what route the bus has taken. That's one. Second is the offline support. So, as in India like you won't find network connectivity like all the places. So, what the app would do is if the network is not there, it will store the data in the offline cache. And whenever the network connectivity is there, it will sync the data with the server. And third is the localization support. Since many of those operators doesn't know English. Like we want to give that app in Marathi. So, that's what we are planned for. And I can show you. So, basically what we have done is for the first, the location tracking. There's an Android service kind of which is built here which kind of constantly send the location to the server. So, we have some algorithm built in wherein we have kind of optimized the time like the frequency. So, that the device power is kind of taken care of. Okay. And so, I can show the demo of that. No, it's right to enter. So, you can see all the buses on the map, the real-time location in terms of where it was and what is the time it was seen. And you can track a route of a particular bus. You can click on track route. So, this is the if you see the red that is the route that the bus has taken. So, this way from the head office they can track where are the buses and if the buses are deviated from the standard. So, that is the first feature. So, the way it's done is that on the platform we have certain convention like if you write a particular resource in a certain way it can be treated as a location. Okay. So, second feature what you're done is a kind of localization which is so if you have seen the app was in two languages which is in the English and Marathi. So, if I click on Marathi. So, go back to the login. So, again you can see in Marathi now all the pick up problems. Okay. So, that is the second feature and third feature is kind of like I cannot simulate that now but which is the localization. What it does is simply it detects the network connectivity and put the data in the offline cache. Okay. And there we have done some kind of innovation. So, what we do is basically the way network connectivity in India like there is no guarantee that first thing the data would be reached to the server that's one. Second thing is that even if the data is reached to server and return back in the data base the response can lost within the network connectivity. So, what we do is we consider every transaction and we send a transaction ID. So, that way it's kind of identity ported. So, even if there are for the same transaction ID the multiple rights server kind of ignores that. So, you can show the right now there's no network. So, yeah. So, if you see there are no network. The bus route is there. Yeah. So, it picks up offline from offline storage list of students. Yeah. You can record the attendance and whenever even manually you can record. Yeah. So, that feature is that. So, basically you can also manually record that and that was the existing feature itself. I think that's it really anything you want to add or questions. So, what are the stacks that you use? Okay. So, the stack is on the mobile side it's basically the packaging with phone gap but it's mainly the JavaScript CSS HTML5. Yeah. That's the standard that we use. And we have like the platform as. So, we have JavaScript libraries that we use for you know APIs getting and writing data. So, what we have added to this is the offline support today that you see. The entire mobile backend as a service is built on Java. And you know we've recently built not today but what you see is the management console that we have. That's on Ruby on this platform. Yeah. That's on Ruby on this. We use postgres and MongoDB as a database. So, when you say postgres and MongoDB do you say post just for storing the location data or? No, not really. So, location data is also stored in MongoDB because MongoDB like at least for our use case the MongoDB whatever location thing provided is sufficient. So, postgres is essentially used as a metadata to define all the metadata to define access control. So, you can have role-based access or site-based access although this is defined in postgres and all the data writing happens to MongoDB. So, we take advantage of the fast read and write. So, we are kind of mix of both relational and non-relational. So, try to get advantage of both. That's essentially what we do. Yeah. So, what the other thing we do a little bit uniquely in the platform is so we encrypt directly from the mobile right up to Tomcat. Instead of only going over HTTPS we encrypt right up to the application and we can even go right up to the database if needed. That's one more thing. The other thing we do is we have a full-fledged reporting engine based on MongoDB which even you can fire SQL type queries. You can interpret SQL type queries to give you results. So, if you know SQL and you are new to MongoDB you could take this route and get it. So, there are multiple things. One is like SQL like queries for MongoDB as well as the kind of DSL which provides a nice interface to... It's kind of similar to what MongoDB aggregations framework provides but it's nice DSL format that we have developed probably sometime back when that aggregation one was in a pre-match survey. How do you send the location data? So, start ID then after 10 minutes or after a kilometer, private or how do you... So, it is actually a little bit of a tricky thing that we do. If you set it to a timer based say every 3-4 minutes then you're going to drain the battery. There is another feature in most phones in Android and this in which it can detect the change in location. Say every N meters say N could be 100, 200 whatever and it will tell you that my location and change. Again, there are multiple factors that if you use a network provided or a GPS provided. If you use both you're again draining the battery. So, you have to decide how much accuracy you want based on that you choose one or you could choose both. Secondly, once the location change say you define it for 100 meters. You can also say that 100 meters at a frequency of N minutes. So, it will check automatically at a frequency of N minutes and if the change is more than 100 meters it will let you know. So, given the experimenting that we've done what we found is that if you want to at a kind of macro level you can get away with testing or checking every 20 minutes. And this we have actually created a configuration on the server. So, using our back end you just define what is the frequency and what is the distance and then you can change it at runtime as well. So that the workers location updates can be got at whatever frequency you want. So, right now it's 20 minutes and 20 minutes. So, whatever in the lab we are testing 20 minutes but you may find on the field depending on the device capabilities the battery may be draining sooner. So, you can change this configuration from the server itself. And the other feature that we have is every right request that goes also sends a location coordinates. So, you know where the data has been captured. So, this is like two independent things. So, you can kind of cross verify you need our location service tracking can be separate feature as well. So, that's also something you need that we do. So, you also mentioned like you can do an encryption tell the Tomcat level. How does it different from running a HTTPS? So, HTTPS typically will go up to only your front. So, in a typical horizontal scalable model you will have a load balancer and then you have application servers, right? So, when you have a load balancer you will end up HTTPS at the front of the Apache. And then after that it's going to be a normal this thing. So, our encryption goes directly to the app level. Especially in a multi-tenant scenario if you want people to be more secure. You can have one system for one particular customer itself, right? One instance for example. While it's still using the same load balancer the customer gets to see that the data is encrypted light up to their instance. Want to have two separate data source for keys? You could have that as well. So, since we are using MongoDB you could set up sharding according to whatever keys you want. So, if you could define a key set based on customer and something else. So, it will put it automatically in a customer specific shard. In most cases in what we have seen in India specifically we are targeting small and medium businesses. For them cost is of prime importance then you know saying that my data exists along with some other customer. But it's still a multi-tenant system. So, we just have to simply explain how we make it multi-tenant and they are okay with that. That's the feedback that we have got from this. But if there are customers that say that you know we want our data storage to be separate. It's just a configuration change for us. We obviously will charge them slightly more because of the storage instance that we use.