Pređi na sadržaj
Projekat pod NDA

EasyCab: razvoj aplikacije za naručivanje prevoza po uzoru na Uber

Rezerviši, vozi se, plati

Naručivanje prevoza uz mape uživo i plaćanje u aplikaciji.

Ekrani aplikacije EasyCab: Mobilna aplikacija za naručivanje prevoza

Ukratko

EasyCab je aplikacija za naručivanje prevoza koju smo napravili za startap pod NDA ugovorom. Obuhvata prijavu sa korisničkim ulogama, Google mapu uživo, pretragu i izbor vožnje, detaljnu potvrdu vožnje, Stripe plaćanja i istoriju vožnji. Radi na React Native-u i PostgreSQL-u, sa arhitekturom osmišljenom tako da se nove funkcije uklapaju u isti tok rezervacije.

Industrija
Prevoz i mobilnost
Klijent
Startap za naručivanje prevoza (NDA)
Platforme
iOS, Android
Tim
7 specijalista
Isporučeno
Višeplatformski razvoj, Razvoj MVP-a, UX/UI dizajn, QA, Podrška
Tehnologije
React Native, PostgreSQL, Google Maps, TypeScript, Tailwind CSS

Zadatak: MVP za naručivanje prevoza koji može da raste

EasyCab je napravljen za startap za naručivanje prevoza pod NDA ugovorom. Klijentu je bio potreban funkcionalan proizvod za lansiranje: putnici se registruju, pronalaze vožnju u blizini, potvrđuju je i plaćaju, sve u jednoj aplikaciji - bez pokušaja da se Uber napravi ispočetka već prvog dana.

Ograničenje koje je oblikovalo sve bio je rast. MVP koji radi za prvih sto vožnji, a mora da se prepiše za sledećih deset hiljada, nije jeftin MVP. Arhitektura je morala da ostane dovoljno jednostavna da se isporuči i dovoljno strukturirana da se proširuje.

Ekrani aplikacije za naručivanje prevoza EasyCab: uvodni ekran, ruta uživo na mapi, potvrda vožnje sa ocenom vozača i cenom, i Stripe ekran za plaćanje
Uvodni ekran, ruta uživo, potvrda vožnje i plaćanje u aplikaciji.

Šta aplikacija radi

  • Uvodni ekrani i bezbedna prijava imejlom ili Google nalogom.
  • Pristup zasnovan na ulogama, tako da svaka vrsta korisnika vidi samo ekrane i podatke koji su za nju relevantni.
  • Google mapa u realnom vremenu, centrirana na lokaciju korisnika.
  • Pretraga i izbor vožnje na osnovu onoga što je zaista u blizini.
  • Detaljna potvrda vožnje: vozač i ocena, cena, vreme preuzimanja, broj sedišta, mesto polaska i odredište.
  • Plaćanje u aplikaciji preko Stripe-a i istorija prethodnih vožnji.

Kako napraviti aplikaciju poput Ubera: ključni delovi

Svaka aplikacija za naručivanje prevoza sastoji se od istih nekoliko delova. Važnije je da svaki od njih bude dobro urađen nego koliko funkcija ga okružuje.

DeoŠta radiKako ga EasyCab rešava
Identitet i ulogeRazdvaja putnike od drugih vrsta korisnikaPrijava imejlom i Google nalogom, uz uloge koje se proveravaju na serveru, a ne samo sakrivaju u interfejsu
Mapa uživoPrikazuje položaje i rute dok se menjajuGoogle Maps sa lokacijom korisnika i iscrtanom rutom od polaska do odredišta
Životni ciklus vožnjePrati vožnju od zahteva do završetkaJedan zapis o vožnji sa jasnim promenama statusa, sačuvan u PostgreSQL-u
PlaćanjaBezbedno naplaćuje putnikuStripe ekran za plaćanje, pa podaci o kartici nikada ne dolaze do servera aplikacije
IstorijaOmogućava korisnicima pregled prethodnih vožnjiIstorija vožnji čita se iz istih zapisa o vožnjama

Mapa uvek ažurna

Naručivanje prevoza zavisi od prikaza položaja koji su tačni baš sada. Uz to dolaze dva problema. Prvi su performanse: ponovno iscrtavanje cele mape pri svakoj promeni položaja čini je trzavom, pa se markeri umesto toga pomeraju i animiraju preko stabilne mape. Drugi je baterija: ažuriranja lokacije ograničena su na razuman interval umesto da se šalju neprekidno.

Dozvole za lokaciju su poseban izazov. iOS i Android traže lokaciju na različite načine, a obe prodavnice očekuju jasno objašnjenje zašto je aplikaciji potrebna. Pre svakog zahteva za dozvolu prikazuje se razlog na jednostavnom jeziku, što pomaže i korisnicima i pregledu aplikacije.

