Skip to content

feat: close #677 #753 #761 #762 with leaderboard E2E, sponsor portal, impact dashboard, and lesson content versioning#878

Merged
Anuoluwapo25 merged 6 commits into
bakeronchain:mainfrom
iammrjude:feat/issues-677-753-761-762
Apr 28, 2026
Merged

feat: close #677 #753 #761 #762 with leaderboard E2E, sponsor portal, impact dashboard, and lesson content versioning#878
Anuoluwapo25 merged 6 commits into
bakeronchain:mainfrom
iammrjude:feat/issues-677-753-761-762

Conversation

@iammrjude
Copy link
Copy Markdown
Contributor

Summary

This PR delivers the four feature issues and includes related cleanup/fixes across frontend, backend, routes, and tests.

Closes #677
Closes #753
Closes #761
Closes #762

Context / Important Notes

  • target_local/ cleanup was completed in main (commit 6682489), and this branch is based on that cleanup.
  • Merge-conflict markers (<<<<<<<, =======, >>>>>>>) were resolved/removed in affected files.
  • This branch currently includes coverage/ artifacts and yarn.lock from local workspace updates.

Issue-by-Issue Implementation

#677 feat: E2E test — leaderboard display and ranking

Implemented an end-to-end Playwright test that validates:

  • navigation to leaderboard
  • top scholar list rendering
  • connected user rank visibility
  • pagination behavior
  • truncated addresses display

Key files:

  • e2e/leaderboard.spec.ts (created)
  • src/pages/Leaderboard.tsx (updated)
  • src/hooks/useLeaderboard.ts (updated)
  • src/components/AddressDisplay.tsx (updated)
  • server/src/controllers/scholars.controller.ts (updated)
  • server/src/routes/scholars.routes.ts (updated)

#753 feat: add corporate/organization sponsor portal

Implemented:

  • organization profile
  • track-specific sponsorship
  • sponsor logos on course/lesson pages
  • quarterly sponsor reporting
  • organization dashboard for scholar progress

Key files:

  • server/src/db/migrations/015_sponsor_portal.sql (created)
  • server/src/db/migrations/015_sponsor_portal.undo.sql (created)
  • server/src/controllers/sponsors.controller.ts (created)
  • server/src/routes/sponsors.routes.ts (created)
  • src/hooks/useSponsors.ts (created)
  • src/components/SponsorLogosForTrack.tsx (created)
  • src/pages/SponsorPortal.tsx (created)
  • src/pages/Courses.tsx (updated)
  • src/pages/LessonView.tsx (updated)
  • src/components/NavBar.tsx (updated)
  • src/App.tsx (updated)
  • server/src/index.ts (updated)

#761 feat: add scholarship impact metrics public dashboard

Implemented:

  • total scholars funded
  • total USDC disbursed
  • average completion rate
  • countries/regions represented
  • total LRN minted
  • top 5 completed courses
  • animated counters/charts
  • embeddable widget

Key files:

  • server/src/controllers/impact.controller.ts (created)
  • server/src/routes/impact.routes.ts (created)
  • src/hooks/useImpactMetrics.ts (created)
  • src/pages/ImpactDashboard.tsx (created)
  • src/pages/ImpactWidget.tsx (created)
  • src/components/NavBar.tsx (updated)
  • src/App.tsx (updated)
  • server/src/index.ts (updated)

#762 feat: add course content versioning

Implemented:

  • lesson versioning fields/migration
  • soft retention of old lesson versions
  • enrollment pinned to content version at enrollment time
  • “Updated content available” learner banner
  • admin lesson diff endpoint/page
  • admin lesson version update flow

Key files:

  • server/src/db/migrations/016_lesson_content_versioning.sql (created)
  • server/src/db/migrations/016_lesson_content_versioning.undo.sql (created)
  • server/src/controllers/enrollments.controller.ts (updated)
  • server/src/controllers/courses.controller.ts (updated)
  • server/src/routes/courses.routes.ts (updated)
  • src/pages/LessonVersionDiff.tsx (created)
  • src/hooks/useCourses.ts (updated)
  • src/types/courses.ts (updated)
  • src/pages/LessonView.tsx (updated)
  • src/App.tsx (updated)

Additional Fixes Included

  • Merge-conflict cleanup and route/auth consistency updates in:
    • server/src/index.ts
    • server/src/middleware/course-admin.middleware.ts
    • server/src/routes/scholars.routes.ts
    • src/hooks/useDonor.ts
    • src/types/contracts.ts
    • src/components/AddressDisplay.tsx
    • src/pages/Courses.tsx

Full File Inventory (relative paths)

