From cb36b4cd64f06f72c441b80c82087e5eb116e9da Mon Sep 17 00:00:00 2001 From: Tajim Date: Fri, 28 Aug 2026 20:09:56 +0600 Subject: [PATCH 1/2] Update static pages, policies, documentation and contributor guidelines --- CONTRIBUTING.md | 72 ++++-- README.md | 126 +++++----- docs/storage-cleanup.md | 26 ++- resources/js/components/Footer.vue | 8 +- resources/js/pages/ContributorGuide.vue | 7 +- resources/js/pages/legal/ContentPolicy.vue | 160 ++++++++----- resources/js/pages/legal/PrivacyPolicy.vue | 137 ++++++----- resources/js/pages/legal/TermsConditions.vue | 227 ++++++++++++++----- 8 files changed, 502 insertions(+), 261 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index df00fc4..83fa322 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Contributing to HSCStack -Thanks for your interest in HSCStack! This project is built by and for HSC students in Bangladesh, and we welcome help from fellow developers. +Thanks for your interest in HSCStack! This project is built by and for HSC & SSC students in Bangladesh, and we welcome help from fellow developers. ## Before You Start @@ -10,16 +10,21 @@ HSCStack's codebase is **not open for general, unsolicited pull requests**. To c 2. Once your application is reviewed and accepted, you'll be onboarded to the codebase. 3. After that, you're free to open issues, pick up tasks, and submit PRs following the workflow below. -If you're not yet a core developer but found a bug or have a suggestion, please [open a GitHub Issue](https://github.com/trtajim/hscstack/issues) instead — no membership required for that. +If you're not yet a core developer but found a bug or have a suggestion, please [open a GitHub Issue](https://github.com/hscstack/platform/issues) instead — no membership required for that. ## Tech Stack -| Layer | Technology | -|--------------|------------------------| -| Backend | Laravel (PHP) | -| Frontend | Vue.js via Inertia.js | -| Storage | Public file storage | -| Admin Panel | Built-in Laravel admin | +| Layer | Technology | +| ------------------ | ------------------------------------- | +| **Backend** | Laravel 12 (PHP) | +| **Frontend** | Vue 3 + TypeScript via Inertia.js v3 | +| **Styling** | Tailwind CSS v4 | +| **Realtime** | Pusher Channels + Laravel Echo | +| **Storage** | AWS S3 / Cloudflare R2 | +| **Auth** | Google OAuth 2.0 (Laravel Socialite) | +| **Analytics** | PostHog | +| **Permissions** | Spatie Laravel Permission | +| **PWA** | vite-plugin-pwa | ## Development Setup @@ -46,6 +51,15 @@ php artisan serve pnpm dev ``` +### Additional Setup (Optional) + +- **Google OAuth:** Configure `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET`, and `GOOGLE_REDIRECT_URI` in `.env` for authentication. +- **Pusher:** Configure `PUSHER_APP_ID`, `PUSHER_APP_KEY`, `PUSHER_APP_SECRET` in `.env` for live chat. +- **S3/R2 Storage:** Configure `AWS_*` or `CLOUDFLARE_*` keys for file uploads. +- **PostHog:** Configure `POSTHOG_*` keys for analytics. +- **YouTube Data API:** Configure `YOUTUBE_API_KEY` for playlist imports. +- **Short.io:** Configure `SHORT_IO_*` keys for URL shortening. + ## Workflow 1. Create a new branch off `main`: @@ -90,44 +104,54 @@ php artisan test General guidelines: - Follow existing Laravel conventions (FormRequests for validation, resource controllers, etc.). -- Keep Vue components under `resources/js/Pages` and `resources/js/Components` organized and reusable. +- Keep Vue components under `resources/js/pages/` and `resources/js/components/` organized and reusable. - Avoid passing non-database fields into mass assignment (`create()`/`update()`); validate and filter explicitly. - Keep PRs focused — one feature or fix per PR is easier to review. +- Use TypeScript types defined in `resources/js/types/` for all component props and API responses. +- Follow the existing cache invalidation pattern using Observers when adding new cacheable models. ## Project Structure ``` -hscstack/ +platform/ ├── app/ -│ ├── Models/ # Subject, Node, Resource models -│ ├── Http/Controllers/ # Web + Admin controllers -│ └── ... +│ ├── Models/ # Eloquent models (User, Subject, Node, Resource, Blog, etc.) +│ ├── Http/Controllers/ # Web + Admin + API controllers +│ ├── Mail/ # Mailable classes (Welcome, Notifications, Broadcasts) +│ ├── Observers/ # Cache invalidation observers +│ ├── Services/ # Business logic services +│ └── Console/Commands/ # Artisan CLI commands ├── resources/ │ ├── js/ -│ │ ├── Pages/ # Inertia Vue pages -│ │ └── Components/ # Reusable Vue components -│ └── views/ # Blade layouts +│ │ ├── pages/ # Inertia Vue pages +│ │ ├── components/ # Reusable Vue components +│ │ ├── layouts/ # App layouts +│ │ └── types/ # TypeScript type definitions +│ └── views/ # Blade templates ├── routes/ -│ ├── web.php # Public routes -│ └── admin.php # Admin routes -├── public/storage/ # Uploaded files -├── .env.example +│ ├── web.php # Public & auth routes +│ ├── admin.php # Admin panel routes +│ └── api.php # API routes (chat, auth, short URLs) +├── database/migrations/ # Database schema migrations +├── config/ # App configuration +├── docs/ # Developer documentation └── README.md ``` ## Content Contributions (Non-Code) -If you want to contribute academic resources (notes, PDFs, questions, etc.) rather than code, you don't need to touch this repository at all. Instead: +If you want to contribute academic resources (notes, PDFs, questions, images, videos) rather than code, you don't need to touch this repository at all. Instead: 1. Become a member at [hscstack.site/join](https://hscstack.site/join) -2. Log in to the platform and upload your resource under the relevant subject and chapter. -3. Your submission goes live after a quick admin review. +2. Log in with Google and navigate to the relevant subject and chapter. +3. Upload your resource with a clear title and content. +4. Your submission goes live after admin review. Please only upload content you created or have permission to share, and avoid copyrighted textbooks or board materials. ## Reporting Bugs & Requesting Features -- Use [GitHub Issues](https://github.com/trtajim/hscstack/issues) for bugs and feature requests. +- Use [GitHub Issues](https://github.com/hscstack/platform/issues) for bugs and feature requests. - Include steps to reproduce, expected vs. actual behavior, and screenshots if relevant (for UI bugs). ## Questions? diff --git a/README.md b/README.md index 9f49e5c..31d5851 100644 --- a/README.md +++ b/README.md @@ -5,13 +5,15 @@ > A curated resource platform for HSC & SSC students of Bangladesh — built by members, for everyone. -HSCStack is a lightweight, structured platform where verified members share academic resources — practicals, notes, PDFs, videos, and questions — organized by subject and chapter, so every SSC & HSC student can find what they need in one place. +HSCStack is a structured platform where verified members share academic resources — notes, questions, PDFs, images, and videos — organized by subject and chapter, so every SSC & HSC student can find what they need in one place. On top of that, we've got a real-time community chat, an educational blog, study progress tracking, and an AI learning assistant — all completely free and ad-free. --- ## 🌟 What is HSCStack? -HSCStack is built for students preparing for the **Higher Secondary Certificate (HSC)** & **Secoondary School Certificate (SSC)** exams in Bangladesh. It brings together a trusted library of student-made resources, organized neatly by subject and chapter — no more digging through WhatsApp groups or random Facebook posts. +HSCStack is built for students preparing for the **Higher Secondary Certificate (HSC)** and **Secondary School Certificate (SSC)** exams in Bangladesh. It brings together a trusted library of student-made resources, organized neatly by subject and chapter — no more digging through WhatsApp groups or random Facebook posts. + +You can switch between HSC and SSC curricula seamlessly. Each subject has nested chapters and topics, so you can drill down to exactly what you're looking for. Resources are uploaded by verified members to keep quality high, and the community votes on the best folders to surface them to the top. Browsing is open to everyone. But to **contribute**, you need to be an HSCStack member first — keeping the content quality high and the community trustworthy. @@ -19,25 +21,33 @@ Browsing is open to everyone. But to **contribute**, you need to be an HSCStack ## ✨ Features -- 📂 **Subject Archive** — Resources organized under subjects with visual themes and icons. -- 🗂️ **Chapter-based Structure** — Each subject has nested chapters (nodes) so you can find exactly what you need. -- 📄 **Multiple Resource Types** — Notes, PDFs, images, videos, and exam questions — all in one place. -- 🔒 **Members-Only Uploads** — Only verified HSCStack members can contribute content. -- 🛠️ **Admin Panel** — Full control over subjects, chapters, and resources via a clean admin area. -- ☁️ **File Upload Support** — Resources are stored and served from public storage. -- 🆓 **Free to Browse** — No account needed to read or download resources. -- 📝 **Educational Blog** — Read study tips, announcements, learning guides, and educational articles. +- 📂 **Dual Curriculum** — Switch between HSC and SSC. Subjects organized with custom icons, color-coded badges, and sort order. +- 🗂️ **Deep Folder Structure** — Infinite nesting: subject → chapter → topic → sub-topic. Breadcrumb navigation with caching for speed. +- 📄 **5 Resource Types** — Notes, questions, PDFs, images, and videos. Direct uploads to S3/R2 or external links. +- ⬆️ **Community Voting** — Upvote/downvote folders. Best content rises to the top. +- ✅ **Progress Tracking** — Mark resources as "Completed." See completion counts and who's been studying. +- 🎥 **Custom YouTube Player** — Watch classes without YouTube ads or distracting recommendations. Custom controls with variable speed (0.75x–2x), 5-second skip, and fullscreen. +- 💬 **Live Chat** — Real-time global chat with message replies, @mentions, emoji reactions, and a smart profanity filter. Community reporting with auto-ban for repeat offenders. +- 👤 **Public Profiles** — Vanity URLs (`/u/{username}`) with bio, institution, avatar, social links, and a unified activity stream. +- ❤️ **Peer Appreciations** — Appreciate members with milestone email notifications. +- ✍️ **Blog** — Full CMS with slug URLs, featured images, SEO tags, love reactions, and threaded comments. +- 🤖 **AI Assistant** — Dedicated interface organized by STEM subjects and chapters. +- 🔗 **URL Shortener** — Floating share bar on every page, powered by Short.io. +- 📱 **PWA** — Install it like an app. Works offline with a service worker. +- 🔔 **Notice Banner** — Site-wide announcements with images and CTA buttons. +- 🔒 **Google Sign-in** — One-click OAuth 2.0 authentication. --- ## 📚 Resource Types -| Type | Description | -| ---------- | ------------------------------------------------- | -| **Notes** | Handwritten or typed notes by fellow students | -| **PDFs** | Formatted documents, guides, and reference sheets | -| **Images** | Diagrams, charts, and visual study aids | -| **Videos** | Classes from Youtube | +| Type | Description | +| ------------- | ------------------------------------------------- | +| **Notes** | Handwritten or typed notes by fellow students | +| **Questions** | Exam questions and practice problems | +| **PDFs** | Formatted documents, guides, and reference sheets | +| **Images** | Diagrams, charts, and visual study aids | +| **Videos** | Ad-free YouTube classes via custom native player | --- @@ -46,7 +56,7 @@ Browsing is open to everyone. But to **contribute**, you need to be an HSCStack ### For Students (Browsing) 1. Visit [HSCStack][website] — no account needed. -2. Pick your subject and chapter. +2. Pick your curriculum (HSC or SSC), then select a subject and chapter. 3. Browse, read, or download any resource freely. ### For Members (Contributing) @@ -54,68 +64,71 @@ Browsing is open to everyone. But to **contribute**, you need to be an HSCStack Only HSCStack members can upload resources. To become a member: 1. Join at 👉 **[hscstack.site/join][join]** -2. Once accepted, log in and go to the relevant subject and chapter. -3. Upload your resource — add a title, type, and short description. -4. Your contribution goes live after a quick admin review. +2. Once accepted, sign in with Google and go to the relevant subject and chapter. +3. Upload your resource — add a title, type, and content. +4. Your contribution goes live after admin review. -> **Why membership?** We keep uploads member-only to maintain quality and ensure content is relevant, accurate, and trustworthy for all HSC students. +> **Why membership?** We keep uploads member-only to maintain quality and ensure content is relevant, accurate, and trustworthy for all students. --- ## 🛠️ Tech Stack -| Layer | Technology | -| --------------- | --------------------------- | -| **Backend** | Laravel (PHP) | -| **Frontend** | Vue.js via Inertia.js | -| **Storage** | Public file storage | -| **Admin Panel** | Built-in Laravel admin area | +| Layer | Technology | +| ------------------ | ------------------------------------- | +| **Backend** | Laravel 12 (PHP) | +| **Frontend** | Vue 3 + TypeScript via Inertia.js v3 | +| **Styling** | Tailwind CSS v4 | +| **Realtime** | Pusher Channels + Laravel Echo | +| **Storage** | AWS S3 / Cloudflare R2 | +| **Auth** | Google OAuth 2.0 (Laravel Socialite) | +| **Analytics** | PostHog | +| **Permissions** | Spatie Laravel Permission | +| **PWA** | vite-plugin-pwa | +| **Backup** | Google Drive API (automated) | --- ## 📖 Developer Documentation -Additional documentation for developers: - -- [Google Drive Backup](docs/google-drive-backup.md) +- [Google Drive Backup Setup](docs/google-drive-backup.md) +- [Storage Cleanup Command](docs/storage-cleanup.md) --- -## 🤝 Contributing to the Codebase - -HSCStack is not open for general pull requests. To contribute code, you must be a **core developer** on the team. - -To apply, join via 👉 **[hscstack.site/join][join]** — once your application is reviewed and accepted, we'll onboard you to the codebase. +## 🤝 Contributing -Once you're a core developer: +HSCStack welcomes contributions from core developers. See [CONTRIBUTING.md](CONTRIBUTING.md) for the development setup, workflow, and code style guidelines. -1. Clone the repository -2. Create a new branch: `git checkout -b feature/your-feature-name` -3. Commit your changes: `git commit -m "Add: your feature"` -4. Push to your branch: `git push origin feature/your-feature-name` -5. Open a Pull Request for review +Not a developer? You can still contribute academic resources (notes, PDFs, questions) by joining at **[hscstack.site/join][join]**. --- ## 📁 Project Structure ``` -hscstack/ +platform/ ├── app/ -│ ├── Models/ # Subject, Node, Resource models -│ ├── Http/Controllers/ # Web + Admin controllers -│ └── ... +│ ├── Models/ # Eloquent models (User, Subject, Node, Resource, Blog, etc.) +│ ├── Http/Controllers/ # Web + Admin + API controllers +│ ├── Mail/ # Mailable classes +│ ├── Observers/ # Cache invalidation observers +│ ├── Services/ # Business logic services +│ └── Console/Commands/ # Artisan CLI commands (backup, sitemap, cleanup) ├── resources/ │ ├── js/ -│ │ ├── Pages/ # Inertia Vue pages -│ │ └── Components/ # Reusable Vue components -│ └── views/ # Blade layouts +│ │ ├── pages/ # Inertia Vue pages +│ │ ├── components/ # Reusable Vue components +│ │ ├── layouts/ # App layouts +│ │ └── types/ # TypeScript type definitions +│ └── views/ # Blade templates ├── routes/ -│ ├── web.php # Public routes -│ └── admin.php # Admin routes -├── public/storage/ # Uploaded files -├── .env.example -└── README.md +│ ├── web.php # Public & auth routes +│ ├── admin.php # Admin panel routes +│ └── api.php # API routes (chat, auth, short URLs) +├── database/migrations/ # Database schema +├── config/ # App configuration +└── docs/ # Developer docs ``` --- @@ -125,12 +138,14 @@ hscstack/ HSCStack's value comes from the quality of what's shared. Please follow these rules: - ✅ Only upload content **you created** or have permission to share. -- ✅ Keep everything **relevant to the HSC Bangladesh curriculum**. +- ✅ Keep everything **relevant to the HSC/SSC Bangladesh curriculum**. - ✅ Add **clear titles and descriptions** so others can find your resource. +- ✅ Be respectful in live chat and comments. - ❌ Do not upload copyrighted textbooks or board materials without permission. - ❌ No spam, duplicate, or off-topic content. +- ❌ No profanity, harassment, or hate speech in chat. -Breaking these rules may result in content removal or membership revocation. +Breaking these rules may result in content removal, chat bans, or account suspension. --- @@ -140,6 +155,7 @@ Have a question, found a bug, or want to get involved? - 📧 Email: `com.tajim@gmail.com` - 🐛 Issues: [Open a GitHub Issue](../../issues) +- ❤️ Support: [hscstack.site/support](https://hscstack.site/support) --- diff --git a/docs/storage-cleanup.md b/docs/storage-cleanup.md index a0fa294..b9f7635 100644 --- a/docs/storage-cleanup.md +++ b/docs/storage-cleanup.md @@ -2,17 +2,24 @@ ## Purpose -The `resources:clean-unused-images` Artisan command removes orphaned files from `storage/app/public/resources`. +The `resources:clean-unused-images` Artisan command removes orphaned files from S3/R2 cloud storage. -A file is considered unused when: -- It exists in storage -- Its path is not referenced by any `resources.file_url` database record +It scans four storage directories and cross-references them against the database: + +| Storage Directory | Database Check | +| ----------------- | --------------------------------------- | +| `resources/` | `resources.file_path` | +| `users/` | `users.image_path` | +| `blogs/` | `blogs.featured_image_path` | +| `notices/` | `notices.image` (non-HTTP paths only) | + +A file is considered unused when it exists in storage but its path is not referenced by any database record. ## Why this exists -Resources can be deleted using database cascade deletion. Since database cascades do not trigger Laravel model events, associated files may remain in storage. +Resources, users, blogs, and notices can be deleted via database cascade or admin actions. Since database cascades do not trigger Laravel model events, associated files may remain in storage. -This command cleans those orphan files. +This command cleans those orphan files across all upload directories. ## Usage @@ -22,3 +29,10 @@ Always run dry-run first: ```bash php artisan resources:clean-unused-images --dry-run +``` + +### Delete unused files + +```bash +php artisan resources:clean-unused-images +``` diff --git a/resources/js/components/Footer.vue b/resources/js/components/Footer.vue index 0587cd4..48ef995 100644 --- a/resources/js/components/Footer.vue +++ b/resources/js/components/Footer.vue @@ -80,12 +80,10 @@ const isFullFooter = computed(() => { class="mt-4 hidden text-xs font-medium text-slate-400 md:block dark:text-gray-500" > A concern of - TajimTajim

