This document outlines the current state of the application, identifies gaps, and provides a comprehensive step-by-step plan to transform it into a production-ready platform.
The PEOPLE platform is a talent-matching service connecting Initiators (clients who post missions) with Contributors (freelancers/builders who complete them). The current implementation covers foundational authentication, basic mission management, and user profiles. This roadmap details remaining work across 8 phases.
| Feature | Status | Notes |
|---|---|---|
| Landing Page | ✅ Done | Hero, features, CTA |
| Auth (Login/Signup) | ✅ Done | Firebase email/password, Google OAuth |
| Contributor Dashboard | ✅ Done | Matching engine UI, "Looking for Work" toggle |
| Initiator Dashboard | ✅ Done | Mission stats, mission list |
| Profile Settings | ✅ Done | Edit name, bio, links, skills |
| Mission Explore Page | ✅ Done | Grid view, search, filters, mock fallback |
| Mission Details Page | ✅ Done | Full details, apply modal |
| New Mission Page | ✅ Done | Form with skills, budget, timeline |
| Network Page | ✅ Done | Contributor discovery grid, mock fallback |
| Integrations Page | ✅ Done | Static list of tools |
| Contact Page | ✅ Done | Simulated form submission |
| Module | Endpoints | Status |
|---|---|---|
| Users | Register, Get/Update Me, Get by ID | ✅ Done |
| Contributors | Get All, Get/Update Profile, Skills CRUD, Availability | ✅ Done |
| Missions | CRUD, Publish, Milestones, Applications, Status Updates | ✅ Done |
| Skills | Get Skills List | ✅ Done |
- Firebase Authentication (Client SDK)
- Firebase Admin SDK (Server-side token validation)
- Firestore (Database)
- Express.js API with Zod validation
- Zustand state management
- React Router with role-based guards
- Payments & Escrow - No Stripe integration
- Real-time Notifications - No push/bell notifications
- Messaging System - No initiator-contributor chat
- Admin Panel - No admin dashboard for moderation
- Email Transactional - Contact form doesn't send emails
- Search & Filtering - Backend doesn't support full-text search
- File Uploads - No Cloudinary integration for avatars/attachments
- Reviews & Ratings - No reputation system
- Contracts & Agreements - No digital signatures
- Reporting & Analytics - No dashboard analytics
- SEO & Meta Tags - No dynamic head management
- Error Tracking - No Sentry/LogRocket integration
- AI Matching - Algorithm is simulated, not real
- Mobile App - Web-only currently
- Multi-language - English only
Timeline: 1-2 weeks | Priority: Critical
- Create
server/src/modules/initiators/directory - Implement
initiators.routes.tsGET /api/v1/initiators/me- Get initiator profilePATCH /api/v1/initiators/me- Update company infoGET /api/v1/initiators/:id- Public profile
- Implement
initiators.service.tswith Firestore operations - Add initiator profile fields to Firestore types
- Add mission status transitions:
draft→open→in_progress→completed→closed - Implement
POST /api/v1/missions/:id/assign- Assign contributor - Implement
POST /api/v1/missions/:id/complete- Mark as complete - Add milestone progress tracking with percentage
- Create
InitiatorDashboard/ApplicationsTab.jsx- List of pending applications per mission
- Accept/Reject buttons with confirmation
- Create
ContributorDashboard/MyApplicationsTab.jsx- List of submitted applications with status
Timeline: 2-3 weeks | Priority: Critical
- Install Stripe SDK:
npm i stripe - Create
server/src/modules/payments/payments.routes.tspayments.service.tspayments.controller.ts
- Implement endpoints:
POST /api/v1/payments/checkout- Create Stripe Checkout sessionPOST /api/v1/payments/webhook- Handle Stripe webhooksGET /api/v1/payments/balance- Get user balancePOST /api/v1/payments/release- Release escrow funds
- Add
escrowStatusfield to missions:pending,held,released,refunded - Create escrow hold on mission acceptance
- Create escrow release on mission completion approval
- Implement dispute flow with admin intervention
- Create
PaymentPage.jsxwith Stripe Elements - Add payment status to
MissionDetailsPage - Create
WalletPage.jsxfor contributor earnings- Balance display
- Withdrawal to bank (Stripe Connect)
- Transaction history
Timeline: 2 weeks | Priority: Critical
- Create
server/src/modules/notifications/ - Implement endpoints:
GET /api/v1/notifications- Get user notificationsPATCH /api/v1/notifications/:id/read- Mark as readDELETE /api/v1/notifications/:id- Dismiss
- Create notification triggers for:
- New application received
- Application accepted/rejected
- Mission status changes
- New message received
- Payment received
- Create
NotificationsDropdown.jsxin Navbar - Add badge with unread count
- Create
NotificationsPage.jsxfor full history - Implement real-time updates with Firestore listeners
- Create
server/src/modules/messages/messages.routes.tsmessages.service.ts
- Implement endpoints:
GET /api/v1/conversations- List conversationsGET /api/v1/conversations/:id/messages- Get messagesPOST /api/v1/conversations/:id/messages- Send message
- Create
MessagesPage.jsxwith:- Conversation list sidebar
- Message thread view
- Real-time updates via Firestore
Timeline: 1-2 weeks | Priority: Important
- Create
server/src/modules/reviews/ - Implement endpoints:
POST /api/v1/missions/:id/review- Submit review (both parties)GET /api/v1/users/:id/reviews- Get user reviews
- Add review schema:
rating,comment,reviewerId,revieweeId,missionId - Calculate and store average ratings on user profiles
- Create
ReviewModal.jsx(triggered on mission completion) - Add
ReviewsSectionto contributor/initiator profiles - Display star ratings on
NetworkPagecards - Add trust score calculation based on reviews
Timeline: 2 weeks | Priority: Critical
- Create admin middleware:
requireAdmin - Create
server/src/modules/admin/ - Implement endpoints:
GET /api/v1/admin/users- List all users with filtersPATCH /api/v1/admin/users/:id/verify- Verify userPATCH /api/v1/admin/users/:id/suspend- Suspend userGET /api/v1/admin/missions- List all missionsGET /api/v1/admin/disputes- List payment disputesPATCH /api/v1/admin/disputes/:id/resolve- Resolve disputeGET /api/v1/admin/stats- Platform statistics
- Create
client/src/pages/admin/directory - Implement pages:
AdminDashboard.jsx- Overview stats (users, missions, revenue)AdminUsersPage.jsx- User management tableAdminMissionsPage.jsx- Mission moderationAdminDisputesPage.jsx- Dispute resolution
- Add admin routes with
AdminGuard
Timeline: 1 week | Priority: Important
- Install Cloudinary SDK:
npm i cloudinary - Create
server/src/services/cloudinary.ts - Implement endpoints:
POST /api/v1/uploads/avatar- Upload profile picturePOST /api/v1/uploads/attachment- Upload mission attachmentsDELETE /api/v1/uploads/:publicId- Delete file
- Create
ImageUploader.jsxcomponent - Add avatar upload to
ProfileSettings - Add file attachments to
NewMissionPage - Display attachments in
MissionDetailsPage
Timeline: 1 week | Priority: Important
- Install Resend:
npm i resend - Create
server/src/services/email.ts - Create email templates:
welcome.html- Welcome email on signupapplication-received.html- Notify initiatorapplication-accepted.html- Notify contributorpayment-received.html- Payment confirmationpassword-reset.html- Password reset
- Integrate with notification triggers
- Update
ContactPage.jsxto call real API - Create
POST /api/v1/contactendpoint - Send email to admin inbox
Timeline: 1-2 weeks | Priority: Critical
- Audit all environment variables
- Set up production Firebase project
- Configure CORS for production domain
- Add rate limiting to API
- Implement CSRF protection
- Add Helmet.js security headers
- Enable Vite code splitting
- Add lazy loading for routes
- Implement image optimization
- Add service worker for offline support
- Set up CDN for static assets
- Set up Sentry for error tracking
- Add LogRocket for session replay
- Configure server logging (Winston/Pino)
- Set up uptime monitoring (Betteruptime/Pingdom)
- Deploy backend to Railway/Render/Fly.io
- Deploy frontend to Vercel/Netlify
- Set up CI/CD with GitHub Actions
- Configure custom domain and SSL
- Set up staging environment
- Create API documentation (Swagger/OpenAPI)
- Write user guide
- Create contributor onboarding docs
- Document deployment process
| Page | Route | Priority | Description |
|---|---|---|---|
| My Applications | /applications |
High | Contributor's submitted applications |
| Mission Applications | /missions/:id/applications |
High | Initiator's received applications |
| Messages | /messages |
High | Conversation threads |
| Wallet | /wallet |
High | Earnings & withdrawals |
| Payment Checkout | /checkout/:missionId |
High | Stripe payment flow |
| Notifications | /notifications |
Medium | Full notification history |
| Reviews | /reviews |
Medium | User reviews page |
| Admin Dashboard | /admin |
High | Admin overview |
| Admin Users | /admin/users |
High | User management |
| Admin Missions | /admin/missions |
High | Mission moderation |
| Admin Disputes | /admin/disputes |
High | Dispute resolution |
| Terms of Service | /terms |
Medium | Legal page |
| Privacy Policy | /privacy |
Medium | Legal page |
| FAQ | /faq |
Low | Help center |
Firestore Structure:
├── users/
├── contributorProfiles/
├── initiatorProfiles/ ← NEW
├── missions/
├── applications/
├── milestones/
├── conversations/ ← NEW
│ └── messages/ ← Subcollection
├── notifications/ ← NEW
├── reviews/ ← NEW
├── payments/ ← NEW
│ └── transactions/ ← Subcollection
└── disputes/ ← NEW
| Phase | Effort | Impact | Priority |
|---|---|---|---|
| Phase 1: Core Business Logic | Medium | High | 🔴 Do First |
| Phase 2: Payments | High | Critical | 🔴 Do First |
| Phase 3: Messaging & Notifications | High | High | 🔴 Do First |
| Phase 4: Reviews & Reputation | Medium | Medium | 🟡 Do Second |
| Phase 5: Admin Panel | High | High | 🟡 Do Second |
| Phase 6: File Uploads | Low | Medium | 🟢 Do Third |
| Phase 7: Email | Low | Medium | 🟢 Do Third |
| Phase 8: Deployment | Medium | Critical | 🔴 Do Last |
| Scenario | Timeline |
|---|---|
| Full-time (40 hrs/week) | 8-10 weeks |
| Part-time (20 hrs/week) | 16-20 weeks |
| With team (2-3 devs) | 4-6 weeks |
- Fix Contact Form - Connect to Resend API (30 min)
- Add Loading States - Improve perceived performance (1 hr)
- Add 404 Page Design - Replace basic 404 with styled page (30 min)
- Add Favicon & Meta Tags - SEO basics (30 min)
- Implement Logout Everywhere - Add logout to navbar mobile menu (15 min)
- Remove all
console.logstatements from production code - Add proper TypeScript types to frontend (convert to TSX)
- Extract hardcoded strings to constants/config
- Add unit tests for critical services
- Add E2E tests for auth and mission flows
- Optimize bundle size (currently 618KB, target <300KB)
Last Updated: January 2, 2026 Document Version: 1.0