Архитектура приложений под десктоп/мобилки существенно проще архитектуры веб-приложений. У вас есть страница, все элементы которой контролируются одним процессом, который происходит тут же на устройстве (UI тред). Как будто это html+ js, а вместо браузера - операционная система, которая контролирует жизнь треда. Обычно есть даже некий аналог html разметки (на каждой платформе свой).
Этого уже достаточно для написания простейшей программы. И по сути это фронтенд.
А далее, например, если вы хотите реализовать обращение к данным но не блокировать интерфейс пользователя, то вы делаете это в отдельном треде, к которому обращается UI тред и получает коллбеки по завершении. По сути это механизм клиент-сервер, только реализованный в одной и той же программе. Так работают любые нормальные десктопные приложения и добрая часть мобильных. Сервер здесь реализуется точно так же как сервер в вебе, только обычно используется тот же самый язык что и для работы с UI + упрощенные способы хранения данных, например xml, SQLite. На мобилках данные хранятся отдельно от кодов программы, для этого им выделяются директории.
В чем отличие от веба? В том, что не всегда реально нужно выделять "серверную" часть как отдельный тред и вообще, как нечто отдельное. Многие вызовы происходят быстро (т.к. одна физическая машина) и не успевают блокировать UI. Обычно надо соблюдать некий баланс сложности архитектуры и производительности.
Далее еще круче, вы можете вынести функционал сервера реально на сервер и получите полный принципиальный аналог веб-приложения, только клиент сайд у вас будет реализован с помощью нативных методов в оболочке из операционной системы. А сервер будет крутиться на чем угодно, хотя на php. Плюс можно зафигачить некую кеширующую прослойку на клиенте, тогда вы получите толстый клиент (например, facebook)
Все написанное справедливо как минимум для iOS, Android, Windows Phone, Windows.