Practitionist / Practitionist/elluminar_web
Mock-interview & mentor booking marketplace (+ Google Calendar sync)
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: a mock-interview marketplace (bookable 1:1 sessions with senior mentors, ADPList/Topmate-style but native) is a natural cross-sell beyond project review and gives mentors a second earning stream — which also deepens mentor supply for the project engine. Multi-format commerce is a proven Euron Systems pattern (teardown STEAL: 1:1 consultations as core, not experimental).
Schema already in place — NO migration required
MentorOffering(MOCK_INTERVIEW/OFFICE_HOURS/CONSULTATION/RESUME_REVIEW, durationMin) + Price(MENTOR_OFFERING)MentorBooking(status machine, orderItemId, liveSessionId, rating/review)LiveSession(purpose: MENTOR_BOOKING)+calendarEventReffield for Google Calendar syncMentorProfile.availability Json; ledger MENTOR_FEE path reusable for booking payouts- Career entitlement
mockInterviewDiscountBpsalready seeded
Implementation plan
- Mentor offering management: mentors create offerings + set INR prices (Price rows) and weekly availability (structured
availability Json). - Booking UX: mentor directory (level, expertise, rating) → offering page → slot picker (availability minus existing bookings, timezone-aware) → cart/checkout (MENTOR_OFFERING item) →
MentorBooking(REQUESTED). - Confirmation flow: mentor confirms (or auto-confirm setting) → create
LiveSession(purpose: MENTOR_BOOKING)via Fermion → notifications both sides. - Google Calendar integration (
src/lib/calendar/google.ts): OAuth per mentor (Calendar API), busy-time overlay on availability, event creation on confirm (storecalendarEventRef) — PRD §9.5: calendar is integrated, never built. - Lifecycle: reschedule (one free), cancel windows w/ refund policy (reuse Refund flow, reason OTHER/policy), NO_SHOW handling, completion → rating prompt.
- Payouts: on COMPLETED,
LedgerEntry(MENTOR_FEE)to mentor account minus platform take (PlatformConfigbookings.platformFeeBps); flows into issue #14 payout runs. - Career-tier discount application at pricing engine (entitlement already present).
- Quality: rating aggregates on mentor directory, admin flag for repeated no-shows.
Acceptance criteria
- Book → pay → confirm → join live session → complete → mentor ledger credited, learner rating captured
- Slot double-booking impossible (availability minus busy calendar minus bookings)
- Google Calendar event appears/updates/deletes with booking lifecycle
- Cancellation inside window auto-refunds per policy
- Career-tier learner sees the discounted price automatically
Dependencies / sequencing
- MVP M7 (checkout), M4 (Fermion live), mentor pool from M10
- Payout automation (issue #14) recommended first
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 by reviewing the existing MentorOffering, MentorBooking, LiveSession, Price, and ledger models, then inspect src/lib/calendar/google.ts and the checkout, Refund, and payout flows. The dependencies listed in the issue should be available before implementation begins. Done means the complete booking lifecycle works, including calendar synchronization, refunds, discounts, double-booking prevention, mentor credit, and learner ratings.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- google-cloud, typescript
- Domain
- api, cloud, full-stack, payments
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100