API
ChurchApps API एक मॉड्यूलर मोनोलिथ है -- एक ही कोडबेस जो छह डेटा मॉड्यूल की सेवा करता है, जिनमें से प्रत्येक की अपनी डेटाबेस है। यह आर्किटेक्चर आपको माइक्रोसर्विसेज़ के संगठनात्मक लाभ (स्पष्ट सीमाएँ, स्वतंत्र डेटा स्टोर) एकल डिप्लॉयमेंट की परिचालन सरलता के साथ देता है।
मॉड्यूल
| मॉड्यूल | उद्देश्य |
|---|---|
| Membership | लोग, समूह, परिवार, अनुमतियाँ |
| Attendance | सेवाएँ, सत्र, चेक-इन रिकॉर्ड |
| Content | पेज, सेक्शन, एलिमेंट, स्ट्रीमिंग |
| Giving | दान, फंड, भुगतान प्रोसेसिंग |
| Messaging | बातचीत, सूचनाएँ, ईमेल |
| Doing | कार्य, योजनाएँ, असाइनमेंट |
टेक स्टैक
- Runtime: Node.js 22.x के साथ TypeScript (ES modules)
- Framework: Express
- Dependency Injection: Inversify (डेकोरेटर-आधारित राउटिंग)
- Database: MySQL -- प्रति मॉड्यूल एक डेटाबेस, प्रत्येक का अपना कनेक्शन पूल
- Auth:
CustomAuthProviderके माध्यम से JWT-आधारित प्रमाणीकरण - Deployment: Serverless Framework v3 के माध्यम से AWS Lambda
पोर्ट
| प्रोटोकॉल | पोर्ट | विवरण |
|---|---|---|
| HTTP | 8084 | मुख्य REST API |
| WebSocket | 8087 | रीयल-टाइम सॉकेट कनेक्शन |
Lambda फंक्शन
जब AWS पर डिप्लॉय किया जाता है, तो API छह Lambda फंक्शन के रूप में चलता है:
web-- सभी HTTP अनुरोधों को संभालता हैsocket-- WebSocket कनेक्शन प्रबंधित करता हैtimer15Min-- ईमेल सूचनाओं के लिए हर 30 मिनट में चलता है (नाम ऐतिहासिक है)timerMidnight-- डाइजेस्ट ईमेल और रखरखाव कार्यों के लिए प्रतिदिन चलता हैtimerScheduledTasks-- नियत ऑटोमेशन और अतिदेय वर्कफ़्लो प्रोसेसिंग के लिए प्रतिदिन चलता हैtimerWebhooks-- कतारबद्ध आउटबाउंड वेबहुक डिलीवर करने के लिए हर मिनट चलता है
साझा लाइब्रेरी
API दो साझा ChurchApps पैकेजों पर निर्भर करता है:
@churchapps/helpers-- आधारभूत उपयोगिताएँ (DateHelper, ApiHelper, आदि)@churchapps/apihelper-- Express सर्वर उपयोगिताएँ जिसमें auth, database helpers, और AWS एकीकरण शामिल हैं
जानकारी
API ES modules का उपयोग करता है (package.json में "type": "module")। सुनिश्चित करें कि आपके imports ES module सिंटैक्स का उपयोग करते हैं।
इस सेक्शन में
- Local Setup -- API को स्थानीय रूप से क्लोन करें, कॉन्फ़िगर करें, और चलाएँ
- Database -- प्रति-मॉड्यूल डेटाबेस आर्किटेक्चर, स्कीमा स्क्रिप्ट, और डेटा एक्सेस पैटर्न
- Module Structure -- कंट्रोलर, रिपॉज़िटरी, मॉडल, और प्रमाणीकरण
- API Keys -- स्क्रिप्ट और कनेक्टर के लिए व्यक्तिगत एक्सेस टोकन
- Connected Apps (OAuth) -- थर्ड-पार्टी ऐप्स के लिए मल्टी-टेनेंट OAuth फ्लो
- Webhooks -- बाहरी सिस्टम को इवेंट सूचनाएँ पुश करें
- MCP Server -- Model Context Protocol एंडपॉइंट जो API को AI असिस्टेंट के सामने उजागर करता है
- Endpoint Reference -- सभी मॉड्यूल के लिए संपूर्ण REST API दस्तावेज़ीकरण