iSpeaker Live iSpeaker Live / Docs
Capabilities

⭐ Features & Modules

Every module of iSpeaker Live in depth — what works, who can do what, and how it connects.

User Roles & Permissions

Two primary user roles via spatie/laravel-permission, plus an administrative role for the Filament panel.

🎓 Student

Default role on registration. Consumes content, books, and live sessions.

Can do

  • Browse marketplace; purchase courses & books.
  • Watch lessons, take notes, earn certificates.
  • Register for live rooms; book 1:1 consultations.
  • Post on the feed, comment, react, share, gift.
  • Manage wallet, view invoices, withdraw (after limits).

Cannot do

  • Publish courses, books, or live rooms.
  • Set consultation availability or accept bookings.
  • Access the admin panel.

🎤 Speaker

Granted after onboarding/approval. Can do everything a student can, plus authoring & monetisation.

Additional powers

  • Publish courses, books, live rooms.
  • Define consultation availability & price.
  • Manage own learners, see statistics & earnings.
  • Approve / reject paid room registrations.
  • Mark consultations complete; receive ratings.

🛡️ Admin

Operates via the Filament panel. Cannot be a student or speaker simultaneously.

Capabilities

  • Manage users, roles, categories, gifts, settings.
  • Moderate posts & review reports.
  • Approve withdrawals; reconcile payouts.
  • Configure platform-wide settings (VAT, currencies, etc.).

Authentication & Account

Sign-up

  • Email + password (required), name, username (unique), optional phone.
  • Password complexity: ≥ 8 chars; recommend mixed-case & digits.
  • Default role: Student. Becoming a Speaker is a separate flow.
  • Email verification flag (is_verified) supported; configurable.

Sign-in & Sessions

  • Sanctum personal access tokens — long-lived for mobile, scoped for web.
  • "My sessions" — list active tokens with last-used info, revoke individually.
  • "Log out everywhere" — revoke all tokens.

Password & Recovery

  • Forgot password → token sent to email (password_reset_tokens).
  • Change password from settings.

Account deletion

  • Soft-delete (deleted_at) on user request.
  • Cascades through related data per FK rules; financial records preserved per regulation.

Profile & Identity

What a profile contains

Avatar & Cover

Image upload with media URL helper, served via signed URLs.

Bio & Headline

Short bio plus a one-line headline for cards/listings.

Interests

Many-to-many with categories — drives feed and marketplace suggestions.

Social Links

JSON list (twitter, ig, linkedin, web) — togglable visibility.

Privacy

Private profile (follow-request gate), email/phone visibility, notifications on/off.

Certificates

Title, issuer, dates, credential URL — ordered list.

Experiences

Title, company, employment type, dates, location, description — ordered.

Speaker expertise

Tags shown on speaker cards & used in filtering.

Privacy modes

ModeBehaviour
PublicAnyone can view profile & follow without approval.
PrivateProfile shows limited info; follows require follow request acceptance.

Social Feed

Post types

  • Text — body up to N characters; supports hashtags & mentions.
  • Image — one or more images (JSON array of media URLs).
  • Video — uploaded video preview + playback.
  • Audio — voice notes & podcasts.

Engagement

6 Reactions

like · love · haha · wow · sad · angry. One reaction per user per post.

Threaded comments

Parent-child via parent_id, with image attachments and pinning.

Sharing

Internal repost with optional comment; shareable link for external.

Pinning

Authors can pin their own post; admins/speakers can pin comments on their posts.

Reporting

Spam, harassment, hate speech, violence, misinformation, other. Triaged by admin.

View count

Tracked per post for trending logic.

Discovery

  • Feed from people you follow + suggested.
  • Trending: hashtags, posts, topics, speakers.
  • Hashtag pages and hashtag search.

Follow System

  • Public profile → direct follow (one tap).
  • Private profile → follow request with pending/accepted/rejected states.
  • Bulk actions on requests: accept all / reject all.
  • Counters (followers_count, following_count) stored on profile.
  • Suggestions and search across users.

Courses

Authoring (Speaker)

  • Create course → title, slug, subtitle, description, category (primary + multiple), language (AR/EN), level (beginner/intermediate/advanced), price (with optional discount), thumbnail, promo video.
  • Add structured "why learn" and "requirements" (JSON lists).
  • Build out sections and lessons in any order; drag-to-reorder.
  • Lesson content types: video, audio, document, or external link.
  • Upload video/audio/document/attachments per lesson.
  • Optional is_preview flag — lessons playable without purchase.
  • Lifecycle: draftpublishedarchived; unpublish allowed.
  • Stats: enrollments, completion, ratings, reviews.

Consuming (Student)

  • Browse marketplace; filter by category, language, level, price.
  • Preview lessons before purchase.
  • Purchase → enrollment created with active status.
  • Course player tracks per-lesson watched duration; mark complete.
  • Take notes per lesson with optional timestamp.
  • Earn certificate on 100% completion — unique number + verification URL.
  • Rate & review the course.

Books

Publishing (Speaker)

  • Upload PDF; set title, slug, author, ISBN, page count, price.
  • Set preview_pages — number of pages anyone can read pre-purchase.
  • Flags: allow_printing, allow_copying (enforced by reader).
  • Status: draft / published / archived.
  • Stats: purchases, average rating.

