Skip to content

feat(onboarding): add first-time dashboard tour for new users#305

Open
mallya-m wants to merge 5 commits into
Priyanshu-byte-coder:mainfrom
mallya-m:feat/onboarding-tour-251
Open

feat(onboarding): add first-time dashboard tour for new users#305
mallya-m wants to merge 5 commits into
Priyanshu-byte-coder:mainfrom
mallya-m:feat/onboarding-tour-251

Conversation

@mallya-m

Copy link
Copy Markdown
Contributor

What does this PR do?

Adds a step-by-step onboarding tour for first-time users using driver.js, highlighting key dashboard widgets with explanatory popups.

Related issue

Closes #251

Changes made

  • Created OnboardingTour.tsx component using driver.js
  • Tour auto-starts on first sign-in when seen_onboarding is false
  • Added seen_onboarding column to users table via SQL migration
  • Extended PATCH /api/user/settings to accept seen_onboarding field
  • Added "Take Tour" button in DashboardHeader so users can replay anytime
  • Tour covers 5 widgets: Contribution Graph, Streak, PR Metrics, Top Repos, Goals
  • Marked complete in Supabase on finish or skip — never auto-shows again

How to test

  1. Sign in for the first time — tour auto-starts after 0.8s
  2. Click through all 5 steps
  3. Sign out and sign back in — tour should NOT auto-start
  4. Click "Take Tour" button in header — tour restarts manually

Screenshots

Screenshot 2026-05-18 021550 Screenshot 2026-05-18 021132 Screenshot 2026-05-18 021121

@vercel

vercel Bot commented May 17, 2026

Copy link
Copy Markdown

@mallya-m is attempting to deploy a commit to the PRIYANSHU DOSHI's projects Team on Vercel.

A member of the Team first needs to authorize it.

@mallya-m

Copy link
Copy Markdown
Contributor Author

@Priyanshu-byte-coder
Could you please add the gssoc:approved, type:feature, and type:design labels?
Thank you!

@Priyanshu-byte-coder Priyanshu-byte-coder left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

driver.js is imported in OnboardingTour.tsx but not declared in package.json. This causes the build and dependency audit to fail.

Add it to package.json:

npm install driver.js

Then commit the updated package.json and package-lock.json. The onboarding tour implementation itself looks solid.

@Priyanshu-byte-coder

Copy link
Copy Markdown
Owner

This PR conflicts with recently merged changes. Please rebase onto main:

git fetch upstream && git rebase upstream/main

Resolve any conflicts, push, and I'll review.

@Priyanshu-byte-coder

Copy link
Copy Markdown
Owner

Hi @mallya-m — this PR has a merge conflict with main. Please rebase your branch:

git fetch upstream
git rebase upstream/main
# resolve conflicts, then:
git push --force-with-lease

Once rebased, we'll review and merge.

@mallya-m mallya-m force-pushed the feat/onboarding-tour-251 branch 2 times, most recently from 54eda1a to cd9ebfb Compare May 19, 2026 17:13
@mallya-m

Copy link
Copy Markdown
Contributor Author

Hi @Priyanshu-byte-coder

Rebased onto latest main and resolved all merge conflicts.

Also fixed driver.js dependency and synced package-lock.json.

All CI checks are now passing locally and on GitHub.

Ready to merge !

@Priyanshu-byte-coder Priyanshu-byte-coder left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

  1. CDN CSS version mismatch — OnboardingTour.tsx injects at runtime but package.json installs driver.js@^1.4.0. These versions differ and may cause visual glitches. Import statically instead: import 'driver.js/dist/driver.css'. 2. No migration file — PR description mentions adding seen_onboarding column but no supabase/migrations/ file is in the diff. Feature will break on any fresh deployment. Include the migration. 3. Missing EOF newlines on OnboardingTour.tsx, DashboardHeader.tsx, and settings/route.ts. 4. Indentation broken in settings/route.ts — the user resolution block loses indentation (starts at column 0 inside an if block). 5. package-lock.json churn — unrelated npm version artifacts. Revert.

@Priyanshu-byte-coder Priyanshu-byte-coder added level:intermediate GSSoC: Intermediate difficulty (35 pts) gssoc26 GSSoC 2026 contribution labels May 20, 2026
@mallya-m mallya-m force-pushed the feat/onboarding-tour-251 branch from cd9ebfb to 3dacde4 Compare May 20, 2026 19:55
@github-actions github-actions Bot added the type:feature GSSoC type bonus: new feature label May 20, 2026
@mallya-m

Copy link
Copy Markdown
Contributor Author

@Priyanshu-byte-coder all issues addressed:

  1. Replaced CDN CSS injection with static import in layout.tsx + added transpilePackages in next.config.mjs
  2. Fixed broken indentation in settings/route.ts PATCH handler
  3. Added migration file: 20260520000000_add_seen_onboarding.sql
  4. Added EOF newlines to all modified files
  5. Reverted package-lock.json churn
  6. Build passes with zero errors

Ready for merge!

@Priyanshu-byte-coder Priyanshu-byte-coder left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

Issues found in this PR:

  • Missing EOF newline — add a trailing newline to all modified files.

@mallya-m

Copy link
Copy Markdown
Contributor Author

@Priyanshu-byte-coder

  • Resolved all merge conflicts in DashboardHeader.tsx and dashboard/page.tsx, and added EOF newlines to all modified files.
  • Build passes with zero errors.
  • Fixed the E2E test failure — the driver.js overlay was intercepting pointer events during Playwright tests.
  • Added a navigator.webdriver guard so the tour skips in automated test environments.

All checks should pass now.
Ready for merge!

@mallya-m mallya-m removed their assignment May 21, 2026

@Priyanshu-byte-coder Priyanshu-byte-coder left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

PR is conflicting with main. Please rebase:

git fetch upstream
git rebase upstream/main
git push --force-with-lease

@mallya-m mallya-m force-pushed the feat/onboarding-tour-251 branch from 5741396 to 410c25b Compare May 22, 2026 19:53
@mallya-m

Copy link
Copy Markdown
Contributor Author

@Priyanshu-byte-coder rebased onto latest main and all issues resolved:

  1. Rebased cleanly onto upstream/main — conflicts in DashboardHeader.tsx, dashboard/page.tsx, and settings/route.ts all resolved
  2. EOF newlines added to all modified files
  3. OnboardingTour uses static driver.js CSS import (no CDN)
  4. seen_onboarding field supported in PATCH /api/u

@mallya-m

Copy link
Copy Markdown
Contributor Author

@Priyanshu-byte-coder the only remaining CI failure is landing.spec.js — this is a pre-existing issue unrelated to this PR.

The test checks for a single heading named "DevTrack" but the landing page now has two:

  • <h1>DevTrack</h1>
  • <h2>DevTrack keeps your coding story in one place.</h2>

This was introduced by a recent merge to main. My changes only touch dashboard components and don't affect the landing page at all. The same test fails on a fresh checkout of main.

All 5 other tests pass.

@mallya-m

Copy link
Copy Markdown
Contributor Author

@Priyanshu-byte-coder rebased onto latest main — conflicts in settings/route.ts and layout.tsx resolved. Ready for merge!

@Priyanshu-byte-coder Priyanshu-byte-coder added the gssoc:approved GSSoC: PR approved for scoring label May 24, 2026
@Priyanshu-byte-coder

Copy link
Copy Markdown
Owner

This PR has merge conflicts with main. Please rebase on the latest main branch and re-request review. The approach is approved — just needs conflict resolution.

@mallya-m

Copy link
Copy Markdown
Contributor Author

@Priyanshu-byte-coder conflict resolved — settings/route.ts and DashboardHeader.tsx rebased onto latest main.
Ready for merge!

@mallya-m

Copy link
Copy Markdown
Contributor Author

@Priyanshu-byte-coder the E2E failure is a pre-existing test issue unrelated to my changes.

The test looks for a heading named "Goals" but the GoalTracker component heading was likely renamed in a recent upstream merge. My PR only touches:

  • src/components/OnboardingTour.tsx
  • src/components/DashboardHeader.tsx
  • src/app/dashboard/page.tsx
  • src/app/api/user/settings/route.ts

None of these files touch GoalTracker or its heading. All 5 other tests pass. Ready for merge!

@Priyanshu-byte-coder

Copy link
Copy Markdown
Owner

This PR has conflicts with the current main branch. Please rebase on main to resolve conflicts so it can be reviewed and merged. Run: git fetch upstream main && git rebase upstream/main

@Priyanshu-byte-coder Priyanshu-byte-coder left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

This PR has merge conflicts with main. Please rebase onto the latest main branch and resolve conflicts to proceed with merging.

@Priyanshu-byte-coder

Copy link
Copy Markdown
Owner

This PR has merge conflicts with main. Please rebase your branch against the latest main and force-push to resolve. Run: git fetch upstream && git rebase upstream/main

@Priyanshu-byte-coder

Copy link
Copy Markdown
Owner

This PR has merge conflicts with main. Please rebase:

git fetch origin
git rebase origin/main
# fix conflicts, then:
git push --force-with-lease

@Priyanshu-byte-coder

Copy link
Copy Markdown
Owner

This PR has merge conflicts with the current main branch. Please rebase on the latest main to resolve them — your contribution is labeled for GSSoC scoring.

@Priyanshu-byte-coder

Copy link
Copy Markdown
Owner

This PR has merge conflicts with main — please rebase:

git fetch origin
git rebase origin/main
# Resolve any conflicts, then:
git push --force-with-lease

@Priyanshu-byte-coder Priyanshu-byte-coder added the quality:clean GSSoC: Clean quality multiplier (×1.2) label Jun 4, 2026
@mallya-m mallya-m force-pushed the feat/onboarding-tour-251 branch from 33d5bc0 to 4565876 Compare June 9, 2026 01:38
@mallya-m mallya-m force-pushed the feat/onboarding-tour-251 branch from 4565876 to 227ede4 Compare June 9, 2026 01:41
@mallya-m

mallya-m commented Jun 9, 2026

Copy link
Copy Markdown
Contributor Author

@Priyanshu-byte-coder rebased onto latest upstream/main — all conflicts resolved. Build , Lint , Type check

Only failing check is E2E Playwright — pre-existing issue unrelated to this PR (Supabase credentials unavailable in CI runner). Ready to merge!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gssoc:approved GSSoC: PR approved for scoring gssoc26 GSSoC 2026 contribution level:intermediate GSSoC: Intermediate difficulty (35 pts) quality:clean GSSoC: Clean quality multiplier (×1.2) type:feature GSSoC type bonus: new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT] Add dashboard onboarding tour for first-time users

2 participants