# Raven Client

A powerful React Native SDK designed to help you manage in-app messaging, nudges, ToolTip, and Engagement in your mobile applications. Built with a sophisticated state machine system, it enables you to create complex, event-driven user experiences with ease.

## 📚 Documentation

**👉 [View Full Documentation](https://dream-horizon-org.github.io/raven-client/)**

The complete documentation includes:
- [Getting Started Guide](https://dream-horizon-org.github.io/raven-client/getting-started/installation)
- [API Reference](https://dream-horizon-org.github.io/raven-client/api-reference/nudge-client)
- [Examples](https://dream-horizon-org.github.io/raven-client/examples/basic-cta)
- [State Machine DSL](https://dream-horizon-org.github.io/raven-client/state-machine-dsl/overview)
- [Troubleshooting](https://dream-horizon-org.github.io/raven-client/troubleshooting)

## 💬 Community

Join our Discord community for support, discussions, and updates:

**👉 [Join Discord](https://discord.gg/NryqGzJU)**

## Capabilities

- 🎯 **In-App Engagement**: Display contextual nudges and bottom sheets
- 💬 **ToolTip System**: Native tooltip system with screen tracking
- 📊 **Event-Driven Engagement**: Trigger Engagement based on app events
- 🔄 **State Machine DSL**: Built-in state machine for Engagement lifecycle with powerful DSL
- 📱 **Cross-Platform**: Works seamlessly on both iOS and Android
- 🎨 **Customizable**: Fully customizable UI components
- ⏱️ **Frequency Control**: Fine-grained frequency rules (session, window, lifespan-based)
- 🏷️ **Behaviour Tags**: Organize and manage multiple Engagement together

## Installation

```sh
npm install @dreamhorizonorg/raven-client
# or
yarn add @dreamhorizonorg/raven-client
# or
pnpm add @dreamhorizonorg/raven-client
```

## Prerequisites

- React Native >= 0.70
- React >= 18.0
- `@react-navigation/native` >= 7.0.0
- `react-native-gesture-handler` >= 2.20.0
- `@gorhom/bottom-sheet` >= 4.6.0

See [Prerequisites](https://dream-horizon-org.github.io/raven-client/getting-started/prerequisites) for detailed setup instructions.

## Quick Start

Get started with Raven Client in minutes:

- **[Installation Guide](https://dream-horizon-org.github.io/raven-client/getting-started/installation)** - Install and configure the SDK
- **[Quick Start Tutorial](https://dream-horizon-org.github.io/raven-client/getting-started/quick-start)** - Complete setup guide with code examples
- **[Navigation Setup](https://dream-horizon-org.github.io/raven-client/getting-started/navigation-setup)** - Set up React Navigation
- **[Initialization](https://dream-horizon-org.github.io/raven-client/getting-started/initialization)** - Initialize the SDK
- **[Event Processing](https://dream-horizon-org.github.io/raven-client/getting-started/event-processing)** - Process app events

## Features & Usage

- **[Nudges](https://dream-horizon-org.github.io/raven-client/features/nudges)** - Display contextual nudges and bottom sheets
- **[Tooltips](https://dream-horizon-org.github.io/raven-client/features/tooltips)** - Native tooltip system with screen tracking

## API Reference

For complete API documentation, see:
- [Nudge Client API](https://dream-horizon-org.github.io/raven-client/api-reference/nudge-client)
- [CTA Handler API](https://dream-horizon-org.github.io/raven-client/api-reference/cta-handler)
- [ToolTip System API](https://dream-horizon-org.github.io/raven-client/api-reference/tooltip-system)
- [Type Definitions](https://dream-horizon-org.github.io/raven-client/api-reference/types)

## Examples

- [Basic Engagement Example](https://dream-horizon-org.github.io/raven-client/examples/basic-cta) - Simple engagement with welcome nudge
- [Multi-Step Nudge](https://dream-horizon-org.github.io/raven-client/examples/multi-step-nudge) - Complex multi-step user journey

## Troubleshooting

Having issues? Check out the [Troubleshooting Guide](https://dream-horizon-org.github.io/raven-client/troubleshooting) for common problems and solutions.

## Contributing

We welcome contributions! Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.

**Quick Start:**
- 🐛 Found a bug? [Report it](https://github.com/dream-horizon-org/raven-client/issues/new)
- ✨ Have a feature idea? [Request it](https://github.com/dream-horizon-org/raven-client/issues/new)
- ❓ Need help? [Ask a question](https://github.com/dream-horizon-org/raven-client/discussions)
- 🔀 Ready to submit code? [Create a Pull Request](https://github.com/dream-horizon-org/raven-client/compare)

## Code of Conduct

Please read our [Code of Conduct](./CODE_OF_CONDUCT.md) before contributing.

## Core Concepts

- **[State Machine DSL](https://dream-horizon-org.github.io/raven-client/state-machine-dsl/overview)** - Define complex user flows with state transitions
- **[Engagement System](https://dream-horizon-org.github.io/raven-client/core-concepts/cta-system)** - Understanding how Engagement work
- **[Behaviour Tags](https://dream-horizon-org.github.io/raven-client/core-concepts/behaviour-tags)** - Organize and group Engagement
- **[Filters](https://dream-horizon-org.github.io/raven-client/core-concepts/filters)** - Conditional logic for state transitions

## Guides

- **[Customization](https://dream-horizon-org.github.io/raven-client/guides/customization)** - Customize UI components
- **[Frequency Control](https://dream-horizon-org.github.io/raven-client/guides/frequency-control)** - Control how often Engagement are shown
- **[Error Handling](https://dream-horizon-org.github.io/raven-client/guides/error-handling)** - Handle errors gracefully
- **[Grouping CTAs](https://dream-horizon-org.github.io/raven-client/guides/grouping-ctas)** - Group related Engagement together

## License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
