Central hub for all 5 content types — Vlogs, Books & PDFs, Written Posts, Research Papers, and Educational Videos. Auto-counts stats from all JSON files simultaneously using Promise.all.
৫ ধরনের content-এর hub। সব JSON থেকে auto-count হয়। প্রতিটি type-এর separate listing + detail + viewer।
The hub page (hub.html) shows 5 content type cards. Each card displays a live count fetched from its JSON file. All 5 fetches run simultaneously with Promise.all — no blocking.
Hub page-এ ৫টি content card। প্রতিটি JSON থেকে count fetch হয়। Promise.all দিয়ে একসাথে।
Books section has a sidebar filter (by category/subject), 3D flip book card hover effect, and an inline PDF reader. Password-protected PDFs open with a password dialog using pdf.js.
Books-এর sidebar filter, 3D flip card hover, inline PDF reader। Password-protected PDF-এ password dialog আসে।
Two video sections — Vlogs and Educational. Uses YouTube Data API to sync video counts and metadata. Thumbnails load from YouTube CDN. Click opens YouTube in new tab or inline player.
Vlogs + Educational Videos — YouTube API থেকে data sync হয়। Thumbnail YouTube CDN থেকে load হয়।
offline-content-manager.js caches video list for offline browsingBlog posts are bilingual (Bangla + English). Stored as markdown files, loaded and rendered using marked.js. Each post has a reading time estimate, tags, and share options.
Blog post Bangla + English-এ লেখা। Markdown file load করে marked.js দিয়ে render করে।
| JSON File | Content Type | Structure |
|---|---|---|
| Content Storage/vlogs/vlogs.json | Vlogs | Array of {title, youtubeId, date, tags, description} |
| Content Storage/books-pdfs/books.json | Books & PDFs | Array of {title, author, category, pages, filePath, passwordProtected} |
| Content Storage/written-posts/posts.json | Written Posts | Array of {title, lang, tags, date, mdFile, readingTime} |
| Content Storage/research-papers/papers.json | Research Papers | Array of {title, journal, year, abstract, filePath} |
| Content Storage/educational-videos/videos.json | Educational | Array of {title, youtubeId, playlist, level, duration} |