Added

  • coverage/lcov-report/auth.ts.html
  • coverage/lcov-report/base.css
  • coverage/lcov-report/block-navigation.js
  • coverage/lcov-report/contract.ts.html
  • coverage/lcov-report/error.ts.html
  • coverage/lcov-report/favicon.png
  • coverage/lcov-report/formatDate.ts.html
  • coverage/lcov-report/friendbot.ts.html
  • coverage/lcov-report/index.html
  • coverage/lcov-report/learningTime.ts.html
  • coverage/lcov-report/mockLeaderboardData.ts.html
  • coverage/lcov-report/prettify.css
  • coverage/lcov-report/prettify.js
  • coverage/lcov-report/profileData.ts.html
  • coverage/lcov-report/proposalDraft.ts.html
  • coverage/lcov-report/reputationRank.ts.html
  • coverage/lcov-report/safeMarkdown.ts.html
  • coverage/lcov-report/scholarshipApplications.ts.html
  • coverage/lcov-report/scholarshipTreasury.ts.html
  • coverage/lcov-report/sorobanAdmin.ts.html
  • coverage/lcov-report/sort-arrow-sprite.png
  • coverage/lcov-report/sorter.js
  • coverage/lcov-report/storage.ts.html
  • coverage/lcov-report/theme.ts.html
  • coverage/lcov-report/tokenFormat.ts.html
  • coverage/lcov-report/usdc.ts.html
  • coverage/lcov-report/wallet.ts.html
  • coverage/lcov.info
  • e2e/leaderboard.spec.ts
  • server/src/controllers/impact.controller.ts
  • server/src/controllers/sponsors.controller.ts
  • server/src/db/migrations/015_sponsor_portal.sql
  • server/src/db/migrations/015_sponsor_portal.undo.sql
  • server/src/db/migrations/016_lesson_content_versioning.sql
  • server/src/db/migrations/016_lesson_content_versioning.undo.sql
  • server/src/routes/impact.routes.ts
  • server/src/routes/sponsors.routes.ts
  • src/components/SponsorLogosForTrack.tsx
  • src/hooks/useImpactMetrics.ts
  • src/hooks/useSponsors.ts
  • src/pages/ImpactDashboard.tsx
  • src/pages/ImpactWidget.tsx
  • src/pages/LessonVersionDiff.tsx
  • src/pages/SponsorPortal.tsx
  • yarn.lock

Modified

  • .github/workflows/frontend-ci.yml
  • .github/workflows/server-ci.yml
  • contracts/course_milestone/src/lib.rs
  • contracts/course_milestone/src/test.rs
  • contracts/fungible-allowlist/src/lib.rs
  • contracts/governance_token/src/lib.rs
  • contracts/learn_token/src/lib.rs
  • contracts/learn_token/src/test.rs
  • contracts/milestone_escrow/src/lib.rs
  • contracts/milestone_escrow/src/test.rs
  • contracts/scholar_nft/src/lib.rs
  • contracts/scholar_nft/src/test.rs
  • contracts/scholarship_treasury/src/lib.rs
  • contracts/upgrade_timelock_vault/src/lib.rs
  • docs/contracts.md
  • docs/token-economics.md
  • eslint.config.js
  • package-lock.json
  • server/package.json
  • server/scripts/migrate.ts
  • server/src/controllers/courses.controller.ts
  • server/src/controllers/enrollments.controller.ts
  • server/src/controllers/governance.controller.ts
  • server/src/controllers/milestone-submit.controller.ts
  • server/src/controllers/scholars.controller.ts
  • server/src/index.ts
  • server/src/lib/zod-schemas.ts
  • server/src/middleware/admin.middleware.ts
  • server/src/middleware/course-admin.middleware.ts
  • server/src/middleware/rate-limit.middleware.ts
  • server/src/openapi.ts
  • server/src/routes/comments.routes.ts
  • server/src/routes/courses.routes.ts
  • server/src/routes/governance.routes.ts
  • server/src/routes/scholars.routes.ts
  • server/src/routes/upload.routes.ts
  • server/src/services/stellar-contract.service.ts
  • server/src/templates/email-templates.ts
  • server/src/tests/comments.test.ts
  • server/src/tests/governance.test.ts
  • server/src/tests/upload.test.ts
  • src/App.tsx
  • src/components/AddressDisplay.tsx
  • src/components/CommentCard.tsx
  • src/components/CommentSection.tsx
  • src/components/FollowButton.tsx
  • src/components/GlobalSearch.tsx
  • src/components/LessonContent.tsx
  • src/components/LessonSidebar.tsx
  • src/components/NavBar.tsx
  • src/components/forum/CourseForum.tsx
  • src/hooks/useAdmin.ts
  • src/hooks/useAdminContracts.test.tsx
  • src/hooks/useBookmarks.ts
  • src/hooks/useCourses.ts
  • src/hooks/useDonor.test.tsx
  • src/hooks/useDonor.ts
  • src/hooks/useForum.ts
  • src/hooks/useLeaderboard.ts
  • src/hooks/useLearnToken.ts
  • src/hooks/useLearnerProfile.ts
  • src/hooks/useNotifications.ts
  • src/hooks/useScholarMilestones.ts
  • src/hooks/useScholarProfile.ts
  • src/hooks/useScholarshipApplication.ts
  • src/hooks/useWiki.ts
  • src/lib/sentry.ts
  • src/pages/Admin.tsx
  • src/pages/Community.tsx
  • src/pages/Courses.tsx
  • src/pages/DaoProposals.tsx
  • src/pages/DaoPropose.tsx
  • src/pages/Dashboard.tsx
  • src/pages/Home.tsx
  • src/pages/Leaderboard.tsx
  • src/pages/LessonView.tsx
  • src/pages/Profile.tsx
  • src/types/contracts.ts
  • src/types/courses.ts
  • src/util/formatDate.ts
  • tsconfig.app.json
  • tsconfig.app.tsbuildinfo
  • tsconfig.node.json
  • vitest.config.ts

@drips-wave
Copy link
Copy Markdown

drips-wave Bot commented Apr 28, 2026

@iammrjude Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@iammrjude iammrjude marked this pull request as ready for review April 28, 2026 21:53
@Anuoluwapo25 Anuoluwapo25 merged commit d83b1f9 into bakeronchain:main Apr 28, 2026
2 of 11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants