A simple React Native authentication app built with Expo.
- User authentication (Login/Signup)
- Form validation using Zod
- State management with Zustand
- Persistent storage with AsyncStorage
- Clean and responsive UI using React Native Paper
- Node.js (v18 or higher)
- npm or yarn
- Expo CLI (
npm install -g expo-cli) - iOS Simulator (for Mac) or Android Studio (for Android development)
- Git
- Clone the repository:
git clone <repository-url>
cd AuthApp- Install dependencies:
npm install --legacy-peer-deps- Install iOS pods (if developing for iOS):
cd ios && pod install && cd ..- Start the development server:
npm start- Run on specific platform:
# iOS
npm run ios
# Android
npm run androidAuthApp/
├── .github/
│ └── workflows/ # CI/CD workflow configurations
├── src/
│ ├── components/ # Reusable components
│ ├── screens/ # Screen components
│ ├── store/ # Zustand store configurations
│ ├── theme/ # Theme and styling
│ ├── types/ # TypeScript type definitions
│ ├── validation/ # Zod schemas
│ └── tests/ # Test files
├── App.tsx # Root component
└── package.json
- react-native: "0.76.6"
- expo: "~52.0.27"
- react-native-paper: "^5.13.1"
- @react-navigation/native: "^7.0.14"
- zustand: "^5.0.3"
- @react-native-async-storage/async-storage: "1.23.1"
- react-hook-form: "^7.54.2"
- zod: "^3.24.1"
- typescript: "^5.3.3"
- eslint: "^8.57.0"
- vitest: "^3.0.4"
- GitHub Actions for automation
- ESLint for code quality
- Vitest for testing
- Expo CLI for builds
Triggers:
- On push to any branch
- On pull requests to main branch
Steps:
- Code checkout
- Node.js setup
- Dependencies installation
- Linting check
- Test execution
# Example CI workflow
name: CI
on:
push:
branches: ["**"]
pull_request:
branches: [main]Triggers:
- On push to main branch
- On pull requests to main branch
Steps:
- Android build generation
- iOS build generation (on macOS runner)
- Artifact upload
- Adding automated code quality checks.
- Implement more comprehensive testing stages, eg: unit, integration.
- Implement automated rollback.
# Run tests
npm run test
# Run tests in CI mode
npm run test:ci
# Run linting
npm run lint- Create a new branch:
git checkout -b feature/your-feature- Make changes and test locally:
npm run test
npm run lint- Push changes and create PR:
git push origin feature/your-feature- CI/CD pipeline will automatically:
- Run linting checks
- Execute tests
- Generate builds (on main branch)
Common issues and solutions:
- Dependency Issues
npm install --legacy-peer-deps- iOS Build Issues
cd ios
pod install
cd ..- Android Build Issues
cd android
./gradlew clean
cd ..MIT