वापस

तकनीकी प्रस्ताव

Backend — समाचार एवं परियोजना एप्लिकेशन

गोपनीय दस्तावेज़ · क्लाइंट संस्करण

परिचय

यह दस्तावेज़ हाइब्रिड प्लेटफ़ॉर्म: सोशल नेटवर्क और अख़बार के लिए बैकएंड विकास योजना का वर्णन करता है, जो समाचार और नज़दीकी परियोजनाओं पर केंद्रित है। इसमें हेक्सागोनल आर्किटेक्चर, AI सत्यापन और प्रशासनिक स्वीकृति के साथ प्रकाशन प्रवाह, तथा सहमत तकनीकें (मोबाइल ऐप के लिए React Native, REST API बैकएंड) शामिल हैं।

हम बैकएंड का पूर्ण रूप से ध्यान रखेंगे: हेक्सागोनल आर्किटेक्चर, API, डेटाबेस, प्रमाणीकरण, सामग्री सत्यापन के लिए AI सेवाओं के साथ एकीकरण, फ़ाइल संग्रहण, परीक्षण, CI/CD और क्लाउड पर तैनाती।

परियोजना दृष्टि: सोशल नेटवर्क और अख़बार

सिस्टम सोशल नेटवर्क और अख़बार को जोड़ता है: उपयोगकर्ता नज़दीकी परियोजनाएँ अपलोड करते हैं, अपनी भूमिका के अनुसार समाचार बना सकते हैं, और सामग्री प्रकाशन से पहले AI सत्यापन और/या प्रशासक स्वीकृति से गुज़रती है।

नज़दीकी परियोजनाएँ

उपयोगकर्ता नज़दीकी परियोजनाएँ अपलोड और साझा करते हैं (पहल, कार्य, स्थानीय कार्यक्रम)। ये परियोजनाएँ सोशल सामग्री और समाचार के लिए संदर्भ हैं।

उपयोगकर्ता प्रकार और प्रकाशन

सत्यापित पत्रकार: मान्य उपयोगकर्ता जो सत्यापन पास करते हैं और समाचार सीधे प्रकाशित कर सकते हैंअन्य उपयोगकर्ता: समाचार बना सकते हैं लेकिन प्रकाशन के लिए AI टोकन सत्यापन और फिर प्रशासक स्वीकृति की ज़रूरत होती है।

AI सत्यापन

AI टोकन का उपयोग यह जाँचने के लिए किया जाएगा कि असत्यापित उपयोगकर्ताओं द्वारा जमा किए गए समाचार गुणवत्ता और स्थिरता मानदंडों को पूरा करते हैं। सत्यापन परिणाम स्वीकृति प्रवाह को आगे बढ़ाता है।

प्रशासनिक स्वीकृति

एक प्रशासक समीक्षा करता है और स्वीकृति देता है (या अस्वीकार करता है)। केवल स्वीकृत सामग्री सभी के लिए दिखने वाले अख़बार में प्रकाशित होती है।

सारांश: सोशल नेटवर्क (नज़दीकी परियोजनाएँ, रचनाकार उपयोगकर्ता) + अख़बार (क्यूरेटेड सामग्री)। दो प्रकाशन पथ: सत्यापित पत्रकार → सीधा प्रकाशन; सामान्य उपयोगकर्ता → AI सत्यापन → प्रशासक स्वीकृति → प्रकाशन

मोबाइल ऐप के लिए React Native का उपयोग

मोबाइल ऐप (समाचार पढ़ना, नज़दीकी परियोजनाएँ अपलोड करना, उपयोगकर्ता द्वारा समाचार बनाना) React Native से विकसित किया जाएगा। यह चुनाव उद्योग में व्यापक अपनाव और परियोजना को मिलने वाले लाभों के कारण उचित है:

हेक्सागोनल आर्किटेक्चर (Ports & Adapters)

बैकएंड हेक्सागोनल आर्किटेक्चर से विकसित किया जाएगा: डोमेन कोर (बिज़नेस लॉजिक, प्रकाशन नियम, सत्यापन) तकनीकी विवरणों से अलग रहता है; बाहरी संचार पोर्ट्स (इंटरफ़ेस) और अडैप्टर्स (कंक्रीट इम्प्लीमेंटेशन) के ज़रिए होता है।

