Download - Mobile software desisgn final presentation
Sumit Mendiratta
Mobile Software Design -GoLo
Feeling left out? or missing your people
in a new city you moved to?
Talk to them Make Friends Sell Stuff
Connecting billions of people living abroad find people from their native country or city
How does it work?
1 2 3
The Stack
Node JS
Express JS
MongoDB
OAuth LayerAndroid App
The Architecture
Android UI
Activity (Handler)
Android Service( Async Task)
HTTP (JSON Based Request)
Express Server
Route Layer
Service Layer
DB Layer
HTTP (JSON Based Response)
The Frontend - Andriod App
Android UI Activity (Handler) Activity Intent
Material Design
Android Service( Async Task)
SMS Manager
GMaps ApiJSON based HTTP Request
The Backend - Node JSJSON based HTTP Request
Modulus
Express Server
-Dev
-Prod
JSON driven configuration service
Config Layer
/login
/users
/friends
/messages
/offers
. . .
Routing Layer
Auth
Messages
Offers
Users
...
DB Service Layer
DB Helper
MongoDBClient
DB Helper LayerJSON based HTTP Response
Appium Testing - Testdroid.
@MobileTest(device = "android:5.1", additionalCapabilities = { "appiumVersion:1.4.16", "deviceType:phone", "deviceName:Android Emulator", "platformVersion:5.1", "platformName:Android", "locale:GB", "language:en" })@Test(singleThreaded = true)public class GoloOffer extends BaseTest { @BeforeClass(alwaysRun = true) public void initialize(ITestContext iTestContext) throws InterruptedException{ printMessage("Running Golo Offer"); } @Test(groups = {"GOLO_OFFER"},priority=1) public void viewOffer() throws Exception{ try{ try{ this.login("[email protected]","en"); WebDriverWaitUtils.waitUntilElementIsVisible(homePage.listOffersButton().getLocator()); }catch(Exception | Error ex ){ throw new SkipException("Login Failed",ex); } TestSteps.record(Priority.Major, "On Home Page"); try{ TestSteps.record(Priority.Major, "Navigating to Offer Page"); homePage.clickSendMoneyButton(); }catch(Exception ex){ throw new SkipException("Offer button not found",ex); } WebDriverWaitUtils.waitUntilElementIsVisible(offerPage.getListItem().getLocator()); sendMoneyIntroPage.clickFirstListButton() WebDriverWaitUtils.waitUntilElementIsVisible(offerDetailPage.getOfferNameTextField().getLocator()); TestSteps.record(Priority.Critical, "On Offer Page"); String offerName = offerDetailPage.getOfferNameTextField().value(); String offerPrice = offerDetailPage.getOfferPriceTextField().value(); SeLionAsserts.assertNotEquals(offerName.length,0); //Testing name is not empty SeLionAsserts.assertGreaterThan(offerPrice, 0); // Testing that price of offer should be grater than 0 offerDetailPage.clickCancelButton(); // Lot more flows to come here... } catch(Exception ex){ ex.printStackTrace(); mobileExceptions.recordAfterFailureException(null, ex,"View Offer Flow Failed",null,interestedUrls); } } }
Connecting Your People
Go LoGo Local