npm package: @moamc/rn-cli
Description: Enterprise-grade Code Generation CLI for React Native Applications with Multi-Project Support
Author: MOAMC Engineering Team
Latest version: 1.5.4

# @moamc/rn-cli

Enterprise-grade Code Generation CLI for React Native Applications

## 🚀 Features

- ✅ **Multi-Project Support** - Works with both Investor and Distributor apps
- ✅ **Automatic Structure Detection** - Detects and adapts to your project structure
- ✅ Generate complete feature modules with screens, hooks, and API integration
- ✅ Add screens to existing features with form support
- ✅ Create API services with GET/POST methods
- ✅ Generate React Query hooks with validation
- ✅ Support for multiple field types (text, number, email, date, dropdown, etc.)
- ✅ Automatic validation generation
- ✅ TypeScript-ready templates

## 📦 Installation

### Global Installation (Recommended)

```bash
npm install -g @moamc/rn-cli
```

### Project-specific Installation

```bash
npm install --save-dev @moamc/rn-cli
```

## 🎯 Usage

After installation, run the CLI from your React Native project root:

```bash
rn-cli
```

**The CLI automatically detects your project type (Investor/Distributor) and generates files with the appropriate structure!**

### Supported Projects

- **Investor App** - Nested structure (screens/Feature/Screen/Screen.js)
- **Distributor App** - Flat structure (screens/Feature/Screen.js)

See [MULTI_PROJECT_SUPPORT.md](./MULTI_PROJECT_SUPPORT.md) for detailed information.

### Available Commands

#### Generate Feature
```bash
rn-cli generate:feature
# or
rn-cli g:f
```
Creates a complete feature module with screen, API service, and hooks.

#### Generate Screen
```bash
rn-cli generate:screen
# or
rn-cli g:s
```
Adds a new screen to an existing feature with optional form support.

#### Generate API
```bash
rn-cli generate:api
# or
rn-cli g:a
```
Creates API service methods with React Query integration.

#### Generate Hook
```bash
rn-cli generate:hook
# or
rn-cli g:h
```
Generates data-fetching hooks with validation.

## 📁 Project Structure Requirements

The CLI supports two project structures:

### Investor App (Nested Structure)
```
project-root/
├── screens/
│   └── FeatureName/
│       └── ScreenName/
│           ├── ScreenName.js
│           ├── hooks/
│           │   └── useScreenName.js
│           ├── components/
│           │   └── styles.js
│           ├── validation.js
│           ├── constants.js
│           └── helpers.js
├── services/
├── queries/
└── navigations/
    └── Navigation.js
```

### Distributor App (Flat Structure)
```
project-root/
├── screens/
│   └── FeatureName/
│       ├── ScreenName.js
│       ├── hooks/
│       │   └── useScreenName.js
│       ├── components/
│       │   └── ScreenNameStyles.js
│       ├── ScreenNameConstants.js
│       └── ScreenNameHelpers.js
├── services/
├── queries/
└── navigation/
    └── Navigation.js
```

## 🎨 Form Field Types

- **Text** - Standard text input
- **Number** - Numeric input
- **Email** - Email address with validation
- **Date** - Date picker
- **Dropdown** - Select from options
- **Radio** - Single choice
- **Checkbox** - Multiple choices
- **File** - File upload

## 🔌 API Integration

The CLI supports both GET and POST APIs:

1. **GET API** - Fetch data with React Query
2. **POST API** - Submit forms with useMutation
3. **Automatic cache invalidation** after successful POST

## ✨ Features

### Automatic Validation
- Real-time field validation
- Submit-time validation
- Custom validation rules per field type

### React Query Integration
- Automatic query key generation
- Cache management
- Error handling
- Loading states

### Form Support
- Multiple field types
- Field width control (full/half)
- Required field validation
- Dropdown options

## 🛠️ Development

To use in development mode:

```bash
cd cli-tool
npm link
```

Then in your project:

```bash
rn-cli
```

## 📝 License

MIT

## 👥 Author

MOAMC Engineering Team

## 🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.