कल रात 10 बजे मेरे पास एक Directus डिप्लॉयमेंट को एक सेल्स एसेट में बदलने का एक अस्पष्ट विचार था। आज सुबह 7 बजे मेरे पास Railway पर एक वर्किंग admin था, तीन लाइव डैशबोर्ड, पाँच पोस्ट्स वाला एक पब्लिक डेमो ब्लॉग, एक 2,400-शब्दों का सेल्स पिलर जो पूरे शेप को एक सेवा के रूप में पिच करता है, और तीन प्रोडक्शन बग्स जिन्हें मैंने मध्यरात्रि को पकड़ और ठीक किए। कुल इंफ्रास्ट्रक्चर लागत: $5 प्रति महीना। कुल समय: लगभग नौ घंटे का फोकस्ड वर्क जो एक रात और एक सुबह में बँटा हुआ था।
यह केस स्टडी है। क्या बनाया गया, क्या टूटा, मैंने क्या सीखा, और इस बिल्ड के पीछे की वास्तविक संख्याएँ। अगर आप मूल्यांकन कर रहे हैं कि क्या अपने व्यवसाय के लिए एक समान प्रोजेक्ट कमीशन करना चाहिए, तो नीचे दिए गए डेटा पॉइंट्स सबसे ईमानदार संदर्भ हैं जो मैं दे सकता हूँ।
मैंने क्या करना निर्धारित किया
तीन लक्ष्य, प्राथमिकता के क्रम में।
पहला, Directus को मेरे मौजूदा Supabase Postgres डेटाबेस से जुड़ा हुआ डिप्लॉय करना। लक्ष्य: एक जेनेरिक CRUD admin जो मेरे कस्टम Astro admin के समान डेटा को मैनेज करता है। कारण: कस्टम admin को बदलना नहीं (जिसमें Monday-स्टाइल की इनलाइन एडिटिंग है जो टीम को पसंद है), बल्कि वह ऑपरेशंस लेयर जोड़ना जो कस्टम admin के पास नहीं है। बल्क एडिट्स, सेव किए गए व्यूज़, रोल-बेस्ड परमिशंस, स्कीमा ब्राउज़र, Insights डैशबोर्ड्स।
दूसरा, वह डैशबोर्ड सेट करो जिन्हें मैं छह महीने से चाहता रहा हूँ। तीन बोर्ड: content pipeline (ब्लॉग publishing velocity, topic queue depth), SEO health (rank positions, AI Overview presence rate, intent distribution), tool usage (AEO tool searches, brand-name tool searches, advisor usage)। ठोस संख्याएं जो मैं सोमवार को एक नज़र में देख सकूँ ताकि पता चल जाए कि इंजन चल रहा है।
तीसरा, पूरे बिल्ड को एक sales asset में बदल दो। जो Directus admin मैं अपने लिए डिप्लॉय करता हूँ वह बिल्कुल वही है जो मैं किसी क्लाइंट के लिए डिप्लॉय करता। तो डिप्लॉयमेंट खुद ही demo बन जाती है। एक संभावित क्लाइंट मेरे sales page पर एक बटन क्लिक करता है, एक असली Directus admin में लैंड करता है जो real data से भरा हुआ है, rich-text editor में टाइप करता है, देखता है कि saved views कैसे काम करते हैं, फिर वापस आकर एक कॉल बुक करता है। कुल demo-loop friction: page-land से live-editor तक तकरीबन पंद्रह सेकंड।
घंटा 0 से 4: डिप्लॉय
Railway hobby plan, official Directus template, one-click deploy। टेम्पलेट Directus के साथ Redis, एक bundled PostGIS database और एक S3-compatible storage bucket के साथ आता है। कुल deploy time जिसमें configuration भी शामिल है: blank Railway account से logged-in admin तक 35 मिनट।
पहली surprise: Directus template ने अपने database connection को reference variables के ज़रिए wire किया था जो bundled PostGIS service की ओर इशारा करते हैं, individual host/port/user/password fields के ज़रिए नहीं। Directus को अपने external Supabase Postgres की ओर redirect करने के लिए, मुझे connection-string variable (DB_CONNECTION_STRING) खोजना था और अपना Supabase Session pooler URL credentials के साथ paste करना था।
दूसरी surprise: मेरे Supabase database password में "#" character था। Postgres connection string में %23 के रूप में URL-encoded। Encoding के बिना, URL parser string को # पर काट देता है क्योंकि hash का मतलब है URL fragment। Directus को ECONNREFUSED::1:5432 log हुआ क्योंकि जब connection string malformed था तो यह localhost पर fallback हो गया। आधे घंटे की confus के बाद, मैंने password को alphanumeric-only में rotate किया और connection landing हुआ।
जैसे ही Directus जुड़ा, मेरे Supabase database के सभी 12 tables Directus Collections के रूप में auto-import हो गए। Zero schema migration, zero data movement, zero downtime। Custom Astro admin और Directus admin दोनों एक ही data को देखते हैं, दोनों इसमें write करते हैं, दोनों तुरंत एक दूसरे की changes को reflect करते हैं।
घंटा 4 से 12: configure, configure, configure
बड़ा काम deployment नहीं था। यह Directus को एक polished admin की तरह behave करवाने के लिए field-level configuration था, raw database browser की जगह। हर column को interface metadata, display formatting, sort order, width, group और visibility decisions चाहिए। Default Directus सब कुछ दिखाता है; polished version केवल वही दिखाता है जो team को चाहिए।
इस phase से तीन observations।
Directus admin UI से क्लिक करके यह काम करना slow है। हर field के लिए करीब दो मिनट का समय, बारह collections में नब्बे से ज़्यादा fields, कुल क्लिक-time तीन घंटे के करीब। मैंने इसे एक browser-driving AI agent (Claude in Chrome) को सौंपा जिसने Directus REST API पर bulk configuration के लिए switch किया। Agent ने PATCH /fields/{collection}/{field} calls को sequence में post किया, full meta object को payload के रूप में भेजा। हर collection के लिए तीन मिनट की जगह चालीस मिनट का समय लगा। पूरा config phase तीन घंटे से compress होकर चालीस मिनट में आ गया।
REST API approach ने मुझे reproducibility भी दिया। हर PATCH एक curl-equivalent है जिसे मैं fresh Directus deployment पर फिर से चला सकता हूं और same configuration restore कर सकता हूं। Configuration effectively code है, न कि UI clicks का fragile pile।
इस phase के आखिरी quarter में तीनों Insights dashboards build किए। हर panel एक JSON config है जो POST /panels को भेजी जाती है। Dashboards field metadata के जगह आते ही करीब बीस मिनट में तैयार हो गए। तीन boards, छह panels, real data rendering। जिन numbers पर मैं छह महीने से guess कर रहा था, वे finally screen पर नजर आ गए।
Hour 12 से 18 तक: तीनों bugs जिन्होंने सबसे ज़्यादा समय लिया
कोई भी build तब तक real नहीं है जब तक production में टूट न जाए। तीनों bugs तब surface हुए जब मैंने main को ship किया और live site को refresh किया।
Bug 1: Spline scene CSP से blocked, तीनों stacked causes के साथ
मैंने एक 3D-first web pillar भी ship किया था Spline NEXBOT robot hero के साथ। Deploy के बाद, robot production पर invisible था लेकिन locally काम कर रहा था। Sequence में तीनों stacked issues थे।
पहला: define:vars का use करते हुए script tag को Astro ने inline किया, जिसका मतलब Vite ने @splinetool/viewer के dynamic import को bundle नहीं किया, जिसका मतलब bare module specifier browser में unresolvable था। दूसरा: वह ठीक करने के बाद, spline-viewer element एक parent के अंदर था जिसके पास upgrade time पर hidden attribute थी, इसलिए Lit custom element 0x0 dimensions के साथ initialise हुआ और कभी recover नहीं हुआ। तीसरा: वह ठीक करने के बाद, Spline viewer अपना modelling WASM unpkg.com से scene-load time पर fetch करता है, जिसे मेरे CSP ने whitelist नहीं किया था। हर fix ने अगला bug surface किया। कुल debug time: नब्बे मिनट।
Production-only debugging अपना ही एक discipline है। Dev server bare imports को production build से अलग तरीके से resolve करता है। Dev environment का एक ज़्यादा permissive default CSP है। दोनों bugs बिना actual production deploy के surface करना impossible था। मेरा takeaway: real environment में जल्दी ship करो, भले ही locally सब ठीक काम कर रहा हो।
Bug 2: AI Overview boolean और Postgres avg()
एक Insights पैनल यह दिखाना चाहता था कि "tracked SERP runs का कितना प्रतिशत एक AI Overview सामने लाता है।" seo_serp_runs टेबल में ai_overview_present नाम का एक boolean कॉलम है। सहज सोच: उस कॉलम का avg() लें, 100 से गुणा करें, प्रतिशत के रूप में दिखाएँ।
Postgres को boolean पर avg() से त्रुटि आती है। यह फंक्शन उस type के लिए exist नहीं करता। कई workaround कोशिशें विफल रहीं: Directus एक "percentage" aggregate को expose नहीं करता, true की गिनती hardcoded denominator के साथ drift करती है जब ज्यादा rows आती हैं, query समय पर casting Insights पैनल options के through expose नहीं होती।
जो fix काम करा: ai_overview_present_int नाम का एक generated column जोड़ा जो case when ai_overview_present then 100 else 0 end के रूप में compute करता है। integer कॉलम पर avg() trivially काम करता है और सीधे प्रतिशत yield करता है। एक-लाइन SQL migration, शून्य application code change।
बग 3: CSP में image hosts
मैंने demo blog को पाँच Unsplash photo URLs से seed किया। ब्राउज़र ने उन्हें silently block कर दिया क्योंकि images.unsplash.com को img-src में whitelist नहीं किया गया था। public demo blog पर ठोस काले card images। मैंने Unsplash को CSP में जोड़ा, images render हुईं, फिर मुझे एहसास हुआ कि मैंने Supabase Storage में store की गई सभी images के लिए FAL use करने का अपना non-negotiable rule तोड़ दिया था।
सही fix: एक script जो हर demo_posts row खींचता है, FAL flux-pro/v1.1-ultra के via प्रति-category editorial photograph generate करता है, sharp को WebP पर quality 82 max-width 1600 पर re-encode करता है, एक public Supabase Storage bucket में upload करता है, featured_image को storage CDN URL पर update करता है। बीस-मिनट की build, पाँच FAL generations एक पाउंड से कम खर्च होते हैं। CSP से Unsplash को remove किया। Images अब मेरे अपने infrastructure में live हैं, कोई external dependencies नहीं, कोई CSP-update-per-host treadmill आगे नहीं।
घंटा 18 से 24: sales pillar
Directus working के साथ और demo blog सही render करते हुए, मैंने /solutions/headless-cms-and-admin-tools/ पर sales pillar लिखा। चार service tiers (CMS, internal ops admin, directories, bespoke), USD में मूल्य निर्धारण GBP brackets में, छह FAQs, WordPress और HubSpot और Notion और Airtable के विरुद्ध एक comparison table, गलत-shape clients को जल्दी disqualify करने के लिए एक "brief I will not take" section।
Pillar directly live demo से link करता है। जो prospects "OPEN THE EDITOR" click करते हैं वे actual Directus admin में land करते हैं displayed credentials के साथ जिन्हें वे paste करते हैं। कुछ सेकंड बाद वे एक real post को एक real editor में edit कर रहे होते हैं। demo loop पैंतालीस सेकंड है page-land से live editing तक।
pillar page पर कुल समय: नब्बे मिनट writing का plus तीस मिनट schema markup, internal links, और visual polish का। पैज खुद तीनों bugs में से दो से कम समय में बना।
संख्याएँ
बिल्ड कॉस्ट ब्रेकडाउन, क्योंकि यह केस-स्टडी पोस्ट है और यह वह सवाल है जो संभावित ग्राहक पूछेंगे।
Railway Hobby प्लान Directus + Redis + बकेट के लिए: $5 प्रति महीना, मासिक बिलिंग। पहले 30 दिन मुफ़्त।
Supabase Postgres: मौजूदा इंफ्रास्ट्रक्चर, कोई नई लागत नहीं। पहले से Pro प्लान का उपयोग कर रहा हूँ, डेटाबेस के लिए लगभग $25 प्रति महीना।
FAL API पाँच हीरो इमेजेस के लिए: एक पाउंड से कम, लगभग $1 USD।
DataForSEO 42 कीवर्ड्स को सर्च वॉल्यूम + इंटेंट + डिफिकल्टी के साथ बैकफिल करने के लिए: $0.04 कुल।
मेरा समय, शुरू से अंत तक बग्स और लेखन सहित: नौ घंटे की केंद्रित कार्य। मेरी कंसल्टिंग डे रेट लगभग $1,500 प्रति दिन पर, वह लगभग $1,700 अवसर लागत है।
काम करने वाली सेल्स एसेट को शिप करने के लिए कुल कैश आउटले: लगभग $6 मार्जिनल इंफ्रास्ट्रक्चर प्लस $1 API फीस। समय सहित कुल सच्ची लागत: लगभग $1,700।
संदर्भ तुलना: एक एजेंसी जो "हेडलेस CMS एडमिन टूल बिल्ड" एनगेजमेंट के लिए कोट दे रहा है, वह आमतौर पर समतुल्य स्कोप के लिए $8,000 से $15,000 USD चार्ज करेगा। मैं अपने खुद के सर्विस पेज पर $8,000 से $19,000 USD चार्ज कर रहा हूँ। कॉस्ट-टू-बिल्ड और प्राइस-टू-सेल के बीच का अंतर एजेंसी काम का पूरा आर्थिक इंजन है। केस स्टडी उस चीज का सबूत है कि कॉस्ट-टू-बिल्ड संख्या असली है।
यह एक संभावित ग्राहक को क्या साबित करता है
तीन चीजें, सभी अगले दस मिनट में सत्यापित की जा सकती हैं।
पहली बात, यह बिल्ड वास्तविक है। सेल्स पेज पर OPEN THE EDITOR बटन पर क्लिक करें। रिच-टेक्स्ट एडिटर में टाइप करें। एक पोस्ट शेड्यूल करें। डैशबोर्ड देखें। यह चीज़ मौजूद है। यह मॉकअप नहीं है, यह Figma फ़ाइल नहीं है, यह स्क्रीनशॉट नहीं है। यह वही सॉफ़्टवेयर है जो मैं आपके व्यवसाय के लिए डिप्लॉय करूँगा।
दूसरी बात, यह गति वास्तविक है। "अस्पष्ट विचार" से "प्रोडक्शन-डिप्लॉय किया गया सेल्स एसेट लाइव डेमो के साथ" तक चौबीस घंटे। क्लाइंट एनगेजमेंट इस गति से नहीं चलता क्योंकि क्लाइंट एनगेजमेंट में डिस्कवरी, डिज़ाइन रिव्यू, स्टेकहोल्डर अप्रूवल और सिक्योरिटी ऑडिट शामिल होते हैं। लेकिन अंतर्निहित बिल्ड वेलोसिटी यह निर्धारित करती है कि छः सप्ताह की टाइमलाइन ईमानदार है या आशावादी। चौबीस घंटे की सोलो बिल्ड मेहनत मोटे तौर पर स्टैंडर्ड एजेंसी एनगेजमेंट के तीन सप्ताह के बराबर है एक बार ओवरहेड को शामिल कर लिया जाए। यह गणित वही है जो छः से आठ सप्ताह की टियर-1 टाइमलाइन बनाता है।
तीसरी बात, ये फेलियर मोड्स वास्तविक हैं। तीन प्रोडक्शन बग्स को रियल टाइम में पकड़ा गया और ठीक किया गया। CSP इश्यूज़, डायनामिक-इम्पोर्ट बंडलिंग, जेनरेटेड-कॉलम अरिथमेटिक। ये वही बग्स हैं जो क्लाइंट एनगेजमेंट में सामने आते हैं। तथ्य यह है कि मैंने उन्हें एक लाइव साइट पर पकड़ा और हल किया, यह दक्षता का असली डेमो है। कोई भी पॉलिश किया गया केस स्टडी जिसमें कोई बग्स न हो, वह संदेहास्पद होता।
मैं क्या अलग करता
तीन छोटे विचार, उपयोगिता के क्रम में।
मैं Unsplash वर्कअराउंड से पहले FAL इमेज जेनरेशन स्क्रिप्ट से शुरू करता। CSP-अपडेट-फिर-रिवर्ट डांस ने दस मिनट की अनावश्यक मेहनत खर्च की। FAL इमेजेज़ के बारे में गैर-वार्ताकारी नियम इसी कारण से मौजूद है और मुझे इसे पहले सुनना चाहिए था।
मैं शुरुआत से ही Directus कॉन्फ़िगरेशन के लिए REST API अप्रोच का उपयोग करता, UI क्लिक-थ्रू करने की कोशिश करने की बजाय। एजेंट-ड्रिवन REST-कॉल सीक्वेंस तीन गुना तेज़ था और रिप्रोड्यूसेबल कॉन्फ़िगरेशन बनाता था। सीख़ Directus से परे सामान्यीकृत होती है: कोई भी एडमिन जो एक व्यापक REST API को एक्सपोज़ करता है, उसे अपने UI के बजाय उस API के माध्यम से कॉन्फ़िगर किया जाना चाहिए।
मैं केस-स्टडी पोस्ट जल्दी लिखता। यह पोस्ट बिल्ड के खत्म होने के लगभग बारह घंटे बाद लिखी जा रही है। जब तक मैं यह लिख रहा हूँ, कुछ फेलियर मोड्स पहले से ही मेमोरी से फीके पड़ रहे हैं। ईमानदार केस स्टडी वह है जो बिल्ड के साथ उसी दिन लिखी गई हो, जब तक बग्स अभी ताज़े हों ताकि उन्हें सटीकता से बताया जा सके।
अगला कहाँ जाएं
अगर आप यह मूल्यांकन कर रहे हैं कि आपकी कंपनी को एक समान बिल्ड कमीशन करना चाहिए या नहीं, तो डेमो लूप सबसे तेज़ रास्ता है एक उपयोगी जवाब तक। /solutions/headless-cms-and-admin-tools/ खोलें, डेमो बटन पर क्लिक करें, दिखाए गए क्रेडेंशियल्स से लॉगिन करें, पंद्रह मिनट क्लिक करते हुए बिताएँ। आखिर तक आपको स्पष्ट समझ हो जाएगी कि टूल का यह रूप आपकी टीम के लिए फिट करता है या नहीं।
अगर हाँ, तो उस पेज पर लिंक किए गए तीस मिनट की कॉल बुक करें। मुझे अपना मौजूदा स्टैक, अपनी टीम का आकार, अपना डेटा शेप बताएँ। कॉल के आखिर तक आपके पास एक टियर पिक, एक मूल्य रेंज, और एक डिलीवरी विंडो है। ज़्यादातर एनगेजमेंट जो मैं लेता हूँ वो छः से बारह सप्ताह चलते हैं $8,000 से $50,000 USD के बीच स्कोप के आधार पर। जिस आधे को मैं नहीं लेता, मैं उसे कॉल पर आपको बताता हूँ क्यों।
अगर आप पूरी सेल्स पिच चाहते हैं, तो पिलर पेज /solutions/headless-cms-and-admin-tools/ पर है। अगर आप सीधे लाइव डेमो पर जाना चाहते हैं, तो क्रेडेंशियल्स उस पेज पर हैं। अगर आप अगला केस स्टडी चाहते हैं, तो अगली ब्लॉग पोस्ट शायद या तो एक एशियन-कॉरिडोर मैन्युफैक्चरर बिल्ड के बारे में होगी या एक ही पैटर्न को एक अलग वर्टिकल में लागू किया गया। मुझे बताएँ कौन सा अधिक उपयोगी है।
