react-ai-ragbot
Version:
React component library that provides plug-and-play AI chat and voice assistant UIs. Designed to work seamlessly with the node-ragbot backend, it enables developers to quickly add an OpenAI-powered conversational experience to any website or app. Features
172 lines (123 loc) • 5.64 kB
Markdown
# react-ai-ragbot
`react-ai-ragbot` is a modern React + TypeScript component library that provides drop‑in **AI chat and voice assistant UIs**.
It is designed to connect seamlessly with your backend (LLM, RAG pipeline, or custom AI service) and give users an experience similar to ChatGPT or Google Assistant.
## Features
- **Two ready‑to‑use components**:
- `<ChatBot />` – a customizable chat window UI with typing indicators, themes, popup/float display modes, and smooth animations.
- `<VoiceBot />` – a voice assistant UI with recording, “thinking…”, typing transcription, and audio playback in a popup modal.
- **Light & Dark mode support** via a simple `darkMode` prop.
- **Backend integration** through a `backendUrl` prop – just point to your API endpoint.
- Sleek, modern UI powered by **TailwindCSS**.
- Built with **TypeScript**, but works in both JS and TS projects.
- First‑class support for [`node-ragbot`](https://www.npmjs.com/package/node-ragbot) – a backend companion package that provides ready‑to‑use REST APIs for chat and voice.
## Installation
### Frontend (React)
```bash
npm install react-ai-ragbot
```
or
```bash
yarn add react-ai-ragbot
```
### Backend (Node)
Install the companion backend package:
```bash
npm install node-ragbot
```
This package exposes REST endpoints (`/chat` and `/voice`) that are fully compatible with the React components.
## Usage
### ChatBot
```tsx
import { ChatBot } from "react-ai-ragbot";
function App() {
return (
<ChatBot
backendUrl="http://localhost:5000/api/bot" // base URL + prefix if defined
darkMode={false} // optional: light (false) or dark (true)
title="AI Support" // optional: header title
displayMode="float" // "float" (default) or "popup"
buttonText="Need help?" // optional: label beside floating button
className="custom-class" // optional: extra classes
/>
);
}
```
### VoiceBot
```tsx
import { VoiceBot } from "react-ai-ragbot";
function App() {
return (
<VoiceBot
backendUrl="http://localhost:5000/api/bot" // must include the same prefix as your backend
darkMode={true} // optional: light (false) or dark (true)
text="Talk to me" // optional: label beside mic button
/>
);
}
```
## Props
### ChatBot Props
| Prop | Type | Required | Default | Description |
|--------------|-----------------------------------|----------|----------------|-------------|
| `backendUrl` | `string` | ✅ Yes | — | Your backend base URL. Chat requests will POST to `${backendUrl}/api/bot/chat`. |
| `darkMode` | `boolean` | ❌ No | `false` | Toggle light/dark theme. |
| `title` | `string` | ❌ No | `"AI Assistant"` | Header title of the chat window. |
| `displayMode`| `"float"` or `"popup"` | ❌ No | `"float"` | Floating widget or fullscreen popup. |
| `buttonText` | `string` | ❌ No | — | Optional label displayed beside the trigger button. |
| `className` | `string` | ❌ No | `""` | Extra CSS classes for wrapper positioning. |
### VoiceBot Props
| Prop | Type | Required | Default | Description |
|--------------|-----------|----------|---------------|-------------|
| `backendUrl` | `string` | ✅ Yes | — | Your backend base URL. Voice requests will POST to `${backendUrl}/api/bot/voice`. |
| `darkMode` | `boolean` | ❌ No | `false` | Toggle light/dark theme. |
| `text` | `string` | ❌ No | `"Tap to speak"` | Optional label shown beside mic button. |
## How It Works
- **ChatBot**
- Renders a chat UI with floating/popup modes.
- Sends user text messages to your backend at `/api/bot/chat`.
- Displays AI responses with a typing animation and timestamp.
- **VoiceBot**
- Opens a popup modal with a mic button.
- Records speech using browser `MediaRecorder`.
- Sends audio to your backend at `/api/bot/voice`.
- Expects a JSON response:
```json
{
"success": true,
"answer": "Hello! I can help you with your query.",
"audio": "<base64-encoded-mp3>"
}
```
- Plays the returned audio and shows transcription with typing animation.
## Backend with node-ragbot
For quickest integration, install the [`node-ragbot`](https://www.npmjs.com/package/node-ragbot) backend package.
It provides out‑of‑the‑box API endpoints:
- `POST /api/bot/chat` → expects `{ question: string }` and returns `{ answer: string }`.
- `POST /api/bot/voice` → expects an audio file and returns `{ success, answer, audio }`.
You can extend it with your own logic (OpenAI, RAG pipelines, etc.).
The React components are pre‑configured to call these endpoints, so frontend + backend work seamlessly together.
## When to Use
- Add an **AI support assistant** to your SaaS app.
- Build **RAG (Retrieval-Augmented Generation)** frontends quickly.
- Create a **voice-enabled chatbot** like Google Assistant.
- Prototype **LLM‑powered agents** without UI boilerplate.
## Development
Clone and run locally:
```bash
git clone https://github.com/your-org/react-ai-ragbot.git
cd react-ai-ragbot
npm install
npm run dev
```
## License
MIT License © 2025