Practitionist / Practitionist/elluminar_web

Proof-of-Work portfolio pages (public, auto-generated)

Open
#6 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

career post-mvp v1
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) + ProjectReview scores + MentorEndorsement (text, skills, visible)
  • Credential with public verification codes (verify page shipped at MVP M11)
  • Plan entitlement portfolioTier: BASIC|VERIFIED (Mentor/Career get VERIFIED)

Implementation plan

  1. 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.
  2. Auto-population service (src/lib/career/portfolio.ts): on ProjectInstance → PASSED or Credential issuance, append to the profile's default showcase; learner curates via featured Json (pin/hide/reorder).
  3. Profile editor in the learner dashboard: slug claim, headline/about (Tiptap), links, visibility control, talent-pool opt-in toggle (consent copy per DPDP).
  4. Endorsement flow: after final review, prompt mentor for a 2–3 sentence endorsement + skill tags (MentorEndorsement); learner can hide but not edit.
  5. OG image generation (satori) per profile for rich LinkedIn/X shares; share CTA post-completion ("Add to LinkedIn" deep link with certificate URL).
  6. VERIFIED tier treatment: verification badge + mentor-review provenance panel (review dates, mentor level) for Mentor/Career subscribers.
  7. SEO: sitemap inclusion for PUBLIC profiles, noindex for UNLISTED.
  8. 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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.