ovviamente, come al solito, dipende!

se vuoi usare i linguaggi nativi, allora devi partire da Java per Android, e da Swift o Objective-C per iOS (consgilio Swift).

se invece vuoi creare una app con tecncologie web, ti consiglio Titanium o Apache Cordova.
io preferisco il secondo, e l'ho affiancato a Ionic framework per la grafica (che però richiede anche conoscenze di AngularJS).
sennò puoi usare jQuery Mobile o Sencha Touch.
invece Titanium ha già il suo framework per gestire la grafica, che si chiama Alloy.
in sostanza ti danno la possibilità di accedere anche all'hardware di sistema usando solo teconologie web: html, css e soprattutto javascript.

in qualunque caso, lato server dovrai implementarre dei web service per l'autentiazione, la scrittura su db (per ordini, registrazione, ecc) e per recuperare i prodotti da visualizzare sulla app.
questo perchè le app non possono accedere direttamente ai db.

infine, devi anche scegliere come comportarti nel caso di connessione assente.
cioè, se rendere disponibile la app anche offline con un sistema di caching, o farla usare solo quando il device è online.