IndieCoderMM / IndieCoderMM/curated
Add Private Courses Accessible via Invite Link
- 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