सामग्री पर जाएं
TubePress — मुफ़्त, स्व-होस्टेड & सक्रिय रूप से अनुरक्षित
डेवलपर संदर्भ

आर्किटेक्चर

कोर लेआउट, अनुरोध जीवनचक्र और TubePress द्वारा अपनाई गई नो-फ्रेमवर्क परंपराएँ।

TubePress एक जानबूझकर सरल सॉफ़्टवेयर है। इसमें कोई फ्रेमवर्क, कोई dependency-injection कंटेनर और कोई build step नहीं है — केवल स्टैटिक क्लासेज़ का उपयोग करने वाला सुव्यवस्थित, आधुनिक PHP है। यह पेज बताता है कि सभी हिस्से एक साथ कैसे जुड़ते हैं ताकि आप आत्मविश्वास के साथ CMS को विस्तारित कर सकें और ठीक से जान सकें कि आपका कोड कहाँ है।

डिज़ाइन दर्शन

तीन विचार पूरे कोडबेस को आकार देते हैं:

  • कोई फ्रेमवर्क नहीं। कस्टम स्टैटिक क्लासेज़ के साथ शुद्ध PHP। कोई Composer रनटाइम डिपेंडेंसी नहीं जो टूट सके और PHP के अलावा कुछ भी सीखने की ज़रूरत नहीं।
  • एक निश्चित core, मुफ़्त add-ons। core अपडेट करने योग्य है और इसे कभी सीधे संपादित नहीं करना चाहिए। आप जो भी कस्टमाइज़ करते हैं वह themes, plugins या settings में रहता है।
  • स्केल करने और सस्ती होस्टिंग पर काम करने के लिए बनाया गया। भारी काम को chunks में विभाजित किया जाता है, और एक built-in pseudo-cron का मतलब है कि कोई सिस्टम crontab आवश्यक नहीं है।

डायरेक्टरी लेआउट

रिपॉज़िटरी core (निश्चित, अपडेट योग्य) को add-ons (उपयोगकर्ताओं द्वारा इंस्टॉल और हटाए गए) से अलग करती है।

CORE — never modified by themes/plugins, replaced by updates
  config/            App config, DB config, install marker
  src/Core/          App, Database, Router, Pagination, CronManager,
                     and the managers (Seo, Transcode, Update, …)
  src/Auth/          Auth, Gate (permissions)
  src/Models/        Video, Category, Tag, Performer, Channel,
                     Comment, Page, User, Setting, Favorite, History
  src/Admin/         Admin CRUD controllers
  src/Front/         Public-facing controllers
  src/Install/       InstallController, Migrator
  src/Helpers/       Format, FileUpload, Sanitizer, Slug, SEO,
                     Player, RateLimiter, ImpressionTracker
  src/Plugin/        HookSystem, PluginInterface, PluginManager
  src/Theme/         ThemeManager, ThemeRenderer
  sql/               Numbered migrations (001_…sql → 0xx_…sql)
  templates/admin/   Admin panel templates (layout + partials)
  templates/install/ Install wizard templates
  public/            Web root — index.php, uploads/, symlinks
  cron/              Optional CLI scripts for a system crontab

ADD-ONS — installable / removable by users
  themes/            Theme directories (active: "simply")
  plugins/           Plugin directories (agegate, backup, ctr)
  lang/              Translation files (en, fr, de, es, ar, …)
कस्टमाइज़ करने के लिए core को कभी संपादित न करें। src/, config/, sql/ या templates/ के अंतर्गत कुछ भी एक अपडेट द्वारा ओवरराइट किया जा सकता है। अपने परिवर्तनों को एक theme या plugin में रखें ताकि वे बचे रहें।

रिक्वेस्ट लाइफसाइकिल

हर रिक्वेस्ट उसी क्रम में public/index.php से होकर गुज़रती है:

  1. PHP version guard। config/php-guard.php पहले चलता है — एक parse-safe गेट जो आधुनिक syntax लोड होने से पहले असमर्थित PHP version पर boot रोकता है।
  2. Bootstrap। config/app.php autoloading, session और core सेवाएँ सेट करता है।
  3. इंस्टॉल जाँच। यदि App::isInstalled() false है (कोई config/installed.php नहीं), तो रिक्वेस्ट को इंस्टॉल विज़ार्ड पर रूट किया जाता है और कुछ और लोड नहीं होता।
  4. Route रजिस्ट्रेशन। Admin, API और front controllers प्रत्येक स्टैटिक ::routes() मेथड के माध्यम से अपने routes रजिस्टर करते हैं।
  5. Dispatch। Router::dispatch() URL को मैच करता है और controller मेथड को कॉल करता है।
  6. Render। Admin actions templates/admin/* रेंडर करते हैं; front actions ThemeRenderer::render() के माध्यम से सक्रिय theme रेंडर करते हैं।
  7. Post-render कार्य। Impressions flush होते हैं और CronManager::run() किसी भी due tasks को fire करता है।

Front page routes (/{slug} स्टैटिक पेजों के लिए catch-all) अंत में रजिस्टर किए जाते हैं, इसलिए वे वास्तविक routes को कभी छाया नहीं देते।

Core की परंपराएँ

अवधारणापरंपरा
ControllersAdminXxxController::routes() / FrontXxxController::routes() routes रजिस्टर करते हैं; methods रिक्वेस्ट हैंडल करते हैं।
Modelsस्टैटिक methods: Video::find($id), Video::all($filters), Video::create($data)
DatabaseDatabase::fetchOne(), fetchAll(), insert(), update(), delete(), count(), transaction()
RouterRouter::get(), Router::post(), Router::param('name'), Router::redirect()
Admin templatesRouter::render('admin/videos', […])templates/admin/videos.php (layout.php + एक _videos.php partial लोड करता है)।
Front templatesThemeRenderer::render('home', […]) → सक्रिय theme template + इसका layout.php
Migrationssql/NNN_name.sql, इंस्टॉल और अपडेट के दौरान Migrator::run() द्वारा स्वचालित रूप से चलाया जाता है।
HooksHookSystem::doAction('event') और HookSystem::applyFilter('filter', $value)

वेब सर्वर समर्थन

TubePress दोनों Apache और Nginx पर चलता है:

  • Apache.htaccess फ़ाइलें URL rewriting और डायरेक्टरी सुरक्षा संभालती हैं।
  • Nginxalias directives assets सर्व करते हैं और deny all नियम संवेदनशील paths की सुरक्षा करते हैं।
  • Symlinkspublic/themes → ../../themes और public/templates → ../../templates theme और admin assets को एक्सपोज़ करते हैं जबकि PHP सोर्स को web root के बाहर रखते हैं।

web root हमेशा public/ है। सब कुछ संवेदनशील — config/, src/, sql/, storage/ — इसके बाहर होता है और सर्वर स्तर पर अतिरिक्त रूप से ब्लॉक किया जाता है।

कहाँ कस्टमाइज़ करें

आप चाहते हैं…यहाँ करें…
लुक और लेआउट बदलेंएक theme (या बिना कोड के बदलाव के लिए Appearance settings)
कोई फीचर या इंटीग्रेशन जोड़ेंactions & filters का उपयोग करके एक plugin
बिना कोड के व्यवहार बदलेंSettings
शेड्यूल किया हुआ काम जोड़ेंCronManager, एक plugin से

अगले कदम

अभी भी अटके हैं?

अपने डैशबोर्ड से टिकट खोलें और हमारी टीम आपकी मदद करेगी।

लाइव डेमो आज़माएं → TubePress डाउनलोड करें →