Skip to content

Add public read-only profile endpoint - #1042

Merged
nafiuishaaq merged 5 commits into
MentoNest:mainfrom
No-bodyq:feat/issue-992-public-profile-endpoint
Aug 2, 2026
Merged

Add public read-only profile endpoint#1042
nafiuishaaq merged 5 commits into
MentoNest:mainfrom
No-bodyq:feat/issue-992-public-profile-endpoint

Conversation

@No-bodyq

Copy link
Copy Markdown
Contributor

Closes #992

Note: this branch is stacked on #1041 (issue #993) for the avatarUrl column and shared Redis wiring, so its diff will include those commits until that PR merges.

  • GET /profiles/:userId is unauthenticated and returns only safe fields — never wallet address, email, or status
  • Mentors get displayName, avatarUrl, bio, skills, hourlyRate, expertiseAreas, averageRating, totalMentoringHours, isVerified, and a computed profileCompletion badge
  • Mentees get displayName, avatarUrl, learningGoals, areasOfInterest, join date, and profileCompletion
  • Returns 404 when the user doesn't exist or has neither a mentor nor mentee profile
  • Response includes profileType and isVerified, is cached in Redis for 5 minutes per user, and the route is rate-limited to 100 requests/minute/IP
  • Unit tests for the service (cache hit/miss, field allowlisting, 404 cases) and controller, plus an e2e scaffold

@drips-wave

drips-wave Bot commented Jul 25, 2026

Copy link
Copy Markdown

@No-bodyq 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

@No-bodyq
No-bodyq force-pushed the feat/issue-992-public-profile-endpoint branch from 9d6ffe1 to f1a66c1 Compare July 26, 2026 20:50
@No-bodyq
No-bodyq force-pushed the feat/issue-992-public-profile-endpoint branch from f1a66c1 to 475896c Compare July 26, 2026 21:00
No-bodyq added 4 commits July 26, 2026 22:34
- auth.controller.ts had two full AuthController class bodies concatenated
  (a botched prior merge), which broke parsing for the whole file and
  cascaded into unrelated eslint type-resolution errors repo-wide
- add missing @nestjs/swagger dependency (used throughout but never
  added to package.json)
- fix relative import paths in auth.service.ts (an extra '../' pointed
  outside src/auth, breaking NodeNext module resolution)
- add .js extensions to relative imports per the project's nodenext
  moduleResolution, removing further unresolved-type cascades
- remove JwtAuthGuard's unresolvable third constructor parameter (a bare
  function type Nest can never inject), small unused-import/no-await
  cleanups, and a wrong TypeORM option name (connectTimeout -> connectTimeoutMS)
- apply repo-wide prettier formatting (was never run on ~50 files)

Lint: 95 errors -> 0. Build: failing -> passing. Prettier: 51 files -> 0.
…ation

These specs were written against a device-aware, RefreshTokenService +
UsersService backed refresh-token design that was never wired into
AuthService/AuthController — the real implementation still uses the
simpler in-memory nonce/token-map flow. Rewrite both specs to exercise
what's actually there instead of leaving them permanently red.
@nafiuishaaq
nafiuishaaq merged commit 3d3f7f7 into MentoNest:main Aug 2, 2026
0 of 2 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

Development

Successfully merging this pull request may close these issues.

Public profile endpoint

2 participants