Skip to content

feat: Add User Profile Page with activity history, voting logs, and subscription status - #107

Merged
Divineifed1 merged 1 commit into
Exquisify:mainfrom
onajidavid87-web:user-profile-page
Aug 30, 2026
Merged

Divineifed1 merged 1 commit into
Exquisify:mainfrom
onajidavid87-web:user-profile-page

Conversation

@onajidavid87-web

Copy link
Copy Markdown
Contributor

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

  1. 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}.

  2. 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.

  3. 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

…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
@Divineifed1
Divineifed1 merged commit cfc11f8 into Exquisify:main Aug 30, 2026
1 check failed
@grantfox-oss grantfox-oss Bot mentioned this pull request Aug 30, 2026

This branch had an error being deployed

1 failed deployment
github-pages — 23759ded Deployed Aug 30, 2026 by onajidavid87-web via build-and-deploy #7
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.

User Profile Page

2 participants