इस परियोजना के लाभ: फ़्रेमवर्क और डेटाबेस से स्वतंत्रता, इन्फ्रास्ट्रक्चर के बिना डोमेन का यूनिट टेस्टिंग, और बिज़नेस लॉजिक दोबारा लिखे बिना अडैप्टर्स बदलने या जोड़ने की क्षमता (दूसरा API, दूसरा AI प्रोवाइडर, दूसरा स्टोरेज)।

आरेख: परियोजना में हेक्सागोनल पैटर्न का अनुप्रयोग

flowchart TB subgraph Entrada["इनपुट पोर्ट/अडैप्टर"] REST[REST API] Panel[एडमिन वेब पैनल] end subgraph Nucleo["कोर (डोमेन)"] Services[एप्लिकेशन सेवाएँ] Reglas[नियम: प्रकाशन, सत्यापन, स्वीकृति] end subgraph Salida["आउटपुट पोर्ट/अडैप्टर"] PG[(PostgreSQL)] Redis[(Redis)] S3[S3 / स्टोरेज] IA[AI प्रोवाइडर] end REST --> Services Panel --> Services Services --> Reglas Services --> PG Services --> Redis Services --> S3 Services --> IA

परियोजना संरचना और संचालन

उच्च-स्तरीय दृश्य: मोबाइल ऐप (React Native), हेक्सागोनल बैकएंड, एडमिन पैनल और अलग-अलग प्रकाशन प्रवाह।

flowchart LR A[ऐप React Native] B[Backend API] C[एडमिन पैनल] A -->|समाचार, परियोजना, प्रकाशन| B C -->|स्वीकृति, प्रबंधन| B B -->|प्रकाशन, डेटा| A

लोड दक्षता और ऑफ़लाइन पढ़ना

  • अंतिम समाचार फ़्लैग: एंडपॉइंट अंतिम प्रकाशित समाचार का फ़्लैग (टाइमस्टैम्प या वर्ज़न) एक्सपोज़ करेगा। ऐप केवल यह मान पूछकर तय कर सकता है कि नई सामग्री है या नहीं।
  • लोकल कैश और ऑफ़लाइन पढ़ना: ऐप में लोकल कैश (जैसे डिवाइस स्टोरेज) होगा जिससे उपयोगकर्ता ऑफ़लाइन समाचार पढ़ सकें, अंतिम डाउनलोड की गई प्रति का उपयोग करके।
  • सशर्त लोडिंग: लोडिंग कुशल होगी क्योंकि समाचार तभी API से माँगे जाएँगे जब उपयोगकर्ता का अंतिम पंजीकृत समाचार एंडपॉइंट फ़्लैग से पुराना हो। फ़्लैग नहीं बदला तो ऐप कैश इस्तेमाल करेगा और अनावश्यक बैंडविड्थ और नेटवर्क समय बचाएगा।

ऑप्टिमाइज़्ड क्वेरीज़, सर्वर कैश (Redis), कम रिस्पॉन्स टाइम और वेब एडिटर तथा ऐप दोनों में तेज़ अनुभव बनाए रखा जाएगा।

सहमत तकनीकी विशिष्टताएँ

Node.js with TypeScript (2+ वर्ष)
NestJS (Node.js + TypeScript)
PostgreSQL — मॉडल, इंडेक्स, ऑप्टिमाइज़ेशन
Redis — कैश और क्यू (BullMQ या समकक्ष)
सुव्यवस्थित REST API
JWT (access + refresh टोकन)
वैलिडेशन, सैनिटाइज़ेशन और API सुरक्षा
यूनिट और इंटीग्रेशन टेस्ट (Jest)
Git flow, PRs, conventional commits
CI/CD (GitHub Actions या समकक्ष)
Dokku के साथ डेप्लॉयमेंट
फ़ाइल/छवि के लिए S3 या समकक्ष
एन्वायरनमेंट वेरिएबल और सीक्रेट्स
एकमात्र बैकएंड के रूप में स्वायत्त कार्य
React Native (मोबाइल ऐप)
हेक्सागोनल आर्किटेक्चर
AI सामग्री सत्यापन (टोकन)

