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