Practitionist / Practitionist/elluminar_web

Mock-interview & mentor booking marketplace (+ Google Calendar sync)

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

Nobody has claimed this yet.

career commerce post-mvp v2
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) + calendarEventRef field for Google Calendar sync
  • MentorProfile.availability Json; ledger MENTOR_FEE path reusable for booking payouts
  • Career entitlement mockInterviewDiscountBps already seeded

Implementation plan

  1. Mentor offering management: mentors create offerings + set INR prices (Price rows) and weekly availability (structured availability Json).
  2. Booking UX: mentor directory (level, expertise, rating) → offering page → slot picker (availability minus existing bookings, timezone-aware) → cart/checkout (MENTOR_OFFERING item) → MentorBooking(REQUESTED).
  3. Confirmation flow: mentor confirms (or auto-confirm setting) → create LiveSession(purpose: MENTOR_BOOKING) via Fermion → notifications both sides.
  4. Google Calendar integration (src/lib/calendar/google.ts): OAuth per mentor (Calendar API), busy-time overlay on availability, event creation on confirm (store calendarEventRef) — PRD §9.5: calendar is integrated, never built.
  5. Lifecycle: reschedule (one free), cancel windows w/ refund policy (reuse Refund flow, reason OTHER/policy), NO_SHOW handling, completion → rating prompt.
  6. Payouts: on COMPLETED, LedgerEntry(MENTOR_FEE) to mentor account minus platform take (PlatformConfig bookings.platformFeeBps); flows into issue #14 payout runs.
  7. Career-tier discount application at pricing engine (entitlement already present).
  8. 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

  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 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.