Repository navigation
feat: Add User Profile Page with activity history, voting logs, and subscription status - #107
Merged
Conversation
…ubscription status
Implemented a fully responsive User Profile page (
app/[locale]/profile/[userId]/page.jsx
) allowing users to view their profile metadata, created ideas, voting history, and active subscription status.
Key Changes
User Profile UI Component (app/[locale]/profile/[userId]/page.jsx): Designed a responsive interface with tabs for:
Overview: Profile metadata, engagement statistics (ideas shared, votes cast, total upvotes), and subscription summary.
Created Ideas: Interactive list of ideas created by the user with vote counts, status badges, and detail links.
Voting History: Comprehensive timeline log of upvotes and downvotes cast by the user.
Subscription Status: Subscription tier display (Free/Pro/Enterprise), active status badge, expiration/renewal date, included plan benefits, and upgrade call-to-action.
Service & Data Resolution (lib/user-profile.js): Created helper service to fetch and structure user profiles, activity metrics, created ideas, voting logs, and subscription metadata.
API Endpoint (app/api/users/[userId]/route.js): Added GET /api/users/[userId] REST route returning profile JSON payloads.
Navigation Integration (components/auth-status.jsx): Updated user dropdown navigation link to direct users to their localized profile page (/${locale}/profile/${userId}).
Build & Dependency Verification: Resolved TypeScript component prop types and missing module dependencies to ensure full compatibility with Next.js production builds and next-intl.
Closes Exquisify#85
onajidavid87-web
had a problem deploying
to
github-pages
August 30, 2026 20:29 — with
GitHub Actions
Failure
Closed
This branch had an error being deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR introduces the User Profile Page feature under app/[locale]/profile/[userId]/page.jsx. Users can now view their profile metadata, track ideas they have submitted, review their voting history timeline, and inspect their active subscription tier and expiration/renewal dates.
Type of Change
[x] New feature (non-breaking change which adds functionality)
[x] Refactor / Maintenance (dependency and TypeScript type resolutions)
[x] Tests (unit tests added for profile data resolution)
Changes Implemented
UI & Page Components
User Profile View (app/[locale]/profile/[userId]/page.jsx):
Profile Header: User avatar, display name, username, join date badge, subscription tier badge, and edit profile action.
Overview Tab: Highlights user statistics (ideas created count, votes cast, total upvotes received) alongside a subscription summary card.
Created Ideas Tab: Dynamic list displaying ideas submitted by the user with vote counts, status badges, categories, and direct detail links.
Voting History Tab: Audit log of upvotes and downvotes cast by the user with vote weights and timestamps.
Subscription Plan Tab: Details current plan tier (Free/Pro/Enterprise), subscription status (Active/Expired), expiration/renewal date, included feature list, and upgrade CTA button.
Navigation Integration (components/auth-status.jsx): Updated header profile link to dynamically direct authenticated users to /${locale}/profile/${user.id}.
Backend & Data Resolution Layer
Profile Resolver Service (lib/user-profile.js): Added helper function getUserProfile(userId, currentUser) to query user profile details, created ideas, voting logs, and subscription metadata.
API Endpoint (app/api/users/[userId]/route.js): Created GET /api/users/[userId] REST route returning standard JSON profile payloads.
Build & CI Compatibility
Converted button.jsx to button.tsx with exported ButtonProps interface to resolve TypeScript build type errors in dependent UI components.
Updated relative import paths across components/ui components to use the standard alias @/lib/utils.
Updated next.config.mjs with createNextIntlPlugin('./src/i18n/request.ts') for seamless Next.js App Router localization build support.
Closes #85