Skip to content

feat: add guided onboarding#37

Merged
MaximilianAnzinger merged 35 commits into
mainfrom
feature/onboarding
Mar 4, 2026
Merged

feat: add guided onboarding#37
MaximilianAnzinger merged 35 commits into
mainfrom
feature/onboarding

Conversation

@markstockhausen

Copy link
Copy Markdown
Contributor

Description

This PR introduces a full onboarding flow and user dashboard to the Memo platform. Users are now guided through a practice session when they first sign up, helping them understand the competency mapping task before starting real sessions.

Type of Change

  • 🐛 Bug fix (non-breaking change which fixes an issue)
  • ✨ New feature (non-breaking change which adds functionality)
  • 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • 📝 Documentation update
  • 🎨 Style/formatting changes (no functional changes)
  • ♻️ Code refactoring (no functional changes)
  • ⚡ Performance improvements
  • 🔧 Configuration changes
  • [] 🧪 Test additions or modifications
  • 🚀 Deployment/DevOps changes

Changes Made

  • Client:

    • Added full onboarding flow (OnboardingPage.tsx, OnboardingPractice.tsx, OnboardingStep.tsx) with a practice mapping session and profile setup step
  • Other:

    • Fixed security audit findings

Testing

Test Cases

  • Existing functionality still works
  • New functionality works as expected
  • Edge cases handled appropriately

Manual Testing

  • Tested in development environment
  • Tested with different user roles/permissions (if applicable)

Screenshots/Videos

Before

Onboarding did not exist

After

AfterPR

@markstockhausen markstockhausen self-assigned this Mar 4, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a guided onboarding experience and a contributor dashboard (heatmap + milestone badges), while also switching the session “competency mapping” flow over to a new server-side scheduling + voting pipeline backed by new tables/migrations.

Changes:

  • Adds multi-step onboarding with a built-in practice mapping tutorial and “onboarded” tracking via localStorage.
  • Introduces a contributor dashboard UI (stats, streaks, heatmap, milestone badges) plus client-side milestone toasts.
  • Implements a new backend scheduling/voting system (new entities, repositories, services, controllers, and Flyway migrations) and updates the session client to use it.

Reviewed changes

Copilot reviewed 48 out of 50 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
src/pages/SessionPage.tsx Switches competency mapping to “next task + submit vote”, adds milestones/toasts, end-session overlay, and “all done” state.
src/pages/OnboardingPage.tsx Replaces the old onboarding stub with a 5-step guided onboarding flow + practice session.
src/pages/HomePage.tsx Routes “Start Contributing” to onboarding vs session based on localStorage; updates hero preview + adds network viz.
src/pages/DashboardPage.tsx New dashboard page fetching contributor stats and rendering heatmap + milestone badges.
src/lib/milestones.ts Defines milestone/badge metadata and helper for “newly earned” milestones.
src/lib/heatmap-helpers.ts Adds helper to map activity counts to Tailwind color classes.
src/lib/api/session-helpers.ts Adds scheduling-based “next relationship task” and “submit vote” helpers; removes relationship creation helper.
src/lib/api/scheduling.ts New API client for scheduling “next task” and “vote” endpoints.
src/lib/api/contributor-stats.ts New API client/types for contributor stats endpoint.
src/lib/api/competency-relationships.ts Removes client-side “create relationship” API method (CRUD now limited to get/delete).
src/index.css Adds explicit Geist font CSS variables.
src/components/ui/sonner.tsx Adds themed Sonner toaster wrapper component.
src/components/ui/select.tsx Adds Radix Select wrapper components.
src/components/ui/popover.tsx Adds Popover wrapper component (Radix-based).
src/components/ui/dialog.tsx Adds Dialog wrapper component (Radix-based).
src/components/ui/command.tsx Adds cmdk-based Command components + Dialog integration.
src/components/session/SessionSummary.tsx Adds end-of-session summary overlay (continue vs dashboard).
src/components/onboarding/OnboardingStep.tsx Adds animated step transition wrapper for onboarding.
src/components/onboarding/OnboardingPractice.tsx Adds onboarding practice tutorial with guided rounds and feedback.
src/components/navbar.tsx Updates navbar controls (dashboard link, icon tweaks, class refactor).
src/components/dashboard/ContributionHeatmap.tsx Adds scrollable contribution heatmap visualization.
src/components/competency-network/CompetencyNetworkViz.tsx Adds lightweight SVG “competency network” preview viz for onboarding/home.
src/components/Layout.tsx Adjusts layout min-height calculation.
src/App.tsx Registers toaster and adds the new /dashboard route.
package.json Adds dependencies for select/cmdk/sonner and a radix-ui dependency.
server/src/main/resources/db/migration/V8__seed_additional_competencies.sql Seeds additional competencies/relationships/votes to exercise stats + streaks.
server/src/main/resources/db/migration/V7__add_competency_degree.sql Adds degree column to competencies and backfills/indexes it.
server/src/main/resources/db/migration/V6__create_scheduling_tables.sql Creates new scheduling tables for aggregated relationships + vote log.
server/src/main/resources/db/migration/V5__drop_old_relationships.sql Drops the old relationships table/constraints (development reset).
server/src/main/resources/db/migration/V2__seed_sample_data.sql Removes old relationship seed statements that no longer match schema.
server/src/main/java/de/tum/cit/memo/service/SchedulingService.java Implements coverage/consensus scheduling pipeline + vote submission logic.
server/src/main/java/de/tum/cit/memo/service/ContributorStatsService.java Computes total votes, streaks, heatmap daily counts, and badge IDs.
server/src/main/java/de/tum/cit/memo/service/CompetencyRelationshipService.java Refactors relationship CRUD to align with new aggregated relationship model.
server/src/main/java/de/tum/cit/memo/repository/CompetencyRepository.java Adds degree-based queries + increment/decrement helpers.
server/src/main/java/de/tum/cit/memo/repository/CompetencyRelationshipVoteRepository.java Adds vote existence/count + daily aggregation query for stats.
server/src/main/java/de/tum/cit/memo/repository/CompetencyRelationshipRepository.java Adds scheduling queries: high-entropy candidates, pool relationships, unvoted relationships.
server/src/main/java/de/tum/cit/memo/entity/CompetencyRelationshipVote.java New entity for raw vote log.
server/src/main/java/de/tum/cit/memo/entity/CompetencyRelationship.java Refactors relationship entity to aggregated vote counters + entropy + timestamps.
server/src/main/java/de/tum/cit/memo/entity/Competency.java Adds degree field for scheduling.
server/src/main/java/de/tum/cit/memo/dto/VoteResponse.java DTO for vote submission response.
server/src/main/java/de/tum/cit/memo/dto/VoteRequest.java DTO for vote submission request (relationshipId or origin+destination).
server/src/main/java/de/tum/cit/memo/dto/VoteCounts.java DTO for aggregated vote counts.
server/src/main/java/de/tum/cit/memo/dto/RelationshipTaskResponse.java DTO for “next relationship” task response.
server/src/main/java/de/tum/cit/memo/dto/CreateCompetencyRelationshipRequest.java Removes old create-relationship request DTO.
server/src/main/java/de/tum/cit/memo/dto/ContributorStatsResponse.java DTO for contributor stats endpoint response.
server/src/main/java/de/tum/cit/memo/controller/SchedulingController.java Adds /api/scheduling/next-relationship and /api/scheduling/vote endpoints.
server/src/main/java/de/tum/cit/memo/controller/ContributorStatsController.java Adds /api/users/{userId}/stats endpoint.
server/src/main/java/de/tum/cit/memo/controller/CompetencyRelationshipController.java Removes create endpoint; keeps CRUD with doc pointer to SchedulingController.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread server/src/main/java/de/tum/cit/memo/dto/VoteRequest.java Outdated
Comment thread src/pages/SessionPage.tsx
Comment thread src/pages/SessionPage.tsx
Comment thread src/pages/SessionPage.tsx Outdated
Comment thread src/pages/OnboardingPage.tsx
@github-actions github-actions Bot added enhancement New feature or request client-application 🎨 Client-side/UI changes configuration ⚙️ Configuration file changes dependencies 📦 Dependency updates labels Mar 4, 2026
@ls1intum ls1intum deleted a comment from Copilot AI Mar 4, 2026
@ls1intum ls1intum deleted a comment from Copilot AI Mar 4, 2026
@ls1intum ls1intum deleted a comment from Copilot AI Mar 4, 2026
@github-actions

github-actions Bot commented Mar 4, 2026

Copy link
Copy Markdown

🔍 Code Quality Report

📊 Code Statistics

🚨 Potential Issues

✅ No console statements found
⚠️ Found 'any' or 'unknown' types - consider using more specific types

@github-actions

github-actions Bot commented Mar 4, 2026

Copy link
Copy Markdown

🔍 Code Quality Report

📊 Code Statistics

🚨 Potential Issues

✅ No console statements found
⚠️ Found 'any' or 'unknown' types - consider using more specific types

@markstockhausen
markstockhausen requested review from vtotalova and removed request for vtotalova March 4, 2026 17:01
@MaximilianAnzinger
MaximilianAnzinger merged commit 00ea92e into main Mar 4, 2026
8 checks passed
@MaximilianAnzinger
MaximilianAnzinger deleted the feature/onboarding branch March 4, 2026 18:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

client-application 🎨 Client-side/UI changes configuration ⚙️ Configuration file changes dependencies 📦 Dependency updates enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants