Practitionist / Practitionist/elluminar_web
Proof-of-Work portfolio pages (public, auto-generated)
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 1
- Forks
- 0
- Avg merge
- 17h 2m
- Merged PRs (30d)
- 18
Description
Why / Context
PRD §7.2B: the auto-generated Proof-of-Work profile is "the thing a self-paced Udemy certificate cannot offer" — a public, shareable portfolio built automatically from completed, mentor-reviewed projects and endorsements. It's the natural artifact to share with recruiters/LinkedIn and the substrate for the hiring-partner talent marketplace (V2). Confirmed whitespace in teardown §5.3: neither Crio nor Euron productizes this.
Schema already in place — NO migration required
PortfolioProfile(slug, headline, about, visibility PUBLIC/UNLISTED/PRIVATE, talentOptIn, featured Json)ProjectInstance(status: PASSED)+ProjectReviewscores +MentorEndorsement(text, skills, visible)Credentialwith public verification codes (verify page shipped at MVP M11)- Plan entitlement
portfolioTier: BASIC|VERIFIED(Mentor/Career get VERIFIED)
Implementation plan
- Public route
/(marketing)/p/[slug](ISR): hero (headline/about/links), verified credentials strip, project showcase cards (title, tier badge, tech stack, mentor endorsement quotes, final score band), completed-course section. - Auto-population service (
src/lib/career/portfolio.ts): onProjectInstance→ PASSED orCredentialissuance, append to the profile's default showcase; learner curates viafeatured Json(pin/hide/reorder). - Profile editor in the learner dashboard: slug claim, headline/about (Tiptap), links, visibility control, talent-pool opt-in toggle (consent copy per DPDP).
- Endorsement flow: after final review, prompt mentor for a 2–3 sentence endorsement + skill tags (
MentorEndorsement); learner can hide but not edit. - OG image generation (satori) per profile for rich LinkedIn/X shares; share CTA post-completion ("Add to LinkedIn" deep link with certificate URL).
- VERIFIED tier treatment: verification badge + mentor-review provenance panel (review dates, mentor level) for Mentor/Career subscribers.
- SEO: sitemap inclusion for PUBLIC profiles, noindex for UNLISTED.
- Privacy: PRIVATE default; anonymization job (issue #24) must blank profiles — add to that issue's checklist.
Acceptance criteria
- Passing a project adds it to the learner's portfolio automatically; learner can feature/hide items
- Public profile renders without auth, with working credential verification links
- Mentor endorsements appear with attribution and skills
- OG card renders correctly in LinkedIn/X preview debuggers
- Visibility controls enforced (UNLISTED not in sitemap; PRIVATE 404s for others)
Dependencies / sequencing
- MVP M10 + M11 required
- Prerequisite for issue #18 (talent marketplace searches over opted-in portfolios)
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the existing PortfolioProfile, ProjectInstance, ProjectReview, MentorEndorsement, and Credential schema, then inspect src/lib/career/portfolio.ts and the public route /(marketing)/p/[slug]. Review the learner dashboard entry point and MVP M10/M11 dependencies before planning the editor, endorsement, SEO, and OG-image work. Done means the acceptance criteria pass, including visibility enforcement and adding the anonymization checklist to issue #24.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- full-stack
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100