Reader (Student)

In-app PDF viewer

Page navigation, zoom, search.

Preview mode

First N pages served via separate public endpoint.

Annotations

Highlight, note, underline, bookmark — with color & position JSON.

Progress

Current page, total pages read, total reading time per purchase.

DRM

Time-limited tokens; refresh on demand; copy/print toggles enforced.

Live Rooms

Speaker capabilities

  • Schedule a room: title, description, thumbnail, category, start/end date & time.
  • Duration type: day / week / month / 3month — supports series.
  • Access: free or paid (with price).
  • Max participants & optional recording.
  • Pending registration approvals (for paid/curated rooms).
  • Start / End controls; share link.

Participant capabilities

  • Register (auto for free, with payment for paid).
  • Join via Jitsi room (web + mobile).
  • In-room chat with text/emoji + announcement messages, pinning, reactions count.
  • Leave / cancel registration before session.
  • Report a room.

Lifecycle

  • scheduledactive (on start) → completed / cancelled.
  • Recordings (if enabled) attached to the room as JSON list of URLs.

Consultations

Speaker setup

  • Define availability per weekday: start/end time, session duration, price/session.
  • Toggle is_active per availability slot.
  • View incoming bookings, accept / reject / complete.
  • Earnings credited to wallet upon completion.

Booking (Student)

  • Browse speaker's available dates & slots.
  • Book with payment; status flows pendingscheduledcompleted.
  • Receive meeting link (Jitsi). Reminders via notifications.
  • Rate the speaker post-session.
  • Cancel before threshold (refund per policy).

Marketplace & Cart

  • Unified browse: courses, books, popular topics, filters.
  • Course / book detail pages with reviews list.
  • Add to cart (polymorphic cartable_type + cartable_id).
  • Cart count, list, remove, clear, apply discount, checkout.
  • Checkout creates purchase records and enrollments / book_purchases.
  • "My purchased courses" and "My purchased books" views.

Wallet, Payments & Invoices

Wallet

  • One wallet per user (wallets table) with balance, total_earned, total_withdrawn, pending_balance.
  • Top up via PayPal (other gateways planned).
  • Send points to another user.
  • Withdraw request → admin approval → settlement.

Transactions

  • Every credit / debit recorded with type, category (course, book, gift, consultation, withdrawal, top-up...), related_type + related_id for source.
  • balance_after stored for audit trail.
  • Status: pending, completed, failed, refunded.
  • Unique transaction_reference for reconciliation.

Invoices

  • Auto-generated for completed transactions: subtotal, VAT, total, items JSON.
  • Sequential invoice_number; downloadable PDF.

Gifts

  • Admin-managed gift catalogue: icon, price, ordering.
  • Send a gift (with quantity & optional message) to a user or attached to a giftable entity (post, room, etc.).
  • Wallet debited on send; receiver credited.
  • Stats endpoints: received, sent, top gifts, leaderboard, per-user history.

Chat

  • 1:1 conversations (unique pair: user_one_id + user_two_id).
  • Messages of type text / image / video / audio / file.
  • Reply-to threading, media URLs, metadata JSON, read receipts.
  • Soft delete per message; whole conversation deletion preserved server-side.
  • Real-time delivery via Reverb WebSocket + Echo client.
  • Unread count, conversation search, user search, direct media upload.

Notifications

  • In-app polymorphic notifications: actor, type, notifiable entity, data JSON, read state.
  • Push via Firebase Cloud Messaging (FCM).
  • Common types: new follower, follow request, comment, reaction, course/book review, room reminder, booking accepted, payment received, gift received.
  • Endpoints: list, unread count, mark one/all read, delete.

Admin Panel (Filament v3)

Operated at the /admin path by non-student / non-speaker users.

  • User management (roles, suspend, view wallets).
  • Categories, gifts, settings CRUD.
  • Post reports inbox & resolution.
  • Transactions ledger; invoice search.
  • Withdrawal approvals.
  • System-wide settings (VAT %, currency, timezone defaults).

Non-Functional Requirements

⚡ Performance

  • API p95 < 500 ms on common endpoints.
  • Feed pagination, lazy media loading.
  • Cache aggressively for trending & categories.

🛡️ Security

  • Sanctum auth, hashed passwords, signed media URLs.
  • Spatie role/permission enforcement on every speaker route.
  • Rate limiting on auth and high-cost endpoints.

♿ Accessibility

  • WCAG AA targets for color contrast & focus.
  • Keyboard navigation for all interactive elements.
  • Semantic HTML & ARIA where needed.

🌐 Localization

  • Arabic (RTL) and English (LTR) at parity.
  • Locale-aware numbers, dates, currency.
  • Translatable category names & content.

📈 Observability

  • Application logs (Laravel) shipped to a single source.
  • Failed jobs table monitored; alert on threshold.
  • Mobile crash reporting in place.

🔄 Reliability

  • Background queues for emails, FCM, video processing.
  • Idempotent payment callbacks.
  • Daily DB backups & restore drills.