
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
etegie-bot
Advanced tools
A beautiful, professional chatbot system for Next.js with Supabase backend - Fixed React hooks compatibility and improved TypeScript support
A beautiful, professional chatbot system for Next.js with Supabase backend
Etegie Bot is a professional-grade chatbot system designed for modern web applications. It provides:
npm install etegie-bot
import { Chatbot } from 'etegie-bot';
export default function MyPage() {
return (
<div>
<h1>Welcome to My App</h1>
<Chatbot
apiUrl="/api/chat"
companyId="your-company-id"
botName="My Assistant"
welcomeMessage="Hello! How can I help you today?"
/>
</div>
);
}
Create an API route at /api/chat:
import { createSupabaseService } from 'etegie-bot';
export default async function handler(req, res) {
const { message, companyId, sessionId } = req.body;
const supabaseService = createSupabaseService(
process.env.SUPABASE_URL,
process.env.SUPABASE_ANON_KEY
);
// Find matching FAQ
const matchingFAQ = await supabaseService.findMatchingFAQ(message, companyId);
const response = matchingFAQ ? matchingFAQ.answer : 'Sorry, I don\'t have info on that.';
res.json({ response, sessionId });
}
| Prop | Type | Default | Description |
|---|---|---|---|
apiUrl | string | required | API endpoint for chat messages |
companyId | string | required | Company identifier |
botName | string | "Etegie Assistant" | Bot display name |
welcomeMessage | string | "Hello! I'm here to help..." | Welcome message |
showAvatars | boolean | true | Show user/bot avatars |
showTimestamps | boolean | true | Show message timestamps |
theme | 'light' | 'dark' | 'auto' | 'light' | UI theme preference |
primaryColor | string | '#3b82f6' | Primary color for UI |
maxMessages | number | 100 | Maximum messages in memory |
<Chatbot
apiUrl="/api/chat"
companyId="company-123"
theme="dark"
primaryColor="#10b981"
botName="Green Bot"
/>
<Chatbot
apiUrl="/api/chat"
companyId="company-123"
showAvatars={false}
showTimestamps={false}
className="custom-chatbot"
/>
-- Companies table
CREATE TABLE companies (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
name TEXT NOT NULL,
description TEXT,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- FAQ table
CREATE TABLE faq (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
company_id UUID REFERENCES companies(id),
question TEXT NOT NULL,
answer TEXT NOT NULL,
keywords TEXT[] DEFAULT '{}',
category TEXT DEFAULT 'General',
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Chat messages table
CREATE TABLE chat_messages (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
company_id UUID REFERENCES companies(id),
session_id TEXT NOT NULL,
message TEXT NOT NULL,
response TEXT NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
import { CompanySetup } from 'etegie-bot';
<CompanySetup
onSetupComplete={(data) => {
console.log('Company setup complete:', data);
}}
/>
import { createSupabaseService } from 'etegie-bot';
const supabaseService = createSupabaseService(
process.env.SUPABASE_URL,
process.env.SUPABASE_ANON_KEY
);
// Add FAQs
await supabaseService.addFAQs(companyId, [
{
question: "What is your return policy?",
answer: "We offer 30-day returns on all products.",
keywords: ["return", "policy", "refund"]
}
]);
// Find FAQ answers
const answer = await supabaseService.findFAQAnswer("How do I return something?", companyId);
The chatbot automatically adapts to different screen sizes:
etegie-bot/
├── src/
│ ├── components/
│ │ ├── Chatbot.tsx # Main chatbot component
│ │ └── CompanySetup.tsx # Company setup wizard
│ ├── utils/
│ │ └── supabase.ts # Supabase service utilities
│ ├── types/
│ │ └── index.ts # TypeScript type definitions
│ └── index.ts # Main export file
├── package.json
├── tsconfig.json
└── README.md
The package includes comprehensive TypeScript types and is tested with:
Fork the repository
Create a feature branch
Make your changes
Add tests if applicable
Submit a pull request
FAQs
A beautiful, professional chatbot system for Next.js with Supabase backend - Fixed React hooks compatibility and improved TypeScript support
We found that etegie-bot demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.