Zašto PostgreSQL za podatke o vožnjama

Vožnje, korisnici i plaćanja su usko povezani i moraju ostati usklađeni: vožnja ne može biti označena kao plaćena ako plaćanje nije uspelo, a otkazana vožnja ne bi trebalo da se ni u čijoj istoriji pojavi kao završena. Relaciona baza podataka sa transakcijama prirodno pruža te garancije, zbog čega se podaci o vožnjama i plaćanjima čuvaju u PostgreSQL-u, a ne u bazi dokumenata.

Plaćanja preko Stripe-a

Plaćanje se dešava tek kada ekran za potvrdu vožnje prikaže sve što putnik treba da zna - vozača, ocenu, cenu, vreme preuzimanja i rutu. Stripe-ov nativni ekran za plaćanje zatim obrađuje unos kartice, uključujući skeniranje kartice i brže opcije plaćanja kao što su Link i Cash App Pay, pa osetljive podatke nikada ne obrađuje bekend aplikacije.

Ako planirate budžet za ovakav projekat, počnite od teksta koliko košta izrada mobilne aplikacije.

Dizajnerske odluke

  • Rezervacija ima što manje koraka: izaberite odredište, izaberite vožnju, potvrdite, platite.
  • Ekran za potvrdu prikazuje sve pre nego što se novac pomeri, što je važno za brend koji putnici ranije nisu koristili.
  • Fotografija i ocena vozača prikazuju se odmah, jer je poverenje prvo pitanje koje novi putnik ima.
  • Raspored ekrana je responzivan na malim i velikim telefonima.

Arhitektura napravljena za proširivanje

Tok rezervacije, od potvrde vožnje preko plaćanja do istorije vožnji, radi na zajedničkom, višekratno upotrebljivom kodu, a ne na logici ekran po ekran. Funkcije koje proizvodi za naručivanje prevoza obično dodaju sledeće - zakazane vožnje, promocije, čet u aplikaciji - uklapaju se u isti zapis o vožnji i tok plaćanja umesto da ih dupliraju.

Šta bismo uradili drugačije

Sloj za praćenje lokacije u realnom vremenu projektovali bismo od prvog dana umesto da ga dodajemo kako proizvod raste, i ranije bismo uveli proveru promena statusa vožnje na serveru. Većina graničnih slučajeva kod naručivanja prevoza nastaje kada dve strane menjaju istu vožnju u istom trenutku.

Želite brzo da lansirate marketplejs ili proizvod za mobilnost? Pogledajte naš MVP za 30 dana.

Česta pitanja

Koje funkcije su potrebne aplikaciji za naručivanje prevoza?

Kao minimum: prijava sa korisničkim ulogama, mapa uživo sa lokacijom korisnika, pretraga i izbor vožnje, potvrda vožnje sa vozačem, cenom i rutom, plaćanje u aplikaciji i istorija vožnji. Zakazane vožnje, promocije i čet u aplikaciji obično dolaze posle lansiranja.

Može li se aplikacija za naručivanje prevoza napraviti u React Native-u?

Može. EasyCab koristi React Native uz TypeScript za iOS i Android, Google Maps za mapu uživo, PostgreSQL za podatke o vožnjama i plaćanjima i Stripe za plaćanja. Mape i lokacija rade preko nativnih modula, dok je ostatak aplikacije zajednički kod.

Kako aplikacije za naručivanje prevoza prikazuju kretanje vozača na mapi?

Aplikacija vozača u redovnim intervalima šalje svoju lokaciju, a mapa putnika pomera i animira marker na novi položaj umesto da ponovo iscrtava celu mapu. Ažuriranja su ograničena kako bi se uskladili tačnost i trajanje baterije.

Kako aplikacije za naručivanje prevoza naplaćuju vožnje?

Preko pružaoca usluga plaćanja kao što je Stripe. Njegov ekran za plaćanje prikuplja i čuva podatke o kartici, pa ih serveri aplikacije nikada ne obrađuju, a aplikacija potvrđuje vožnju i cenu pre nego što putnik plati.

Povezano štivo

Izdvojeni radovi

Pogledajte sve

Imate projekat na umu?

Popunite formular i dobijte besplatne konsultacije!

Šta se dešava dalje?

  • 1Pregledamo vaš zahtev i odgovaramo u roku od jednog radnog dana (pon-pet, po srednjoevropskom vremenu)
  • 2Javljamo vam se da dogovorimo sastanak u vreme koje vam odgovara, gde god da se nalazite
  • 3Šaljemo besplatnu ponudu i naše mišljenje o pristupu koji je najbolji za vas
  • 4Čak i ako ne budemo sarađivali, smatrajte nas besplatnim tehničkim sagovornikom za vaše ideje i pitanja