Skip to content

πŸš€ Production-ready Expo React Native template with TypeScript, authentication, Zustand state management, theming, and comprehensive dev tools

License

Notifications You must be signed in to change notification settings

chinyereunamba/expo-template

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Expo Mobile Skeleton

A production-ready mobile app skeleton built with Expo React Native and TypeScript, featuring comprehensive development tools, state management, and a complete authentication flow.

Features

  • πŸš€ Expo SDK 53+ with TypeScript 5.4+ and strict type checking
  • πŸ“± Cross-platform support (iOS, Android, Web)
  • 🎨 Complete UI System with theme support (light/dark/system modes)
  • 🧭 Type-safe Navigation with React Navigation 6
  • πŸ” Authentication Flow with secure token management
  • πŸ“¦ Modern State Management with Zustand stores
  • πŸ› οΈ Development Tools including debug menu and performance monitoring
  • πŸ§ͺ Comprehensive Testing setup with Jest and React Native Testing Library
  • πŸ”§ Code Quality Tools (ESLint, Prettier, Husky)
  • πŸš€ Production Ready with EAS Build and deployment configuration
  • β™Ώ Accessibility Support with screen reader compatibility
  • 🎯 Path Aliases configured for clean imports

Project Structure

src/
β”œβ”€β”€ components/          # Reusable UI components
β”‚   β”œβ”€β”€ common/         # Generic components (Button, Input, Loading, DevMenu)
β”‚   β”œβ”€β”€ forms/          # Form-specific components with validation
β”‚   └── examples/       # Example/demo components
β”œβ”€β”€ screens/            # Screen components organized by feature
β”‚   β”œβ”€β”€ auth/          # Authentication flow screens
β”‚   β”œβ”€β”€ home/          # Home section screens
β”‚   β”œβ”€β”€ profile/       # User profile screens
β”‚   β”œβ”€β”€ settings/      # App settings screens
β”‚   └── debug/         # Development debug screens
β”œβ”€β”€ navigation/         # Navigation configuration and navigators
β”œβ”€β”€ store/             # Zustand state management
β”‚   β”œβ”€β”€ authStore.ts   # Authentication state
β”‚   β”œβ”€β”€ appStore.ts    # App settings and theme
β”‚   └── networkStore.ts # Network connectivity state
β”œβ”€β”€ services/          # API clients and external services
β”œβ”€β”€ hooks/             # Custom React hooks
β”œβ”€β”€ utils/             # Utility functions and helpers
β”œβ”€β”€ theme/             # Theme system and styling utilities
β”œβ”€β”€ types/             # TypeScript type definitions
β”œβ”€β”€ contexts/          # React contexts
β”œβ”€β”€ providers/         # Provider components
β”œβ”€β”€ config/            # App configuration and environment
└── constants/         # App constants and theme tokens

Getting Started

  1. Install dependencies:

    npm install
  2. Start the development server:

    npm start
  3. Run on specific platforms:

    npm run android  # Android
    npm run ios      # iOS
    npm run web      # Web

Development Scripts

  • npm run lint - Run ESLint
  • npm run lint:fix - Fix ESLint issues
  • npm run format - Format code with Prettier
  • npm run type-check - Check TypeScript types
  • npm test - Run tests
  • npm run test:watch - Run tests in watch mode
  • npm run test:coverage - Run tests with coverage

Build & Deploy

Environment Setup

Set up your environment configuration:

# Interactive setup
npm run setup:env

# Or manually copy and edit
cp .env.example .env

Build Commands

# Development builds
npm run build:dev

# Staging builds
npm run build:staging

# Production builds
npm run build:prod

# Platform-specific builds
npm run build:android
npm run build:ios
npm run build:all

Configuration Validation

# Validate environment configuration
npm run config:validate development
npm run config:validate staging
npm run config:validate production

# List all environments
npm run config:list

Over-the-Air Updates

# Publish updates to different channels
npm run update:dev
npm run update:staging
npm run update:prod

App Store Submission

# Submit to app stores
npm run submit:staging  # Internal testing
npm run submit:prod     # Production release

Environment Configuration

The app supports multiple environments with different configurations:

  • Development: Local development with debug tools
  • Staging: Pre-production testing environment
  • Production: Live app store releases

Required Environment Variables

# API Configuration
EXPO_PUBLIC_API_URL=https://api.example.com
EXPO_PUBLIC_API_VERSION=v1

# App Configuration
EXPO_PUBLIC_APP_ENV=development
EXPO_PUBLIC_DEBUG_MODE=true

# EAS Project Configuration
EXPO_PUBLIC_EAS_PROJECT_ID=your-project-id-here

Optional Variables

# Analytics and Monitoring
EXPO_PUBLIC_ANALYTICS_ID=your-analytics-id
EXPO_PUBLIC_SENTRY_DSN=your-sentry-dsn

For detailed configuration information, see Configuration Guide and Build & Deployment Guide.

Architecture & Documentation

Core Architecture

  • State Management: Zustand stores with persistence and TypeScript support
  • Navigation: Type-safe React Navigation with authentication flow
  • Theme System: Comprehensive theming with light/dark/system modes
  • Error Handling: Global error boundaries with crash reporting
  • Performance: Lazy loading, memory management, and optimization utilities

Development Tools

  • Debug Menu: In-app debugging interface (development only)
  • Performance Monitoring: Memory usage and performance tracking
  • Network Monitoring: API request/response logging
  • State Inspection: Real-time state debugging
  • Crash Reporting: Error tracking and reporting utilities

Documentation

Code Quality

This project maintains high code quality with:

  • TypeScript with strict mode enabled
  • ESLint for code linting with React Native rules
  • Prettier for consistent code formatting
  • Husky for pre-commit hooks
  • Jest for unit and integration testing
  • React Native Testing Library for component testing

Pre-commit hooks automatically run linting, formatting, and type checking.

About

πŸš€ Production-ready Expo React Native template with TypeScript, authentication, Zustand state management, theming, and comprehensive dev tools

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published