Skip to main content

Navigation and screens

App.js loads fonts and the splash screen, wraps everything in AuthContextProvider, and renders UnauthStack or AuthStack depending on isAuthenticated. AuthStack wraps BottomTabsNavigator in VersionsProvider.

Auth (stacks/UnauthStack.js)​

ScreenFileCalls
Loginscreens/loginScreen.jsrest/api/token/; Google button; language picker; Terms and Privacy. Unverified accounts go to VerifyEmail
SignUpscreens/SignupScreen.jsrest/signup/ or Google
ResetPasswordscreens/ResetPasswordScreen.jsrest/request-password-reset/, rest/confirm-password-reset/
VerifyEmailscreens/VerifyEmailScreen.jsrest/verify-code/, rest/resend-verification/, rest/change-unverified-email/; logs in automatically on success

Home (hidden tab)​

ScreenWhat
HomeScreenCards: W.A.R. Prayer, Getting Started Right, Videos & Training, Get Books, Giving (hidden on iOS)
WarPrayerScreenStatic guide: Worship, Admit, Request
GettingStartedRightScreenLink to emaw.churchcenter.com/registrations
VideosAndTrainingScreenLink to the EMAW Vimeo channel
GetBooksScreenLink to everymanawarrior.com/purchase.html
DonateScreenLink to everymanawarrior.com/emaw-donations.html (Android only)

Quiet Time​

ScreenCalls
QTScreen ("Journal")rest/qt/fetchQT/
QtEntryScreen (components/QuietTimeEntryForm.js)rest/qt/submitQT/, rest/qt/updateQT/<id>/; sections: passage, Major Themes, questions, Best Verse
HistoricQTScreenrest/fetch-quiet-time-entry/<id>/, rest/qt/deleteQT/<id>/; share or copy with or without W.A.R. sections

Verse Memory​

ScreenCalls
VerseMemoryScreenmenu
AllVersesScreenrest/get-user-verses/, rest/mark-verse-memorized/, rest/remove-verse/<id>/, rest/manage-verse-in-collection/, audio via rest/generate-audio-file/
AddVerseScreenreference picker; text from local SQLite; rest/add-memory-verse/
CollectionsScreenrest/get-user-collections/, rest/create-collection/, rest/delete-collection/<id>/, rest/get-collection-verse-count/
PracticeScreenfive modes: FlashcardMode, InitialsMode, FillInTheBlankMode, WordScrambleMode, AudioPracticeMode (rest/analyze-verse-audio/)
VerseFinderScreenrest/ai/find-verse/; verse text from SQLite; add to collections

Bible​

ScreenCalls
BibleScreenOffline reader; highlights, notes, tags (rest/notes/*), memorize, similar (rest/bibles/similar/), compare versions, start a Quiet Time; remembers last position
BibleSearchScreenrest/bibles/search/ (semantic), local FTS5 fallback offline
BibleLibraryScreenAll highlights, notes and tags with filters

Books​

ScreenCalls
BooksScreenfour covers
BookSubScreenweeks with progress (rest/get-user-progress/<book>/), from locales/<lang>/book_info.json
DiscussionQuestionsScreenrest/get-answers/, rest/get-submission-dates/, rest/submit-discussion-questions/; drafts in AsyncStorage
WeeklyQTScreenassigned passages with completion; opens QtEntryScreen

Settings (screens/SettingsScreen.js)​

Language, default Bible version, stats (rest/user-stats/), sign-in methods (rest/auth/identities/, link/unlink Google), Change Password (hidden for password-less accounts), Logout (rest/api/token/logout/), Delete Account (rest/delete-user/, confirm with password or Google).

API layer​

store/AxiosInstance.js: 30 s timeout; setupInterceptors(logout, refreshTokenFn); retries a network error once; on 401 refreshes (rest/api/token/refresh/ with rotate: true, concurrent 401s share one refresh) and retries; 429 passes through. Session bootstrap checks GET rest/validate/token. Every API call is a standalone function in utils/ importing the shared instance.