Backend — समाचार एवं परियोजना एप्लिकेशन
गोपनीय दस्तावेज़ · क्लाइंट संस्करण
यह दस्तावेज़ हाइब्रिड प्लेटफ़ॉर्म: सोशल नेटवर्क और अख़बार के लिए बैकएंड विकास योजना का वर्णन करता है, जो समाचार और नज़दीकी परियोजनाओं पर केंद्रित है। इसमें हेक्सागोनल आर्किटेक्चर, AI सत्यापन और प्रशासनिक स्वीकृति के साथ प्रकाशन प्रवाह, तथा सहमत तकनीकें (मोबाइल ऐप के लिए React Native, REST API बैकएंड) शामिल हैं।
हम बैकएंड का पूर्ण रूप से ध्यान रखेंगे: हेक्सागोनल आर्किटेक्चर, API, डेटाबेस, प्रमाणीकरण, सामग्री सत्यापन के लिए AI सेवाओं के साथ एकीकरण, फ़ाइल संग्रहण, परीक्षण, CI/CD और क्लाउड पर तैनाती।
सिस्टम सोशल नेटवर्क और अख़बार को जोड़ता है: उपयोगकर्ता नज़दीकी परियोजनाएँ अपलोड करते हैं, अपनी भूमिका के अनुसार समाचार बना सकते हैं, और सामग्री प्रकाशन से पहले AI सत्यापन और/या प्रशासक स्वीकृति से गुज़रती है।
उपयोगकर्ता नज़दीकी परियोजनाएँ अपलोड और साझा करते हैं (पहल, कार्य, स्थानीय कार्यक्रम)। ये परियोजनाएँ सोशल सामग्री और समाचार के लिए संदर्भ हैं।
सत्यापित पत्रकार: मान्य उपयोगकर्ता जो सत्यापन पास करते हैं और समाचार सीधे प्रकाशित कर सकते हैं। अन्य उपयोगकर्ता: समाचार बना सकते हैं लेकिन प्रकाशन के लिए AI टोकन सत्यापन और फिर प्रशासक स्वीकृति की ज़रूरत होती है।
AI टोकन का उपयोग यह जाँचने के लिए किया जाएगा कि असत्यापित उपयोगकर्ताओं द्वारा जमा किए गए समाचार गुणवत्ता और स्थिरता मानदंडों को पूरा करते हैं। सत्यापन परिणाम स्वीकृति प्रवाह को आगे बढ़ाता है।
एक प्रशासक समीक्षा करता है और स्वीकृति देता है (या अस्वीकार करता है)। केवल स्वीकृत सामग्री सभी के लिए दिखने वाले अख़बार में प्रकाशित होती है।
मोबाइल ऐप (समाचार पढ़ना, नज़दीकी परियोजनाएँ अपलोड करना, उपयोगकर्ता द्वारा समाचार बनाना) React Native से विकसित किया जाएगा। यह चुनाव उद्योग में व्यापक अपनाव और परियोजना को मिलने वाले लाभों के कारण उचित है:
बैकएंड हेक्सागोनल आर्किटेक्चर से विकसित किया जाएगा: डोमेन कोर (बिज़नेस लॉजिक, प्रकाशन नियम, सत्यापन) तकनीकी विवरणों से अलग रहता है; बाहरी संचार पोर्ट्स (इंटरफ़ेस) और अडैप्टर्स (कंक्रीट इम्प्लीमेंटेशन) के ज़रिए होता है।
इस परियोजना के लाभ: फ़्रेमवर्क और डेटाबेस से स्वतंत्रता, इन्फ्रास्ट्रक्चर के बिना डोमेन का यूनिट टेस्टिंग, और बिज़नेस लॉजिक दोबारा लिखे बिना अडैप्टर्स बदलने या जोड़ने की क्षमता (दूसरा API, दूसरा AI प्रोवाइडर, दूसरा स्टोरेज)।
उच्च-स्तरीय दृश्य: मोबाइल ऐप (React Native), हेक्सागोनल बैकएंड, एडमिन पैनल और अलग-अलग प्रकाशन प्रवाह।
ऑप्टिमाइज़्ड क्वेरीज़, सर्वर कैश (Redis), कम रिस्पॉन्स टाइम और वेब एडिटर तथा ऐप दोनों में तेज़ अनुभव बनाए रखा जाएगा।
इस प्लेटफ़ॉर्म के API के निर्माण के लिए मुख्य फ़्रेमवर्कों की तुलना की गई। प्रोडक्शन डेप्लॉयमेंट Dokku का उपयोग करेगा (सेल्फ-होस्टेड Heroku जैसा PaaS, git push से डेप्लॉय, PostgreSQL, Redis और एन्वायरनमेंट वेरिएबल का समर्थन)।
| फ़्रेमवर्क | भाषा | मजबूती | इस परियोजना के लिए उपयुक्तता |
|---|---|---|---|
| NestJS | Node.js / TypeScript | मॉड्यूल आर्किटेक्चर और डिपेंडेंसी इंजेक्शन, हेक्सागोनल के लिए आदर्श; TypeScript (टाइपिंग, सुरक्षित रिफैक्टर); इकोसिस्टम: TypeORM/Prisma, Bull/BullMQ, class-validator, JWT; API और वर्कर्स के लिए एक ही भाषा। | बहुत उच्च: हेक्सागोनल, जटिल प्रवाह (स्वीकृति, AI), क्यू और वैलिडेशन के लिए फिट; Dokku Node को नेटिव समर्थन देता है। |
| Laravel | PHP | तेज़ विकास, Eloquent, Redis के साथ क्यू और कैश, Sanctum/Passport, परिपक्व इकोसिस्टम। | उच्च: अच्छा CRUD और क्यू; हेक्सागोनल के लिए अधिक अनुशासन चाहिए; React Native/Node वाली टीमों में PHP कम आम। |
| FastAPI | Python | Async, ऑटोमैटिक OpenAPI डॉक्स, Pydantic; एक ही भाषा में ML/AI एकीकरण के लिए मजबूत। | मध्यम: शुद्ध API के लिए उत्कृष्ट; परियोजना केवल बाहरी AI API (HTTP) उपभोग करती है, मॉडल नहीं चलाती; NestJS/Laravel की तुलना में CRUD + वर्कफ़्लो के लिए कम कन्वेंशन। |
| Go (Gin / Fiber) | Go | परफॉर्मेंस, सिंगल बाइनरी, नेटिव कनकरेंसी; Dokku पर बहुत अच्छा। | मध्यम: ऑथ, वैलिडेशन, क्यू और स्वीकृति प्रवाह के लिए अधिक बॉयलरप्लेट; कम “बैटरी शामिल” इस प्रकार के API के लिए। |
इस API के लिए NestJS और Node.js तथा TypeScript का उपयोग किया जाएगा क्योंकि यह हमारे लागू करने वाले हेक्सागोनल आर्किटेक्चर के साथ सीधे फिट बैठता है: मॉड्यूल और डिपेंडेंसी इंजेक्शन कोर में पोर्ट (इंटरफ़ेस) परिभाषित करने और अडैप्टर्स (PostgreSQL रिपॉज़िटरी, AI क्लाइंट, S3 स्टोरेज) इंजेक्ट करने की अनुमति देते हैं बिना बिज़नेस लॉजिक को फ़्रेमवर्क से जोड़े। TypeScript टाइपिंग त्रुटियाँ कम करती है और अकेले बैकएंड पर काम करने वाले डेवलपर के लिए रखरखाव आसान बनाती है। NestJS offers native support for queues (Bull/BullMQ con Redis), validation with DTOs and class-validator, guards for JWT and roles, and a clear structure by domain (news, projects, users, approvals), which speeds up implementing flows como “verificación IA → aprobación admin” and the distinction between verified journalists and standard users. AI प्रोवाइडर्स के साथ एकीकरण सरल है (कोर सेवाओं से HTTP कॉल)। अंत में, Dokku के साथ डेप्लॉयमेंट सीधा है (Node बिल्डपैक, Procfile, DB और Redis के लिए एन्वायरनमेंट वेरिएबल), और एक ही रनटाइम API और वर्कर्स दोनों को सर्व करता है जो सत्यापन या नोटिफिकेशन क्यू प्रोसेस करते हैं।
git push के ज़रिए डेप्लॉय, कंटेनराइज़्ड ऐप प्रबंधन, PostgreSQL और Redis के ऐड-ऑन या लिंकिंग, तथा डोमेन और SSL कॉन्फ़िगरेशन की अनुमति देता है। NestJS + Node स्टैक और CI/CD पाइपलाइन (जैसे GitHub Actions) के साथ संगत जो डोकू सर्वर पर बिल्ड और डेप्लॉय करती हैं।
बैकएंड मुख्य इंजन के रूप में PostgreSQL का उपयोग करेगा। मॉडल सोशल नेटवर्क + अख़बार को समर्थन देता है: उपयोगकर्ता नज़दीकी परियोजनाएँ अपलोड करते हैं, AI सत्यापन और प्रशासनिक स्वीकृति प्रवाह के साथ समाचार, तथा सत्यापित पत्रकारों (सीधा प्रकाशन) बनाम स्वीकृति चाहने वाले उपयोगकर्ताओं के लिए भूमिकाएँ। नीचे: टेबल और एंटिटी-रिलेशनशिप आरेख।
| टेबल | विवरण और मुख्य फ़ील्ड |
|---|---|
roles |
सिस्टम भूमिकाएँ: admin, editor, verified_journalist (सत्यापित पत्रकार, सीधा प्रकाशन), user (स्वीकृति आवश्यक)। फ़ील्ड: id, name, slug, timestamps. |
users |
उपयोगकर्ता। फ़ील्ड: id, name, email, password (hash), role_id (FK), email_verified_at, remember_token, timestamps। भूमिका तय करती है कि सीधा प्रकाशन हो या स्वीकृति से गुज़रना हो। |
projects |
उपयोगकर्ताओं द्वारा अपलोड किए गए नज़दीकी परियोजनाएँ। फ़ील्ड: id, user_id (FK), name, slug, description, location (या lat/lng), status, timestamps। सोशल नेटवर्क की अपनी सामग्री। |
categories |
समाचार वर्गीकृत करने के लिए श्रेणियाँ/विषय। फ़ील्ड: id, name, slug, parent_id (वैकल्पिक), timestamps। |
news |
प्रकाशन प्रवाह के साथ समाचार। फ़ील्ड: id, title, slug, excerpt, body, category_id (FK), user_id (लेखक), project_id (FK वैकल्पिक), status (draft, pending_ai_review, pending_approval, published, rejected), ai_verified_at, ai_verification_result, approved_by, approved_at, published_at, timestamps। |
comments |
समाचार पर टिप्पणियाँ। फ़ील्ड: id, news_id (FK), user_id (FK), body, parent_id (जवाब), timestamps। |
media |
फ़ाइलें/छवियाँ (पॉलिमॉर्फिक: समाचार या परियोजना)। फ़ील्ड: id, path, url, type, mediaable_id, mediaable_type, order, timestamps। |
refresh_tokens |
JWT रिफ्रेश टोकन। फ़ील्ड: id, user_id (FK), token (hash), expires_at, revoked_at, timestamps। |
password_reset_tokens |
पासवर्ड रीसेट टोकन (forgot/reset)। फ़ील्ड: id, user_id (FK), token, expires_at, used_at, timestamps। |
Profile |
उपयोगकर्ता प्रोफ़ाइल (1:1)। फ़ील्ड: id, userId (FK UNIQUE), firstName, lastName, address, avatar, lastConnectionAt, lastNewsDownloadedId (FK News), lastCommentId (FK Comment), lastSearch, timestamps। एडमिन पैनल और ऐप द्वारा उपयोग। |
भूमिकाओं के साथ उपयोगकर्ता (admin, editor, verified_journalist, user); उपयोगकर्ताओं द्वारा अपलोड की गई नज़दीकी परियोजनाएँ; स्टेट प्रवाह के साथ समाचार (AI + स्वीकृति); श्रेणियाँ, टिप्पणियाँ और मीडिया। आरेख PDF में सही प्रिंट होता है।
डेटा की अखंडता और पुनर्प्राप्ति सुनिश्चित करने के लिए स्वचालित बैकअप प्रणाली बनाए रखी जाएगी:
बैकअप सुरक्षित स्टोरेज (उदा. S3 या समकक्ष) में रखे जाएँगे और रिस्टोर प्रक्रिया दस्तावेज़ की जाएगी।
API NestJS (Node.js + TypeScript) और PostgreSQL के साथ विकसित की जाएगी, जैसा कि पिछले अनुभाग में उचित ठहराया गया। नीचे चुने गए स्टैक की दक्षता और क्षमताएँ।
NestJS + TypeORM/Prisma + Redis स्टैक इस API के लिए दक्षता और रखरखाव में कैसे योगदान देता है:
| मानदंड | दक्षता पर प्रभाव / इस तकनीक का कारण |
|---|---|
| TypeORM/Prisma + रिलेशन | ईगर लोडिंग और अच्छी तरह परिभाषित रिलेशन समाचार सूचियों में N+1 से बचाते हैं (श्रेणी, लेखक, परियोजना के साथ)। DB के लिए कम राउंड-ट्रिप और API रिस्पॉन्स तेज़। |
| Redis कैश और क्यू (BullMQ) | TTL के साथ रिस्पॉन्स कैश (सूचियाँ, अंतिम समाचार फ़्लैग); BullMQ क्यू AI सत्यापन, छवि प्रोसेसिंग या बैकग्राउंड नोटिफिकेशन के लिए बिना HTTP अनुरोध ब्लॉक किए। |
| PostgreSQL में इंडेक्स और क्वेरी | published_at, category_id, status और स्लग पर इंडेक्स। वैकल्पिक फुल-टेक्स्ट खोज। ऑप्टिमाइज़ करने योग्य एक्ज़िक्यूशन प्लान। |
| सीरियलाइज़ेशन और DTO | DTO और class-transformer नियंत्रित और सुसंगत रिस्पॉन्स फॉर्मैट देते हैं, React Native ऐप में पेलोड आकार और पार्सिंग समय कम करते हैं। |
| गार्ड और रेट लिमिटिंग | JWT और भूमिकाओं के लिए NestJS गार्ड; ओवरलोड से बचने और स्थिर रिस्पॉन्स टाइम के लिए IP या उपयोगकर्ता द्वारा थ्रॉटलिंग। |
| API में अंतिम समाचार फ़्लैग | हल्का एंडपॉइंट (उदा. GET /api/v1/news/last-updated) जो केवल टाइमस्टैम्प या वर्ज़न लौटाता है। ऐप अपने कैश से तुलना करता है और नई सामग्री होने पर ही पूरी सूची माँगता है। |
refresh_tokens में सुरक्षित रिफ्रेश टोकन।
main, develop और फ़ीचर ब्रांच। कन्वेंशनल कमिट और अनिवार्य PR के साथ ब्रांच सुरक्षा।
.env के साथ वेरिएबल प्रबंधन और स्टार्टअप पर वैलिडेशन (उदा. @nestjs/config)। कोड से बाहर सीक्रेट्स।
/api/v1/)। Swagger/OpenAPI के साथ डॉक्यूमेंटेशन।
refresh_tokens में संग्रहीत, वैकल्पिक रोटेशन)। लॉगिन, रिफ्रेश और लॉगआउट एंडपॉइंट।
media टेबल (समाचार, परियोजना)।
git push, Node बिल्डपैक, Procfile, PostgreSQL और Redis लिंक्ड (ऐड-ऑन या बाहरी सेवाएँ)। Dokku में वेरिएबल और सीक्रेट; Dokku सर्वर पर डेप्लॉय के लिए GitHub Actions के साथ वैकल्पिक पाइपलाइन।
परियोजना एक हाइब्रिड प्लेटफ़ॉर्म: सोशल नेटवर्क और अख़बार है। उपयोगकर्ता नज़दीकी परियोजनाएँ अपलोड करते हैं और समाचार बना सकते हैं; सत्यापित पत्रकार सीधे प्रकाशित करते हैं, और अन्य उपयोगकर्ता AI टोकन सत्यापन और प्रशासक स्वीकृति से गुज़रते हैं। मोबाइल ऐप React Native से और बैकएंड हेक्सागोनल आर्किटेक्चर (पोर्ट और अडैप्टर), REST API, PostgreSQL, Redis, S3 और AI प्रोवाइडर एकीकरण के साथ विकसित है।
विकास वर्णित चरणों में संगठित है, दक्षता, DB बैकअप (हर 12 घंटे और प्रकाशन पर), टेस्ट, Git flow, CI/CD और क्लाउड डेप्लॉयमेंट के साथ। डेटा मॉडल में भूमिकाएँ (admin, editor, verified_journalist, user), नज़दीकी परियोजनाएँ, प्रवाह स्टेट के साथ समाचार (pending_ai_review, pending_approval, published) और AI सत्यापन तथा स्वीकृति फ़ील्ड शामिल हैं।