API फ़्रेमवर्क और Dokku के साथ डेप्लॉयमेंट

इस प्लेटफ़ॉर्म के API के निर्माण के लिए मुख्य फ़्रेमवर्कों की तुलना की गई। प्रोडक्शन डेप्लॉयमेंट Dokku का उपयोग करेगा (सेल्फ-होस्टेड Heroku जैसा PaaS, git push से डेप्लॉय, PostgreSQL, Redis और एन्वायरनमेंट वेरिएबल का समर्थन)।

इस API के लिए फ़्रेमवर्क तुलना

फ़्रेमवर्क भाषा मजबूती इस परियोजना के लिए उपयुक्तता
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 के लिए।

चयन: NestJS (Node.js + TypeScript)

इस 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 और वर्कर्स दोनों को सर्व करता है जो सत्यापन या नोटिफिकेशन क्यू प्रोसेस करते हैं।

Dokku: डेप्लॉयमेंट प्लेटफ़ॉर्म के रूप में Dokku का उपयोग किया जाएगा। यह 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 में सही प्रिंट होता है।

erDiagram ROLES ||--o{ USERS : has USERS ||--o{ PROJECTS : uploads CATEGORIES ||--o{ NEWS : classifies USERS ||--o{ NEWS : writes PROJECTS ||--o{ NEWS : linked_to NEWS ||--o{ COMMENTS : has USERS ||--o{ COMMENTS : writes NEWS ||--o{ MEDIA : attachments PROJECTS ||--o{ MEDIA : attachments USERS ||--o{ REFRESH_TOKENS : tokens USERS ||--o{ PASSWORD_RESET_TOKENS : reset_tokens USERS ||--|| PROFILE : has PROFILE |o--o| NEWS : last_news PROFILE |o--o| COMMENTS : last_comment ROLES { int id PK string name string slug } USERS { int id PK string name string email string password int role_id FK date created_at date updated_at } PROJECTS { int id PK int user_id FK string name string slug string location } CATEGORIES { int id PK string name string slug int parent_id FK } NEWS { int id PK string title string slug string body int category_id FK int user_id FK int project_id FK string status date approved_at int approved_by FK } COMMENTS { int id PK int news_id FK int user_id FK string body } MEDIA { int id PK string path string url string mediaable_type int mediaable_id } REFRESH_TOKENS { int id PK int user_id FK string token date expires_at } PASSWORD_RESET_TOKENS { int id PK int user_id FK string token date expires_at date used_at } PROFILE { int id PK int userId FK,UK string firstName string lastName string address string avatar date lastConnectionAt int lastNewsDownloadedId FK int lastCommentId FK string lastSearch date created_at date updated_at }

डेटाबेस का बैकअप

डेटा की अखंडता और पुनर्प्राप्ति सुनिश्चित करने के लिए स्वचालित बैकअप प्रणाली बनाए रखी जाएगी:

बैकअप सुरक्षित स्टोरेज (उदा. S3 या समकक्ष) में रखे जाएँगे और रिस्टोर प्रक्रिया दस्तावेज़ की जाएगी।

NestJS और PostgreSQL के साथ विकास

API NestJS (Node.js + TypeScript) और PostgreSQL के साथ विकसित की जाएगी, जैसा कि पिछले अनुभाग में उचित ठहराया गया। नीचे चुने गए स्टैक की दक्षता और क्षमताएँ।

NestJS के साथ API दक्षता विश्लेषण

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) जो केवल टाइमस्टैम्प या वर्ज़न लौटाता है। ऐप अपने कैश से तुलना करता है और नई सामग्री होने पर ही पूरी सूची माँगता है।
मॉड्यूल और डिपेंडेंसी इंजेक्शन — डोमेन के अनुसार संरचना (समाचार, परियोजना, उपयोगकर्ता, स्वीकृति) और अडैप्टर्स (BD, AI, S3) के लिए इंजेक्टेबल पोर्ट, हेक्सागोनल आर्किटेक्चर के अनुरूप।
TypeORM/Prisma और माइग्रेशन — ER के अनुरूप मॉडल और रिलेशन; स्कीमा विकसित करने के लिए वर्ज़न्ड माइग्रेशन बिना एन्वायरनमेंट तोड़े; N+1 से बचने के लिए ईगर लोडिंग।
सुरक्षा और वैलिडेशन — DTO में class-validator, इनपुट सैनिटाइज़ेशन, JWT और भूमिका गार्ड; refresh_tokens में सुरक्षित रिफ्रेश टोकन।
क्यू और कैश — जॉब के लिए Redis के साथ BullMQ (AI सत्यापन, नोटिफिकेशन, छवि प्रोसेसिंग); सूचियों और अंतिम समाचार फ़्लैग के लिए Redis में कैश।
फ़ाइल संग्रहण — अडैप्टर्स के ज़रिए S3 (या संगत) एकीकरण; ER मॉडल के अनुसार समाचार और परियोजना से जुड़े मीडिया।
टेस्टिंग और डेप्लॉयमेंट — यूनिट और इंटीग्रेशन टेस्ट के लिए Jest; हेक्सागोनल कोर टेस्ट के लिए पोर्ट मॉक; GitHub Actions के साथ CI/CD और Dokku के साथ डेप्लॉय (git push, PostgreSQL और Redis लिंक्ड)।

चरणों के अनुसार विकास योजना

1 प्रारंभिक सेटअप और आर्किटेक्चर
परियोजना. NestJS (Node.js + TypeScript) से इनिशियलाइज़। मॉड्यूल/डोमेन के अनुसार संरचना (समाचार, परियोजना, उपयोगकर्ता, श्रेणियाँ, स्वीकृति) हेक्सागोनल आर्किटेक्चर के अनुरूप।
Git. Git flow के साथ रिपॉज़िटरी, main, develop और फ़ीचर ब्रांच। कन्वेंशनल कमिट और अनिवार्य PR के साथ ब्रांच सुरक्षा।
एन्वायरनमेंट. .env के साथ वेरिएबल प्रबंधन और स्टार्टअप पर वैलिडेशन (उदा. @nestjs/config)। कोड से बाहर सीक्रेट्स।
2 PostgreSQL डेटाबेस
मॉडलिंग. ER मॉडल के अनुसार स्कीमा डिज़ाइन (भूमिकाओं के साथ उपयोगकर्ता, नज़दीकी परियोजनाएँ, स्वीकृति/AI प्रवाह के साथ समाचार, श्रेणियाँ, टिप्पणियाँ, मीडिया)। स्कीमा वर्ज़निंग के लिए माइग्रेशन।
इंडेक्स. फॉरेन की, तारीखों और खोज/फ़िल्टर फ़ील्ड पर इंडेक्स श्रेणी के अनुसार समाचार सूचियों के लिए।
ऑप्टिमाइज़ेशन. कुशल क्वेरी, N+1 से बचाव; सूचियों में पेजिनेशन; ज़रूरत पड़ने पर एक्ज़िक्यूशन प्लान समीक्षा।
3 Redis: कैश और क्यू
कैश. TTL और सामग्री बनाने/अपडेट करने पर इनवैलिडेशन रणनीति के साथ रिस्पॉन्स कैश (समाचार सूचियाँ, प्रोफ़ाइल) के लिए Redis का उपयोग।
क्यू. बैकग्राउंड जॉब के लिए Redis के साथ BullMQ: AI सत्यापन, नोटिफिकेशन भेजना, छवि प्रोसेसिंग। API से डिकपल्ड वर्कर्स (समान NestJS रनटाइम)।
4 REST API और सुरक्षा
REST डिज़ाइन. स्पष्ट रिसोर्स (समाचार, नज़दीकी परियोजनाएँ, श्रेणियाँ, उपयोगकर्ता, स्वीकृति), सही HTTP कोड, API वर्ज़निंग (उदा. /api/v1/)। Swagger/OpenAPI के साथ डॉक्यूमेंटेशन।
वैलिडेशन और सैनिटाइज़ेशन. class-validator और class-transformer के साथ DTO, इंजेक्शन से बचने के लिए इनपुट सैनिटाइज़ेशन। पब्लिक एंडपॉइंट पर थ्रॉटलिंग (रेट लिमिटिंग)।
सुरक्षा. सुरक्षा हेडर (CORS, Helmet), बैकएंड पर लागू OWASP सर्वोत्तम प्रथाएँ।
AI सत्यापन. असत्यापित उपयोगकर्ताओं द्वारा भेजे गए समाचारों की समीक्षा के लिए AI प्रोवाइडर (टोकन) के साथ एकीकरण; परिणाम स्टेट फ़्लो में संग्रहीत और स्वीकृति में प्रशासक के लिए उपलब्ध।
5 JWT प्रमाणीकरण
टोकन. एक्सेस टोकन (कम अवधि) और रिफ्रेश टोकन (refresh_tokens में संग्रहीत, वैकल्पिक रोटेशन)। लॉगिन, रिफ्रेश और लॉगआउट एंडपॉइंट।
रूट सुरक्षा. गार्ड/मिडलवेयर जो समाचार, श्रेणियों और उपयोगकर्ता रिसोर्स तक पहुँच के लिए JWT और भूमिका/अनुमति वैलिडेट करते हैं।
6 फ़ाइल संग्रहण (S3 या समकक्ष)
स्टोरेज सेवा. समाचार और नज़दीकी परियोजनाओं की छवियों और अनुलग्नकों के लिए S3 (या संगत) के साथ एकीकरण; पॉलिमॉर्फिक media टेबल (समाचार, परियोजना)।
प्रवाह. साइन्ड अपलोड या API के ज़रिए, BD में URL संग्रहण, हटाने की नीति और सिस्टम के बाकी हिस्सों के साथ अनुमति संगत।
7 टेस्टिंग (यूनिट और इंटीग्रेशन)
यूनिट. रिपॉज़िटरी और बाहरी डिपेंडेंसी के मॉक के साथ सेवाओं, वैलिडेटर और बिज़नेस लॉजिक के टेस्ट (Jest)।
इंटीग्रेशन. टेस्ट BD और Redis या कंटेनर के साथ महत्वपूर्ण एंडपॉइंट के टेस्ट (ऑथ, समाचार, परियोजना, स्वीकृति प्रवाह, AI सत्यापन)। हेक्सागोनल कोर और अडैप्टर्स के लिए न्यूनतम कवरेज।
8 CI/CD और डेप्लॉयमेंट
CI. GitHub Actions (या समकक्ष): हर PR पर lint, टेस्ट और बिल्ड। मर्ज से पहले हरी चेक की माँग करने वाली ब्रांच सुरक्षा।
CD. Dokku के साथ डेप्लॉय: सर्वर पर git push, Node बिल्डपैक, Procfile, PostgreSQL और Redis लिंक्ड (ऐड-ऑन या बाहरी सेवाएँ)। Dokku में वेरिएबल और सीक्रेट; Dokku सर्वर पर डेप्लॉय के लिए GitHub Actions के साथ वैकल्पिक पाइपलाइन।
9 डॉक्यूमेंटेशन और हस्तांतरण
डॉक्यूमेंटेशन. लोकल सेटअप, आवश्यक वेरिएबल और टेस्ट चलाने का तरीका के साथ README। स्टेजिंग एन्वायरनमेंट में एक्सेसिबल डॉक्यूमेंटेड API (Swagger/OpenAPI)।
हस्तांतरण. व्यवस्थित रिपॉज़िटरी, कमिट और PR कन्वेंशन लागू, और परियोजना पूर्णता तक स्वायत्त रूप से काम करने की क्षमता।

सारांश

परियोजना एक हाइब्रिड प्लेटफ़ॉर्म: सोशल नेटवर्क और अख़बार है। उपयोगकर्ता नज़दीकी परियोजनाएँ अपलोड करते हैं और समाचार बना सकते हैं; सत्यापित पत्रकार सीधे प्रकाशित करते हैं, और अन्य उपयोगकर्ता 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 सत्यापन तथा स्वीकृति फ़ील्ड शामिल हैं।