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.

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.

Š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 radi | Kako ga EasyCab rešava |
|---|---|---|
| Identitet i uloge | Razdvaja putnike od drugih vrsta korisnika | Prijava imejlom i Google nalogom, uz uloge koje se proveravaju na serveru, a ne samo sakrivaju u interfejsu |
| Mapa uživo | Prikazuje položaje i rute dok se menjaju | Google Maps sa lokacijom korisnika i iscrtanom rutom od polaska do odredišta |
| Životni ciklus vožnje | Prati vožnju od zahteva do završetka | Jedan zapis o vožnji sa jasnim promenama statusa, sačuvan u PostgreSQL-u |
| Plaćanja | Bezbedno naplaćuje putniku | Stripe ekran za plaćanje, pa podaci o kartici nikada ne dolaze do servera aplikacije |
| Istorija | Omogućava korisnicima pregled prethodnih vožnji | Istorija 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 sveImate 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


