gebeya-whatsapp-otp
Version:
React WhatsApp OTP verification component with Supabase integration
177 lines (132 loc) • 4.62 kB
Markdown
A React component library for WhatsApp OTP verification with Supabase integration. This package provides a complete solution for implementing phone number verification using WhatsApp OTP in your React applications.
- ✅ **WhatsApp OTP Integration** - Send and verify OTP codes via WhatsApp
- ✅ **Supabase Backend** - Built-in Supabase integration for data storage
- ✅ **React Components** - Ready-to-use UI components
- ✅ **TypeScript Support** - Full TypeScript support with type definitions
- ✅ **Customizable Styling** - Tailwind CSS support with custom styling options
- ✅ **Country Selection** - Multi-country support with country code selection
- ✅ **Error Handling** - Comprehensive error handling and user feedback
- ✅ **Security Features** - Rate limiting, attempt tracking, and phone suspension
- ✅ **Accessibility** - WCAG compliant components
```bash
npm install gebeya-whatsapp-otp
```
```tsx
import React from "react";
import {
WhatsAppOTPProvider,
VerifyWithWhatsAppButton,
WhatsAppOTPModal,
} from "gebeya-whatsapp-otp";
function App() {
const config = {
supabaseUrl: "YOUR_SUPABASE_URL",
supabaseKey: "YOUR_SUPABASE_ANON_KEY",
};
return (
<WhatsAppOTPProvider config={config}>
<div>
<h1>Welcome</h1>
<VerifyWithWhatsAppButton>
Verify with WhatsApp
</VerifyWithWhatsAppButton>
</div>
<WhatsAppOTPModal />
</WhatsAppOTPProvider>
);
}
```
📖 **[Complete Setup Guide](SETUP_GUIDE.md)** - Detailed installation and configuration instructions
Context provider that manages the OTP verification state and Supabase connection.
Button component that triggers the OTP verification flow. Supports multiple variants and sizes.
Modal component that handles the phone number input and OTP verification interface.
Custom hook for advanced usage and custom implementations.
```tsx
import {
WhatsAppOTPProvider,
VerifyWithWhatsAppButton,
WhatsAppOTPModal,
} from "gebeya-whatsapp-otp";
function LoginPage() {
const config = {
supabaseUrl: process.env.REACT_APP_SUPABASE_URL!,
supabaseKey: process.env.REACT_APP_SUPABASE_ANON_KEY!,
};
const callbacks = {
onSuccess: (phoneNumber: string) => {
console.log("Phone verified:", phoneNumber);
// Redirect to dashboard
},
onError: (error: string) => {
console.error("Verification failed:", error);
// Show error message
},
};
return (
<WhatsAppOTPProvider config={config} callbacks={callbacks}>
<div className="min-h-screen flex items-center justify-center">
<div className="text-center">
<h1 className="text-2xl font-bold mb-4">Welcome</h1>
<p className="text-gray-600 mb-6">Please verify your phone number</p>
<VerifyWithWhatsAppButton className="w-full">
Verify Phone Number
</VerifyWithWhatsAppButton>
</div>
</div>
<WhatsAppOTPModal />
</WhatsAppOTPProvider>
);
}
```
```tsx
<VerifyWithWhatsAppButton
variant="outline"
size="lg"
className="bg-green-600 hover:bg-green-700 text-white"
>
Custom Styled Button
</VerifyWithWhatsAppButton>
```
```tsx
const customCountries = [
{ code: "+1", country: "United States", flag: "🇺🇸" },
{ code: "+44", country: "United Kingdom", flag: "🇬🇧" },
{ code: "+251", country: "Ethiopia", flag: "🇪🇹" },
];
<WhatsAppOTPModal countries={customCountries} />;
```
- React 16.8.0 or higher
- React-DOM 16.8.0 or higher
- Supabase account and project
- Node.js 14.0 or higher
- Chrome 60+
- Firefox 55+
- Safari 12+
- Edge 79+
We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
MIT License - see the [LICENSE](LICENSE) file for details.
- 📖 [Documentation](SETUP_GUIDE.md)
- 🐛 [Report Issues](https://github.com/gebeyainc/gebeya-whatsapp-otp/issues)
- 💬 [Discussions](https://github.com/gebeyainc/gebeya-whatsapp-otp/discussions)
See [CHANGELOG.md](CHANGELOG.md) for a list of changes and version history.