इस प्रोजेक्ट के बारे में

# RelayAB का अवलोकन RelayAB एक स्व-होस्टेड AI API गेटवे (मध्यस्थ स्टेशन) है, जिसका उद्देश्य अपस्ट्रीम AI सेवाओं की API Key को कुछ उपयोगकर्ताओं के साथ सुरक्षित और नियंत्रित तरीके से साझा करना तथा सूक्ष्म अनुमति और उपयोग प्रबंधन प्रदान करना है। यह Vercel पर एक-क्लिक तैनाती का समर्थन करता है और OpenAI तथा Anthropic के API प्रोटोकॉल के साथ संगत है। ## मुख्य विशेषताएँ - **बहु-उपयोगकर्ता और भूमिकाएँ**: व्यवस्थापक (admin) और सामान्य उपयोगकर्ता (user) दो भूमिकाओं का समर्थन करता है, उपयोगकर्ता पासवर्ड bcrypt एकतरफा हैश के रूप में संग्रहीत किए जाते हैं। - **क्रेडिट कोटा प्रबंधन**: व्यवस्थापक प्रत्येक खाते के लिए कुल क्रेडिट और सुलभ मॉडल आवंटित कर सकता है, खाते के अंतर्गत सभी API Key उसी क्रेडिट को साझा करती हैं, समाप्त होने पर सभी बंद हो जाती हैं। - **उपयोगकर्ता स्व-सेवा**: सामान्य उपयोगकर्ता कंसोल में स्वयं API Key बना सकते हैं, नाम बदल सकते हैं, सक्षम/अक्षम कर सकते हैं या हटा सकते हैं, तथा स्वयं पासवर्ड बदल सकते हैं। - **सूक्ष्म Key नियंत्रण**: प्रत्येक उपयोगकर्ता कई API Key बना सकता है, प्रत्येक Key के लिए स्वतंत्र रूप से समाप्ति समय, सक्षम स्थिति और मॉडल श्वेतसूची कॉन्फ़िगर की जा सकती है (केवल खाते की श्वेतसूची के आधार पर संकीर्ण की जा सकती है)। - **संगत प्रोटोकॉल**: OpenAI Chat Completions और Anthropic Messages प्रोटोकॉल का समर्थन करता है, तथा क्लाइंट मॉडल से अपस्ट्रीम वास्तविक मॉडल तक मैपिंग का समर्थन करता है। - **सुरक्षित भंडारण**: अपस्ट्रीम Provider Key को AES-256-GCM से एन्क्रिप्ट करके Redis में संग्रहीत किया जाता है, मुख्य कुंजी खो जाने पर डेटा स्थायी रूप से अनुपलब्ध हो जाएगा। - **बहुभाषी इंटरफ़ेस**: डिफ़ॉल्ट रूप से चीनी, अंग्रेज़ी का समर्थन, फुटर में एक-क्लिक स्विच। - **उपयोगकर्ता-अनुकूल दस्तावेज़ पृष्ठ**: कॉपी करने योग्य इंटरफ़ेस पता और OpenAI/Anthropic संगत उदाहरण कोड प्रदान करता है। ## तकनीकी स्टैक - **फ्रेमवर्क**: Next.js 15 App Router + React 19 + TypeScript 5 - **डेटा भंडारण**: Upstash for Redis (Vercel Marketplace के माध्यम से एक-क्लिक इंस्टॉल) - **प्रमाणीकरण**: iron-session 8 + bcryptjs (work factor 12) - **एन्क्रिप्शन**: AES-256-GCM + bcryptjs - **अपस्ट्रीम AI एकीकरण**: Vercel AI SDK - **परीक्षण**: Vitest + Playwright ## त्वरित शुरुआत 1. **निर्भरताएँ इंस्टॉल करें**: `pnpm install` 2. **पर्यावरण चर कॉन्फ़िगर करें**: `.env.example` को `.env.local` में कॉपी करें, केवल `RELAY_AUTH` (मुख्य पासवर्ड, जो व्यवस्थापक लॉगिन पासवर्ड भी है) सेट करना आवश्यक है। Upstash के चर Vercel पर स्वतः इंजेक्ट हो जाते हैं। 3. **डेवलपमेंट सर्वर प्रारंभ करें**: `pnpm dev`, `http://localhost:3000` पर जाएँ। 4. **लॉगिन**: पहली बार प्रारंभ करने पर व्यवस्थापक खाता स्वतः बन जाता है, उपयोगकर्ता नाम डिफ़ॉल्ट रूप से `admin`, पासवर्ड `RELAY_AUTH` का मान। ## Vercel पर तैनाती प्रोजेक्ट एक-क्लिक तैनाती बटन प्रदान करता है, तैनाती के समय केवल `RELAY_AUTH` पर्यावरण चर भरना आवश्यक है। सफल तैनाती के बाद, Vercel Marketplace के माध्यम से Upstash डेटाबेस इंस्टॉल करें, फिर पुनः तैनात (Redeploy) करने पर प्रभावी हो जाएगा। ## सुरक्षा बिंदु - उपयोगकर्ता पासवर्ड bcrypt एकतरफा हैश का उपयोग करते हैं, मूल पाठ को वापस नहीं निकाला जा सकता। - ग्राहक API Key केवल उनका SHA-256 हैश संग्रहीत करती है, स्पष्ट पाठ केवल निर्माण के समय एक बार लौटाया जाता है। - अपस्ट्रीम Provider Key AES-256-GCM एन्क्रिप्शन के साथ संग्रहीत की जाती है, मुख्य कुंजी खो जाने पर पुनर्प्राप्ति संभव नहीं। - Session Cookie iron-session से एन्क्रिप्ट किया जाता है, और HttpOnly, Secure तथा SameSite=Lax गुण सेट किए जाते हैं। ## दस्तावेज़ और संचालन प्रोजेक्ट विस्तृत आर्किटेक्चर, डेटा मॉडल, API रूट, परीक्षण और तैनाती दस्तावेज़ प्रदान करता है। साथ ही संचालन स्क्रिप्ट शामिल हैं, जैसे bootstrap-admin, reset-password, rotate-key और list-usage आदि कमांड। ## लाइसेंस MIT