diff --git a/resources/js/pages/ContributorGuide.vue b/resources/js/pages/ContributorGuide.vue index 38fdd5e..4560365 100644 --- a/resources/js/pages/ContributorGuide.vue +++ b/resources/js/pages/ContributorGuide.vue @@ -846,9 +846,10 @@ onUnmounted(() => { class="text-sm leading-relaxed font-normal text-slate-600 sm:text-base dark:text-gray-400" > যেকোনো সময় আপনি আপনার account details update করতে - পারবেন। Profile photo-এর জন্য Imgur বা PostImages-এর মতো - কোনো service-এ ছবি আপলোড করে, সেই direct link আপনার - profile-এ ব্যবহার করুন। + পারবেন। Profile photo সরাসরি আপলোড করুন — PNG, JPG বা + WEBP ফরম্যাটে, সর্বোচ্চ 2MB সাইজের মধ্যে। এছাড়া bio, + institution, এবং social links (Facebook, Instagram, + GitHub) যোগ করতে পারবেন।

diff --git a/resources/js/pages/legal/ContentPolicy.vue b/resources/js/pages/legal/ContentPolicy.vue index ad0cd0f..9453f3c 100644 --- a/resources/js/pages/legal/ContentPolicy.vue +++ b/resources/js/pages/legal/ContentPolicy.vue @@ -5,10 +5,12 @@ import { FileText, Users, ShieldAlert, + MessageSquare, Share2, UserMinus, Youtube, PenLine, + ThumbsUp, Copyright, RefreshCw, } from 'lucide-vue-next'; @@ -36,7 +38,7 @@ import {

- সর্বশেষ আপডেট: জুলাই ২০২৬ + সর্বশেষ আপডেট: আগস্ট ২০২৬

@@ -77,11 +79,11 @@ import {

- ২. Contributor Submitted Notes + ২. Contributor Submitted Content

- কন্ট্রিবিউটররা HSCStack-এ নোট বা শিক্ষামূলক উপকরণ জমা - দেওয়ার মাধ্যমে নিশ্চিত করেন যে: + কন্ট্রিবিউটররা HSCStack-এ নোট বা যেকোনো শিক্ষামূলক উপকরণ (Questions, PDFs, Images, Videos ইত্যাদি) জমা দেওয়ার মাধ্যমে নিশ্চিত করেন যে:

+

+
+ +
+
+

+ ৪. লাইভ চ্যাট কনটেন্ট নীতিমালা +

+

+ HSCStack-এর রিয়েল-টাইম লাইভ চ্যাটে শিক্ষার্থীদের একটি সুস্থ পরিবেশ বজায় রাখার জন্য আমাদের একটি স্বয়ংক্রিয় মডারেশন সিস্টেম রয়েছে: +

+
    +
  • + Smart Profanity Filter: আমাদের সিস্টেমে স্বয়ংক্রিয়ভাবে গালিগালাজ শনাক্ত করার প্রযুক্তি রয়েছে, যা leet-speak (যেমন @->a, $->s, 1->i) এবং পুনরাবৃত্তিমূলক অক্ষর (repeated char collapse) শনাক্ত করতে সক্ষম। কনফিগারযোগ্য নিষিদ্ধ শব্দগুলো স্বয়ংক্রিয়ভাবে ফিল্টার হয়ে যায়। +
  • +
  • + Community Reporting: চ্যাটের কোনো মেসেজ আপত্তিকর মনে হলে ব্যবহারকারীরা নির্দিষ্ট কারণ উল্লেখ করে সেটি রিপোর্ট করতে পারেন। +
  • +
  • + Auto-Suspension: কোনো ব্যবহারকারী ৫টি বা তার বেশি রিপোর্ট পেলে সিস্টেম স্বয়ংক্রিয়ভাবে তাকে ২৪ ঘণ্টার জন্য চ্যাট থেকে সাসপেন্ড করবে। +
  • +
  • + Message Pruning: প্ল্যাটফর্মের গতি ঠিক রাখতে চ্যাটে রোলিং মেসেজ প্রুনিং ব্যবহার করা হয়, যেখানে সর্বশেষ প্রায় ২০০টি মেসেজ সংরক্ষিত থাকে। +
  • +
  • + Staff Moderation: অ্যাডমিন এবং মডারেটররা যেকোনো সময় আপত্তিকর মেসেজ ডিলিট করার বা ব্যবহারকারীকে ব্যান করার অধিকার রাখেন। +
  • +
+
+
+ +
- ৪. Attribution এবং Redistribution + ৫. Attribution এবং Redistribution

  • - HSCStack থেকে ডাউনলোড করা নোট শিক্ষার্থীরা ব্যক্তিগত + HSCStack থেকে ডাউনলোড করা ফাইল শিক্ষার্থীরা ব্যক্তিগত ও শিক্ষামূলক ব্যবহারের জন্য ব্যবহার করতে পারবেন।
  • @@ -235,14 +275,13 @@ import { জমা দেওয়া কনটেন্টের মূল মালিকানা ধরে রাখলেও, HSCStack-এ প্রকাশের মাধ্যমে HSCStack-কে সেই কনটেন্ট সংরক্ষণ, প্রদর্শন এবং শিক্ষামূলক উদ্দেশ্যে বিতরণের - অনুমতি প্রদান করেন। যদি তা HSCStack-এর মাধ্যমে - প্রকাশের জন্য অনুমোদিত হয়ে থাকে। + অনুমতি প্রদান করেন।
  • - +
    - ৫. Contributor Account Removal + ৬. Contributor Account Removal

    - +
    - ৬. Embedded YouTube Content + ৭. Embedded YouTube Content

    HSCStack কিছু ক্ষেত্রে YouTube-এ প্রকাশিত শিক্ষামূলক - ভিডিও ক্লাস embed করতে পারে। আমরা: + ভিডিও ক্লাস আমাদের Custom Native Player-এর মাধ্যমে embed করতে পারে। আমরা:

    - +
    - ৭. Blogs এবং Articles + ৮. Blogs এবং Articles

    - কিছু লেখায় থাকতে পারে External links, reference - sources, অথবা short quotations। এসব ক্ষেত্রে প্রাসঙ্গিক - attribution এবং fair use principles অনুসরণ করার চেষ্টা - করা হয়। + ব্লগগুলোতে পাঠকরা Love reactions দিতে পারেন এবং Threaded comments-এর মাধ্যমে মতামত জানাতে পারেন। আমরা গঠনমূলক আলোচনা এবং শালীন ভাষা ব্যবহারের জন্য উৎসাহিত করি। এছাড়াও, নির্দিষ্ট মাইলফলক অর্জনে কন্ট্রিবিউটররা নোটিফিকেশন পাবেন।

    - + +
    +
    + +
    +
    +

    + ৯. কমিউনিটি ইন্টারঅ্যাকশন +

    +

    + HSCStack-এ একটি সহায়ক ও ইতিবাচক শিক্ষামূলক পরিবেশ গড়ে তোলার জন্য কমিউনিটির ইন্টারঅ্যাকশন অত্যন্ত গুরুত্বপূর্ণ: +

    +
      +
    • Folder Voting: ব্যবহারকারীরা ফোল্ডার আপভোট বা ডাউনভোট করার ক্ষেত্রে সততা বজায় রাখবেন। গঠনমূলক মূল্যায়ন অন্য শিক্ষার্থীদের সঠিক কনটেন্ট খুঁজে পেতে সাহায্য করবে।
    • +
    • Appreciations: প্রোফাইলে অন্যদের প্রশংসা (appreciations) প্রদান করার ক্ষেত্রে সম্মানজনক ভাষা ব্যবহার করতে হবে।
    • +
    • Profile Content: ব্যবহারকারীর প্রোফাইলের কনটেন্ট এবং কার্যকলাপের সম্পূর্ণ দায়ভার ওই ব্যবহারকারীর।
    • +
    +
    +
    + +
    - ৮. Copyright এবং Removal Requests + ১০. Copyright এবং Removal Requests

    - +
    - ৯. Content Review and Modification + ১১. Content Review and Modification

    - HSCStack: + HSCStack অ্যাডমিন প্যানেলের মাধ্যমে প্ল্যাটফর্মের কনটেন্ট পরিচালনার ক্ষমতা রাখে:

      -
    • কনটেন্ট যাচাই করতে পারে।
    • -
    • - প্রয়োজন অনুযায়ী কনটেন্ট edit, hide বা remove করতে - পারে। -
    • -
    • - প্ল্যাটফর্মের মান বজায় রাখার জন্য submission reject - করতে পারে। -
    • +
    • অ্যাডমিন বা এডিটররা যেকোনো সাবজেক্ট, নোড, রিসোর্স বা ব্লগ তৈরি, সম্পাদনা বা ডিলিট করতে পারেন।
    • +
    • প্রয়োজন অনুযায়ী Bulk operations পরিচালনা করা হতে পারে।
    • +
    • প্ল্যাটফর্মের মান বজায় রাখার জন্য কনটেন্ট যাচাই করতে পারে এবং যেকোনো submission reject করতে পারে।
    diff --git a/resources/js/pages/legal/PrivacyPolicy.vue b/resources/js/pages/legal/PrivacyPolicy.vue index a72ba80..b227179 100644 --- a/resources/js/pages/legal/PrivacyPolicy.vue +++ b/resources/js/pages/legal/PrivacyPolicy.vue @@ -9,6 +9,8 @@ import { Trash, LocateIcon, PersonStanding, + Mail, + MessageSquare, } from 'lucide-vue-next'; @@ -31,7 +33,7 @@ import {

    - সর্বশেষ আপডেট: জুলাই ২০২৬ + সর্বশেষ আপডেট: আগস্ট ২০২৬

    @@ -67,26 +69,28 @@ import {

    - আমরা জিনিসগুলো fast এবং clean রাখার চেষ্টা করি । একটা - ভালো experience দেওয়ার জন্য যতটুকু প্রয়োজন, ঠিক ততটুকু - তথ্যই আমরা সংগ্রহ করি: + প্ল্যাটফর্মের ফিচারগুলো নিরবচ্ছিন্নভাবে প্রদানের জন্য আমরা কিছু নির্দিষ্ট তথ্য সংগ্রহ করি:

    • Usage Data:অ্যাকাউন্ট ডেটা: - layout পারফরম্যান্স অপটিমাইজ করার জন্য ব্রাউজার টাইপ - এবং ভিজিট করা পেজের মতো non-personal ডেটা। + Google OAuth 2.0 এর মাধ্যমে লগইন করার সময় আপনার নাম, ইমেইল, Google ID এবং প্রোফাইল ছবি সংগ্রহ করা হয়।
    • Search Queries:প্রোফাইল ডেটা: - সাবজেক্ট instantly ফিল্টার করার জন্য আপনার সার্চ - ইনপুট আপনার ডিভাইসেই locally প্রসেস করা হয়। + আপনার বায়ো, শিক্ষাপ্রতিষ্ঠানের নাম, অ্যাভাটার এবং সোশ্যাল লিংক (Facebook, Instagram, GitHub)। +
    • +
    • + ইউজার অ্যাক্টিভিটি: + চ্যাট মেসেজ, রিসোর্স কমপ্লিশন স্ট্যাটাস, ফোল্ডার আপভোট/ডাউনভোট, অ্যাপ্রিসিয়েশন, ব্লগ কমেন্ট ও রিঅ্যাকশন এবং আপলোড করা ফাইলসমূহ।
    @@ -108,14 +112,7 @@ import {

    - আপনার visual preference (যেমন লেআউট সাইজিং বা cached - data) মনে রাখার জন্য আমরা lightweight local storage বা - কুকিজ ব্যবহার করি, যাতে ব্রাউজিং সেশনটা seamless হয়। - আমরা তৃতীয় পক্ষের বিজ্ঞাপন বা cross-site advertising - tracking এর মাধ্যমে আপনাকে অনুসরণ করি না। আমরা কিছু - privacy-focused analytics টুলও ব্যবহার করি, যেগুলোর - বিস্তারিত বর্ণনা ৬ নম্বর সেকশনে ("অ্যানালিটিক্স ও - ট্র্যাকিং") দেওয়া আছে। + একটি সুরক্ষিত এবং seamless অভিজ্ঞতা নিশ্চিত করতে আমরা কুকিজ ও লোকাল স্টোরেজ ব্যবহার করি। এর মধ্যে রয়েছে Session Cookies এবং CSRF টোকেন যা সিকিউরিটির জন্য জরুরি। পাশাপাশি আপনার সিলেক্ট করা কোর্সের জন্য preferred_course কুকি এবং আমাদের PWA অ্যাপের জন্য Service Worker ব্যবহার করা হয়। আমরা কোনো ধরনের থার্ড-পার্টি অ্যাডভার্টাইজিং কুকিজ ব্যবহার করি না।

    @@ -136,12 +133,17 @@ import {

    - অনলাইনে থাকতে এবং দ্রুত পারফর্ম করতে আমাদের আর্কাইভ - modern hosting platform এবং lightweight analytics টুল - ব্যবহার করে। এই থার্ড পার্টিগুলো আপনার basic operational - data নিরাপদে এবং কড়া security compliance নিয়ম মেনে - হ্যান্ডেল করে। + প্ল্যাটফর্মের কার্যক্রম পরিচালনার জন্য আমরা কিছু নির্ভরযোগ্য থার্ড-পার্টি সার্ভিস ব্যবহার করি:

    + @@ -161,11 +163,7 @@ import {

    - প্ল্যাটফর্মের safety নিশ্চিত করতে আমরা strict, clean - codebase practice অনুসরণ করি। এই ডিজিটাল আর্কাইভ - সুরক্ষিত রাখতে আমরা যথাসাধ্য চেষ্টা করলেও, মনে - রাখবেন—অনলাইনে absolute নেটওয়ার্ক সিকিউরিটি বলে কিছু - নেই। + আপনার ডেটার সর্বোচ্চ নিরাপত্তা নিশ্চিত করতে আমরা HTTPS এনক্রিপশন, সিকিউর ক্লাউড স্টোরেজ, মজবুত পাসওয়ার্ড হ্যাশিং এবং প্রোডাকশন লেভেলের সেফগার্ড ব্যবহার করি। স্প্যাম রোধে রয়েছে রেট লিমিটিং ব্যবস্থা। এছাড়া ডেটা লস এড়াতে আমাদের ডাটাবেস এবং ফাইলগুলো স্বয়ংক্রিয়ভাবে Google Drive-এ ব্যাকআপ নেওয়া হয়। তবে অনলাইনে কোনো সিস্টেমই ১০০% সুরক্ষিত নয়।

    @@ -181,24 +179,12 @@ import {

    - ৫. কনট্রিবিউটর তথ্য + ৫. কনট্রিবিউটর ও ব্যবহারকারী তথ্য

    - কনট্রিবিউটর হিসেবে কাজ করার জন্য আপনি যে তথ্য প্রদান - করেন (যেমন নাম, ইমেইল বা প্রোফাইল তথ্য), তা কনট্রিবিউটর - management, কনটেন্ট attribution এবং প্ল্যাটফর্ম - পরিচালনার জন্য ব্যবহার করা হয়। কনট্রিবিউটররা তাদের - অ্যাকাউন্ট মুছে ফেলার অনুরোধ করতে পারেন, তবে অ্যাকাউন্ট - মুছে ফেলার অর্থ এই নয় যে তাদের পূর্বে প্রকাশিত কনটেন্টও - স্বয়ংক্রিয়ভাবে মুছে যাবে — বিস্তারিত জানতে আমাদের - Content Policy - - দেখুন। + Google sign-in থেকে প্রাপ্ত আপনার প্রোফাইল তথ্য এবং আপলোড করা কনটেন্ট অন্যান্য ব্যবহারকারীরা দেখতে পারেন। আপনি চাইলে সেটিংস থেকে প্রোফাইল ভিজিবিলিটি নিয়ন্ত্রণ করতে পারেন এবং ইমেইল প্রেফারেন্স (receive_emails) অন/অফ করতে পারেন। প্ল্যাটফর্মে কোনো কনটেন্ট আপলোড করলে তার সাথে আপনার নাম সংযুক্ত (Attribution) থাকে।

    @@ -219,15 +205,7 @@ import {

    - ব্যবহারকারীর অভিজ্ঞতা এবং প্ল্যাটফর্মের কার্যকারিতা - উন্নত করার জন্য আমরা বিভিন্ন analytics এবং performance - monitoring tool ব্যবহার করতে পারি। এর মধ্যে Cloudflare - Analytics, Microsoft Clarity এবং আমাদের নিজস্ব internal - analytics system অন্তর্ভুক্ত হতে পারে। এসব সিস্টেম - সাধারণত ভিজিট, ব্রাউজার, ডিভাইস, পেজ interaction এবং - ট্রাফিক pattern-এর মতো non-personal usage data সংগ্রহ - করে। আমরা এই তথ্য কোনো নির্দিষ্ট ব্যক্তিকে শনাক্ত করার - উদ্দেশ্যে ব্যবহার করি না। + প্ল্যাটফর্ম উন্নত করার উদ্দেশ্যে আমরা মূলত PostHog ব্যবহার করি যা pageviews, unique visitors, active users এবং referrers সম্পর্কে ধারণা দেয়। পাশাপাশি Cloudflare ও আমাদের ইন্টার্নাল অ্যানালিটিক্স কাজ করে। এসব ডেটা সম্পূর্ণ রূপে non-personal এবং শুধু এগ্রিগেট আকারে ব্যবহৃত হয়।

    @@ -237,30 +215,65 @@ import {
    - +

    - ৭. ব্যক্তিগত তথ্য মুছে ফেলার অনুরোধ + ৭. ইমেইল কমিউনিকেশন

    - HSCStack সাধারণ দর্শকদের কাছ থেকে কোনো ব্যক্তিগত - অ্যাকাউন্ট তথ্য সংগ্রহ বা সংরক্ষণ করে না। তাই সাধারণ - ব্যবহারকারীদের জন্য আলাদা data deletion request প্রযোজ্য - নয়। তবে কনট্রিবিউটর অ্যাকাউন্টের ক্ষেত্রে, - ব্যবহারকারীরা তাদের অ্যাকাউন্ট মুছে ফেলার অনুরোধ করতে - পারেন — যদিও তাদের পূর্বে প্রকাশিত কনটেন্ট প্ল্যাটফর্মে - থেকে যেতে পারে, যেমনটি Content Policy-তে ব্যাখ্যা করা - হয়েছে। + ব্যবহারকারীদের সাথে যোগাযোগ রাখার জন্য আমরা ওয়েলকাম ইমেইল, নির্দিষ্ট মাইলস্টোন নোটিফিকেশন, ব্লগে কমেন্ট অ্যালার্ট এবং গুরুত্বপূর্ণ ঘোষণা (bulk announcements) পাঠিয়ে থাকি। আপনি চাইলে যেকোনো সময় আপনার অ্যাকাউন্ট সেটিংস বা ইমেইলের নিচে থাকা আনসাবস্ক্রাইব লিংকে ক্লিক করে এসব ইমেইল বন্ধ করতে পারেন।

    +
    +
    + +
    +
    +

    + ৮. লাইভ চ্যাট ডেটা +

    +

    + আমাদের রিয়েল-টাইম লাইভ চ্যাটে পাঠানো মেসেজ, রিপ্লাই এবং রিঅ্যাকশন ডাটাবেসে সেভ করা হয়। চ্যাটের পারফরম্যান্স ঠিক রাখতে আমরা সাধারণত নির্দিষ্ট সংখ্যক (যেমন ~২০০) লেটেস্ট মেসেজ রেখে পুরনো মেসেজ মুছে ফেলি (rolling pruning)। এছাড়া চ্যাটের সুষ্ঠু পরিবেশ বজায় রাখার জন্য ইউজার রিপোর্ট সেভ করা হয় এবং নিয়ম ভাঙলে অটো-ব্যান মেকানিজম রয়েছে। শুধুমাত্র প্ল্যাটফর্মের মডারেটর বা স্টাফরা নিয়মভঙ্গকারী মেসেজ ডিলিট করতে পারেন। +

    +
    +
    + + +
    +
    + +
    +
    +

    + ৯. ব্যক্তিগত তথ্য মুছে ফেলার অনুরোধ +

    +

    + আপনি চাইলে যেকোনো সময় আপনার অ্যাকাউন্ট ডিলিট করার অনুরোধ করতে পারেন। অ্যাকাউন্ট মুছে ফেললে আপনার প্রোফাইল তথ্য এবং পার্সোনাল ডেটা মুছে যাবে, তবে পূর্বে আপলোড করা রিসোর্স বা কনটেন্ট প্ল্যাটফর্মে থেকে যেতে পারে (কনটেন্ট রিটেনশন পলিসি অনুযায়ী)। বিস্তারিত আমাদের Content Policy-তে দেখুন। +

    +
    +
    + +
    - ৮. কনটেন্ট সম্পর্কিত তথ্য + ১০. কনটেন্ট সম্পর্কিত তথ্য

    import { Head, Link } from '@inertiajs/vue3'; -import { Scale, FileText, HelpCircle, AlertCircle, Ban } from 'lucide-vue-next'; +import { + Scale, + FileText, + HelpCircle, + AlertCircle, + Ban, + UserCircle, + Users, + MessageSquare, + BookOpen, + ThumbsUp, + RefreshCw +} from 'lucide-vue-next';