npm package: @ouremode/create-expo-stack
Description: CLI tool to initialize a React Native application with Expo - Fork with tabs navigation support
Latest version: 1.0.3

# @ouremode/create-expo-stack

A fork of [create-expo-stack](https://github.com/roninoss/create-expo-stack) maintained by OUREMODE with **full tabs and drawer navigation support** for React Native students and developers.

## Why This Fork?

The original `create-expo-stack` temporarily disabled tabs and drawer+tabs navigation templates. This fork restores those features for students who need them for learning React Native navigation patterns.

## Features

✅ **Full Navigation Support**
- Stack Navigation
- Tabs Navigation ✨ **(Re-enabled)**
- Drawer + Tabs Navigation ✨ **(Re-enabled)**

✅ All other features from create-expo-stack:
- TypeScript support
- Expo Router or React Navigation
- NativeWind, NativeWindUI, Unistyles, or StyleSheets
- Supabase or Firebase authentication
- Zustand state management
- EAS setup

## Installation & Usage

### Quick Start (npx - recommended)

```bash
npx @ouremode/create-expo-stack my-app
```

Or use the shorthand command:

```bash
npx @ouremode/create-expo-stack my-app
```

### With Options (Non-interactive)

```bash
# Create app with Expo Router and Tabs
npx @ouremode/create-expo-stack my-app --expo-router --tabs --nativewind

# Create app with Drawer + Tabs
npx @ouremode/create-expo-stack my-app --expo-router --drawer+tabs --stylesheet

# Create app with React Navigation and Tabs
npx @ouremode/create-expo-stack my-app --react-navigation --tabs --nativewind
```

### Available Flags

**Navigation:**
- `--expo-router` - Use Expo Router (file-based routing)
- `--react-navigation` - Use React Navigation (configuration-based)
- `--tabs` - Use tabs navigation
- `--drawer+tabs` - Use drawer with nested tabs

**Styling:**
- `--nativewind` - Use NativeWind (Tailwind for React Native)
- `--nativewindui` - Use NativeWindUI components
- `--stylesheet` - Use React Native StyleSheet
- `--unistyles` - Use Unistyles

**Authentication:**
- `--supabase` - Add Supabase authentication
- `--firebase` - Add Firebase authentication

**State Management:**
- `--zustand` - Add Zustand state management

**Other:**
- `--no-install` - Skip installing dependencies
- `--no-git` - Skip git initialization
- `--eas` - Setup EAS configuration
- `--npm` | `--yarn` | `--pnpm` | `--bun` - Choose package manager

## Interactive Mode

Just run the command without flags and you'll be prompted with options:

```bash
npx @ouremode/create-expo-stack my-app
```

You'll see:
1. TypeScript? (Yes/No)
2. Package manager? (npm/yarn/pnpm/bun)
3. Navigation type? (React Navigation/Expo Router/None)
4. **Navigation structure?** (Stack/**Tabs**/**Drawer+Tabs**) ✨
5. Styling library? (NativeWind/NativeWindUI/StyleSheet/Unistyles)
6. State management? (Zustand/None)
7. Authentication? (Supabase/Firebase/None)
8. Setup EAS? (Yes/No)

## Examples

### Example 1: Simple Tabs App
```bash
npx @ouremode/create-expo-stack StudentApp --expo-router --tabs --nativewind --bun
```

Generated structure:
```
StudentApp/
└── app/
    ├── (tabs)/
    │   ├── _layout.tsx    # Tabs configuration
    │   ├── index.tsx      # Tab One
    │   └── two.tsx        # Tab Two
    └── _layout.tsx        # Root layout
```

### Example 2: Drawer with Tabs
```bash
npx @ouremode/create-expo-stack CourseApp --expo-router --drawer+tabs --stylesheet
```

Generated structure:
```
CourseApp/
└── app/
    ├── (drawer)/
    │   ├── (tabs)/
    │   │   ├── _layout.tsx    # Tabs configuration
    │   │   ├── index.tsx      # Tab One
    │   │   └── two.tsx        # Tab Two
    │   ├── _layout.tsx        # Drawer configuration
    │   └── index.tsx          # Home screen
    └── _layout.tsx            # Root layout
```

### Example 3: Full-Featured App
```bash
npx @ouremode/create-expo-stack MyApp \
  --expo-router \
  --tabs \
  --nativewindui \
  --supabase \
  --zustand \
  --eas \
  --bun
```

## For Students

This package is specifically maintained for React Native courses and workshops. It ensures you have access to all navigation patterns commonly taught in React Native development:

- **Stack Navigation**: For hierarchical navigation (push/pop)
- **Tabs Navigation**: For app sections (bottom tabs)
- **Drawer Navigation**: For side menu navigation

## Attribution & License

This is a fork of [create-expo-stack](https://github.com/roninoss/create-expo-stack) by [Dan Stepanov](https://github.com/danstepanov).

Original project: https://github.com/roninoss/create-expo-stack

**Changes in this fork:**
- ✅ Re-enabled tabs navigation option
- ✅ Re-enabled drawer+tabs navigation option
- ✅ All templates functional and tested

**License:** MIT (same as original)

## Technical Details

### What Changed?

The only modification from the original is uncommenting the tabs and drawer+tabs options in the CLI prompts (file: `cli/src/utilities/runCLI.ts`):

```typescript
// Before (original)
options: [
  { value: 'stack', label: 'Stack' }
  // { value: 'tabs', label: 'Tabs' },
  // { value: 'drawer + tabs', label: 'Drawer + Tabs' }
]

// After (this fork)
options: [
  { value: 'stack', label: 'Stack' },
  { value: 'tabs', label: 'Tabs' },
  { value: 'drawer + tabs', label: 'Drawer + Tabs' }
]
```

All templates were already present in the original codebase, just temporarily disabled.

## Support

- **Original Project Issues**: https://github.com/roninoss/create-expo-stack/issues
- **Fork-specific Issues**: https://github.com/OUREMODE/create-expo-stack/issues

## Contributing

Since this is a fork for educational purposes, we keep changes minimal. The main goal is to maintain tabs navigation support while staying close to the upstream project.

If the original project re-enables tabs navigation, this fork may be deprecated.

---

**Made with ❤️ for React Native students**

Original by [Dan Stepanov](https://github.com/danstepanov) | Fork maintained by [OUREMODE](https://github.com/OUREMODE)