IndieCoderMM / IndieCoderMM/curated

Add Private Courses Accessible via Invite Link

Open
#5 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
TypeScript
Stars
0
Forks
0
PR merge metrics
No merged PRs in 30d

Description

**Overview:**
Enable the creation of private courses that are only accessible to users who have a special invite/share link. These courses should not appear in public browse, explore, or search listings, and should only be discoverable through possession of the invite link.

**Feature Requirements:**
- Allow course creators to mark courses as "private" with a boolean flag (e.g., `isPrivate`).
- Generate a unique, random invite token for each private course (e.g., `/invite/[token]`).
- Hide private courses from all public lists and searches.
- Add a direct-access invite route that loads the course by token (regardless of public visibility).
- Only users with the link can view/access the course, unless/until it becomes public again.
- Optionally, allow course creators to regenerate/revoke the invite link.
- Dashboard and management interfaces for owners should show their private courses.
- Supporting UI for toggling privacy, sharing/copying invite link, and regenerating/revoking invite token.

**Implementation Notes:**
- Use Next.js App Router conventions for routing and page protection.
- Update Prisma `Course` model with `isPrivate` and `inviteToken` fields (token should be unique and URL-safe).
- Add server actions and UI components for toggling privacy and generating invite links.
- Add appropriate server-side guards to prevent ID-based enumeration of private courses.
- Revalidate public course lists on privacy changes.

Contributor guide

No contributing guide indexed for this repository

Research direction

Begin with the Next.js App Router entry points and the Prisma Course model, then trace the public browse, explore, search, dashboard, and server-action paths mentioned in the issue. Review how the invite route and server-side guards should fit those paths. Done means private courses are excluded from public discovery, accessible through valid invite links, manageable by owners, and privacy changes revalidate public lists.

Written by the indexing model from the issue text.

Assessment

Tech stack
mongodb, nextjs, typescript
Domain
database, full-stack, web-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.