A modern, feature-rich mobile application template built with React Native and Expo. This template provides a robust foundation for building scalable mobile applications with built-in internationalization, theming, navigation, and reusable components.
- 📱 File-based routing with Expo Router
- 🌍 Built-in internationalization (i18n) support (English & Turkish)
- 🎨 Customizable theming system
- 📊 Interactive charts and data visualization
- 🔐 Authentication flow
- 🎯 Type-safe navigation
- 📝 Form handling
- 🧩 Reusable UI components
- 🔄 State management with Redux Toolkit
- 🎭 Dark/Light mode support
├── app/ # Main application directory
│ ├── (drawer)/ # Drawer navigation screens
│ ├── (tabs)/ # Tab-based navigation screens
│ ├── components/ # Reusable components
│ ├── constants/ # App constants and theme
│ └── utils/ # Utility functions
├── assets/ # Static assets (images, fonts)
├── providers/ # Context providers and dependency injection containers
├── hooks/ # General Custom Hooks
├── constants/ # Values used in all app likes styles, typography etc.
├── api/ # API services, endpoints, and network related utilities
├── screens/ # Screen components and their specific logic
├── types/ # TypeScript interfaces, types and type definitions
├── utils/ # Helper functions, formatters, and utility methods
├── localization/ # i18n translation files
└── store/ # Redux store configuration
- Node.js (v16 or newer)
- npm or yarn
- Expo CLI
- iOS Simulator (Mac only) or Android Studio
- Clone the repository:
git clone https://github.com/yunusyavuz16/react-native-expo-architecture
- Install dependencies:
npm install
- Start the development server:
npx expo start
- iOS Simulator: Press
i
- Android Emulator: Press
a
- Physical Device: Scan QR code with Expo Go app
The template includes several pre-built components:
AgHeader
: Customizable header componentAgBadge
: Badge component for status indicatorsAgProgressCircular
: Circular progress indicatorAgLineChart
: Line chart visualizationAgBarChart
: Bar chart visualizationPost
: Social media post componentLoginForm
: Authentication form component
The template supports multiple languages using i18next:
import { useTranslation } from "react-i18next";
const { t } = useTranslation();
t("welcome"); // Translates to current language
Redux Toolkit is integrated for state management:
- Authentication state
- Language preferences
- Loading states
- Theme preferences
The app uses Expo Router for file-based navigation:
- Drawer navigation for main menu
- Stack navigation for authentication flow
- Tab navigation for main app sections
- TypeScript for type safety
- ESLint for code quality
- Jest for testing
- React Native Reanimated for animations
npx expo start
: Start development servernpm run ios
: Run on iOS simulatornpm run android
: Run on Android emulatornpm run web
: Run in web browsernpm run lint
: Run ESLintnpm run test
: Run testsnpm run reset-project
: Reset to clean project state
Contributions are welcome!
This project is licensed under the MIT License - see the LICENSE file for details.
- Expo team for the amazing framework
- React Native community
- Contributors and maintainers