Skip to content

Enhance project details screen with contributors and roadmap features…#470

Open
TheDEV111 wants to merge 5 commits intoPulsefy:mainfrom
TheDEV111:feat/mobile-project-details
Open

Enhance project details screen with contributors and roadmap features…#470
TheDEV111 wants to merge 5 commits intoPulsefy:mainfrom
TheDEV111:feat/mobile-project-details

Conversation

@TheDEV111
Copy link
Copy Markdown

@TheDEV111 TheDEV111 commented Mar 25, 2026

feat(mobile): create project detail screen — closes #419

Summary

Implements the ProjectDetailScreen deep-dive view for ecosystem crowdfunding projects, reachable by tapping any project card on the Projects tab. The screen shows the project's description, animated funding progress, roadmap milestones, recent contributors, and a pinned Contribute CTA — all backed by live on-chain data from the Soroban Vault.


Changes

[id].tsx — full rewrite

  • Hero banner — full-bleed 240px image using expo-image (contentFit="cover", 300ms crossfade transition). Falls back to a deterministic brand-colour placeholder with a large watermark initial when no imageUrl is provided. A LinearGradient overlay renders the project title and an Active / Closed live-dot badge on top of the image.
  • Floating back button — positioned absolutely over the banner; respects the safe-area top inset so it never overlaps the status bar.
  • Animated funding progress bar — uses Animated.spring (useNativeDriver: false) to spring from 0 → actual % on data load, accurately reflecting the underlying Soroban Vault balance.
  • Stats grid — contributor count and remaining XLM displayed in two symmetrical cards.
  • About section — shown only when the API returns a description.
  • Roadmap section — vertical timeline with Done / Active / Soon badges; sourced from GET /crowdfund/projects/:id/roadmap.
  • Recent contributors — top-5 list with truncated Stellar address, relative timestamp, and total contributed XLM; sourced from GET /crowdfund/projects/:id/contributors.
  • Pinned Contribute CTA — fixed to the bottom, hidden when project is inactive, respects the safe-area bottom inset.
  • All three data calls (getProject, getContributors, getRoadmap) run in parallel via Promise.allSettled — contributor/roadmap failures degrade gracefully without breaking the screen.

_layout.tsx

  • Set headerShown: false on the [id] screen to enable the full-bleed hero banner.

crowdfund.ts

  • Added optional description and imageUrl fields to CrowdfundProject.
  • New RoadmapMilestone interface (id, title, description, status, targetDate).
  • New ContributorSummary interface (contributor, totalAmount, lastContributionAt).
  • Added crowdfundApi.getContributors(projectId)GET /crowdfund/projects/:id/contributors.
  • Added crowdfundApi.getRoadmap(projectId)GET /crowdfund/projects/:id/roadmap.

package.json

  • Added expo-image ^55.0.6 and expo-linear-gradient ^55.0.9 (both were already present as transitive Expo SDK 54 deps; now declared explicitly).

Mobile-wide formatting

  • Applied Prettier auto-fix across 18 pre-existing files that had formatting drift.
  • Fixed unescaped apostrophe ('') in portfolio.tsx (react/no-unescaped-entities).
  • Result: 0 ESLint errors across the entire mobile workspace.

Testing

Check Result
npx tsc --noEmit (mobile) ✅ 0 errors
npm run lint (mobile) ✅ 0 errors
npm test (backend) ✅ 102/102 passing

Manual verification checklist:

  • Progress bar animates from 0 → correct % on load
  • Progress updates after a successful contribution (screen refreshes via fetchAll)
  • Active badge shown for open projects; Closed badge for inactive ones
  • Roadmap and Contributors sections are hidden when API returns empty/error (graceful degradation)
  • Hero image loads with crossfade when imageUrl is present; placeholder renders correctly when absent
  • Back button is visible and tappable on both light and dark themes
  • Contribute button is hidden when isActive: false

@drips-wave
Copy link
Copy Markdown

drips-wave bot commented Mar 25, 2026

@TheDEV111 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

@TheDEV111
Copy link
Copy Markdown
Author

@Cedarich review pls

@TheDEV111
Copy link
Copy Markdown
Author

@Cedarich awaiting your review

@Cedarich
Copy link
Copy Markdown
Contributor

Please share a screenshot of implementation

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.

Crowdfund Project Detail Screen

2 participants