Mobile App Mechanics Guide
The FitNexa Mobile App is a multi-tenant React Native application built with Expo and NativeWind. Its core feature is the ability to shift its entire identity based on the gym it represents.
🌈 Multi-Branding Engine
We support multiple gym brands (e.g., "Iron Temple", "Green Theory") from a single codebase.
How it works:
- Gym-Config: Branding details are defined in
gym-config.json(or fetched from the Gym Service). - ThemeContext: A global provider manages the current brand's colors, typography, and logo.
- Asset Switching: Dynamic asset resolution allows the app to load brand-specific splash screens and icons.
🎨 Dynamic Theming
All UI components use the ThemeContext instead of hardcoded colors.
const { theme } = useTheme();
// ...
<View style={{ backgroundColor: theme.colors.primary }} />
Components
- ThemedText: Automatically applies brand font families and colors.
- ThemedButton: Uses brand gradients and corner radii.
- ScreenWrapper: Provides standard padding and background based on theme.
🌍 Internationalization (i18n)
The app uses i18next for translation management.
- Keys: All UI strings are stored as keys in
src/i18n/locales/. - Dynamic Translation: Brand names and gym-specific terms are injected into translation strings to maintain white-labeling.