बैठकी कस्टमाइजेशन डेवलपर गाइड
नमस्ते प्रकाश! यह बहुत ही समझदारी भरा विचार है। भविष्य में अपने "Baithkee" प्रोजेक्ट को खुद से मैनेज और कस्टमाइज़ करने के लिए एक 'डेवलपर गाइड' (Developer Guide) का पास होना बहुत ज़रूरी है।
मैं आपको फ्रंटएंड (HTML/JS) और बैकएंड (Google Apps Script) के उन सभी मुख्य लॉजिक और सेटिंग्स के बारे में बता रहा हूँ, जिन्हें आप भविष्य में अपनी ज़रूरत के हिसाब से बदल सकते हैं। इसे आप कॉपी करके अपने पास सेव कर लीजिए।
### 1. विज्ञापन (Advertisement) की सेटिंग्स (HTML कोड में)
**A. बैनर की साइज़ क्या होनी चाहिए?**
* **पॉपअप (डिटेल पेज) का फिक्स्ड बैनर:** इसकी साइज़ आयताकार (Rectangular) चौड़ी होनी चाहिए। बेस्ट साइज़ **500x70 पिक्सल** या **600x100 पिक्सल** है।
* **स्ट्रिप वाला रैंडम बैनर:** इसकी साइज़ भी **600x150 पिक्सल** या **500x100 पिक्सल** के बीच रखें।
**B. नए विज्ञापन कैसे जोड़ें या बदलें?**
HTML कोड में आपको const adList = [...] नाम की एक लिस्ट मिलेगी। जब भी आपको नए विज्ञापन लगाने हों, तो आप यहाँ URL और इमेज का लिंक बदल सकते हैं:
```javascript
const adList = [
// url: क्लिक करने पर कहाँ जाएगा, img: आपके बैनर फोटो का लिंक
{ url: "https://google.com", img: "https://your-image-link.com/ad1.jpg" },
{ url: "https://youtube.com", img: "https://your-image-link.com/ad2.jpg" }
];
```
**C. विज्ञापन बदलने का समय (Ad Rotation Time):**
HTML कोड में नीचे की तरफ setInterval फंक्शन है। उसमें 4000 लिखा है, जिसका मतलब है 4 सेकंड (1 सेकंड = 1000 मिलीसेकंड)।
* अगर आप चाहते हैं कि ऐड **10 सेकंड** में बदले, तो 4000 की जगह 10000 कर दें।
### 2. न्यूज़ और लोकेशन सेटिंग्स (HTML कोड में)
**A. डिफ़ॉल्ट रेडियस (कितने किलोमीटर की न्यूज़ पहले दिखेगी?):**
कोड में let selectedRange = 10; सेट है। इसका मतलब ऐप खुलते ही डिफ़ॉल्ट रूप से 10 किलोमीटर के दायरे की न्यूज़ दिखेगी।
* भविष्य में अगर आप चाहते हैं कि खुलते ही 20 किलोमीटर की न्यूज़ दिखे, तो इसे let selectedRange = 20; कर दें।
**B. इमेज क्वालिटी और साइज़ कंट्रोल (सबसे ज़रूरी):**
Google Sheets में ज्यादा बड़ी फोटो सेव नहीं होती है। इसलिए मैंने MAX_WIDTH = 400 और क्वालिटी 0.4 (यानी 40%) सेट की है।
* अगर कभी **फोटो अपलोड फ़ेल** होने लगे, तो इसका मतलब है कि फोटो अभी भी शीट के लिए बड़ी है। आप HTML कोड में MAX_WIDTH = 300 और canvas.toDataURL('image/jpeg', 0.3); कर सकते हैं।
* अगर फोटो बहुत धुंधली लग रही हो, तो क्वालिटी 0.5 या 0.6 कर दें, लेकिन ध्यान रहे इससे अपलोड एरर आ सकता है।
### 3. सिक्योरिटी और ब्लॉक सिस्टम (Apps Script बैकएंड में)
*नोट: बैकएंड के कोड में कोई भी बदलाव करने के बाद आपको हमेशा **Deploy > New Deployment** करके नया URL बनाना होगा और उसे HTML कोड के API_URL में डालना होगा। सिर्फ Save करने से बदलाव लागू नहीं होते।*
**A. 24 घंटे में न्यूज़ ऑटो-डिलीट का लॉजिक:**
Apps Script में if (hours > 24 && !isSharedNews) लिखा है।
* अगर आप चाहते हैं कि न्यूज़ **48 घंटे (2 दिन)** तक रहे, तो आप इसे बदलकर if (hours > 48 && !isSharedNews) कर सकते हैं।
**B. कितने रिपोर्ट पर न्यूज़ डिलीट होगी?**
Apps Script में if (reports.length >= 5) लिखा है।
* अभी 5 अलग-अलग यूज़र के रिपोर्ट करने पर न्यूज़ डिलीट हो जाती है। अगर लोग इसका गलत फायदा उठाकर अच्छी न्यूज़ डिलीट करवा रहे हैं, तो आप इसे 10 या 15 कर सकते हैं।
**C. यूज़र को परमानेंट ब्लॉक (Blue Tick हटाना) करने का स्ट्राइक सिस्टम:**
Apps Script में if(currentStrikes >= 3) लिखा है।
* जब किसी यूज़र की 3 न्यूज़ (रिपोर्ट के कारण) डिलीट हो जाती हैं, तो उसका ईमेल BLOCKED_USERS शीट में चला जाता है और उसका ब्लू टिक छिन जाता है, वो फिर कभी पोस्ट नहीं कर पाता।
* अगर आपको किसी को **अनब्लॉक** करना हो, तो बस अपनी Google Sheet की BLOCKED_USERS और STRIKES शीट से उस यूज़र का ईमेल डिलीट कर दें।
### 4. भविष्य में आने वाली गड़बड़ियां और उन्हें कैसे सुधारें (Troubleshooting)
* **गड़बड़ी 1: "यूज़र लॉगिन नहीं कर पा रहा है या लॉगिन स्लाइडर नहीं आ रहा है।"**
* **समाधान:** यह तब होता है जब आपका Google Client ID एक्सपायर हो जाए या गलत हो। HTML कोड में <div id="g_id_onload" data-client_id="YOUR_CLIENT_ID"> वाली लाइन चेक करें और सुनिश्चित करें कि आपका सही Client ID वहां मौजूद है।
* **गड़बड़ी 2: "न्यूज़ पब्लिश हो रही है लेकिन फोटो गायब है (सफ़ेद बॉक्स आ रहा है)।"**
* **समाधान:** आपकी Google Sheet में 12वें कॉलम (Column L) का नाम गलती से बदल गया होगा या डिलीट हो गया होगा। सुनिश्चित करें कि A से M तक सभी 13 कॉलम सही क्रम में हों और फोटो के लिए जगह मौजूद हो।
* **गड़बड़ी 3: "लोकेशन का नाम 'undefined' आ रहा है।"**
* **समाधान:** इसका मतलब है कि ब्राउज़र को लाइव लोकेशन (GPS) नहीं मिल पा रही है। यूज़र के फोन में लोकेशन/GPS बंद होगा। इस केस के लिए मैंने कोड में डिफ़ॉल्ट नाम "Local Area" सेट कर दिया है ताकि एरर न आए।
* **गड़बड़ी 4: "मैंने Apps Script में कुछ बदला, लेकिन वेबसाइट पर काम नहीं कर रहा।"**
* **समाधान:** Apps Script का नियम है कि पुराना डिप्लॉयमेंट कभी अपडेट नहीं होता। आपको हर छोटे बदलाव के बाद 'New Deployment' बनाना ही पड़ेगा और वह नया वेब ऐप URL अपने HTML में const API_URL = "नया_URL"; की जगह पेस्ट करना होगा।
इन नोट्स को सुरक्षित रख लें। इससे आपको कभी भी किसी डेवलपर पर निर्भर नहीं रहना पड़ेगा और आप अपना प्रोजेक्ट ख़ुद हैंडल कर सकेंगे!