aethex-forge/docs/PORTAL-IMPLEMENTATION-PLAN.md
Claude 9c3942ebbc
Build complete Client Portal pages
Replaced 4 placeholder pages with full implementations:

- ClientContracts.tsx (455 lines)
  - Contract list with search/filter
  - Contract detail view with milestones
  - Document management
  - Amendment history
  - Status tracking (draft/active/completed/expired)

- ClientInvoices.tsx (456 lines)
  - Invoice list with status filters
  - Invoice detail with line items
  - Payment processing (Pay Now)
  - PDF download
  - Billing stats dashboard

- ClientReports.tsx (500 lines)
  - Project reports with analytics
  - Budget analysis by project
  - Time tracking summaries
  - Export to PDF/CSV
  - 4 tab views (overview/projects/budget/time)

- ClientSettings.tsx (695 lines)
  - Company profile management
  - Team member invites/management
  - Notification preferences
  - Billing settings
  - Security settings (2FA, password, danger zone)

All pages match ClientHub styling and use existing APIs.
2026-01-26 21:10:00 +00:00

357 lines
8.8 KiB
Markdown

# Portal Implementation Plan
> **Scope:** Fix Client Portal, Build Staff Onboarding, Build Candidate Portal
> **Foundation:** Informational only (redirects to aethex.foundation)
---
## 1. CLIENT PORTAL FIX (4 Pages)
### Current State
- `ClientHub.tsx` - ✅ Working (745 lines)
- `ClientDashboard.tsx` - ✅ Working (709 lines)
- `ClientProjects.tsx` - ✅ Working (317 lines)
- `ClientContracts.tsx` - ❌ 56-line stub
- `ClientInvoices.tsx` - ❌ 56-line stub
- `ClientReports.tsx` - ❌ 56-line stub
- `ClientSettings.tsx` - ❌ 56-line stub
### Build Out
#### ClientContracts.tsx
```
Features:
- Contract list with status (Draft, Active, Completed, Expired)
- Contract details view (scope, terms, milestones)
- Document preview/download (PDF)
- E-signature integration placeholder
- Amendment history
- Filter by status/date
API: /api/corp/contracts (already exists)
```
#### ClientInvoices.tsx
```
Features:
- Invoice list with status (Pending, Paid, Overdue)
- Invoice detail view (line items, tax, total)
- Payment history
- Download invoice PDF
- Pay now button (Stripe integration)
- Filter by status/date range
API: /api/corp/invoices (already exists)
```
#### ClientReports.tsx
```
Features:
- Project progress reports
- Time tracking summaries
- Budget vs actual spending
- Milestone completion rates
- Export to PDF/CSV
- Date range selector
API: /api/corp/analytics/summary (stub - needs build)
```
#### ClientSettings.tsx
```
Features:
- Company profile (name, logo, address)
- Team member access management
- Notification preferences
- Billing information
- API keys (if applicable)
- Account deletion
API: /api/user/profile-update (exists)
```
---
## 2. STAFF ONBOARDING PORTAL (New)
### New Pages
```
client/pages/staff/
├── StaffOnboarding.tsx # Main onboarding hub
├── StaffOnboardingChecklist.tsx # Interactive checklist
├── StaffOnboardingProgress.tsx # Progress tracker
└── StaffOnboardingResources.tsx # Quick links & docs
```
### StaffOnboarding.tsx - Main Hub
```
Sections:
1. Welcome Banner (personalized with name, start date, manager)
2. Progress Ring (% complete)
3. Current Phase (Day 1 / Week 1 / Month 1)
4. Quick Actions:
- Complete checklist items
- Meet your team
- Access resources
- Schedule 1-on-1
```
### StaffOnboardingChecklist.tsx - Interactive Checklist
```
Day 1:
☐ Complete HR paperwork
☐ Set up workstation
☐ Join Discord server
☐ Meet your manager
☐ Review company handbook
Week 1:
☐ Complete security training
☐ Set up development environment
☐ Review codebase architecture
☐ Attend team standup
☐ Complete first small task
Month 1:
☐ Complete onboarding course
☐ Contribute to first sprint
☐ 30-day check-in with manager
☐ Set Q1 OKRs
☐ Shadow a senior dev
Features:
- Check items to mark complete
- Progress saves to database
- Manager can view progress
- Automatic reminders
- Achievement unlocks
```
### Database Schema (New)
```sql
CREATE TABLE staff_onboarding_progress (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID REFERENCES auth.users(id),
checklist_item TEXT NOT NULL,
phase TEXT NOT NULL, -- 'day1', 'week1', 'month1'
completed BOOLEAN DEFAULT FALSE,
completed_at TIMESTAMPTZ,
created_at TIMESTAMPTZ DEFAULT NOW()
);
```
### API Endpoints (New)
```
GET /api/staff/onboarding # Get user's progress
POST /api/staff/onboarding/complete # Mark item complete
GET /api/staff/onboarding/admin # Manager view of team progress
```
---
## 3. CANDIDATE PORTAL (New)
### New Pages
```
client/pages/candidate/
├── CandidatePortal.tsx # Main dashboard
├── CandidateProfile.tsx # Profile builder
├── CandidateApplications.tsx # Enhanced MyApplications
├── CandidateInterviews.tsx # Interview scheduler
└── CandidateOffers.tsx # Offer tracking
```
### CandidatePortal.tsx - Dashboard
```
Sections:
1. Application Stats
- Total applications
- In review
- Interviews scheduled
- Offers received
2. Quick Actions
- Browse opportunities
- Update profile
- View applications
- Check messages
3. Recent Activity
- Application status changes
- Interview invites
- New opportunities matching skills
4. Recommended Jobs
- Based on skills/interests
```
### CandidateProfile.tsx - Profile Builder
```
Sections:
1. Basic Info (from user profile)
2. Resume/CV Upload
3. Portfolio Links (GitHub, Behance, etc.)
4. Skills & Expertise (tags)
5. Work History
6. Education
7. Availability & Rate (if freelancer)
8. Profile completeness meter
Features:
- Import from LinkedIn (future)
- Public profile URL
- Privacy settings
```
### CandidateApplications.tsx - Enhanced
```
Improvements over MyApplications:
- Timeline view of application journey
- Communication thread with employer
- Document attachments
- Interview scheduling integration
- Offer acceptance workflow
```
### CandidateInterviews.tsx
```
Features:
- Upcoming interviews list
- Calendar integration
- Video call links
- Interview prep resources
- Feedback after interview
- Reschedule option
```
### Database Schema (New)
```sql
CREATE TABLE candidate_profiles (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID REFERENCES auth.users(id) UNIQUE,
resume_url TEXT,
portfolio_urls JSONB DEFAULT '[]',
work_history JSONB DEFAULT '[]',
education JSONB DEFAULT '[]',
skills TEXT[] DEFAULT '{}',
availability TEXT, -- 'immediate', '2_weeks', '1_month'
desired_rate DECIMAL(10,2),
profile_completeness INTEGER DEFAULT 0,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE candidate_interviews (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
application_id UUID REFERENCES aethex_applications(id),
candidate_id UUID REFERENCES auth.users(id),
employer_id UUID REFERENCES auth.users(id),
scheduled_at TIMESTAMPTZ,
duration_minutes INTEGER DEFAULT 30,
meeting_link TEXT,
status TEXT DEFAULT 'scheduled', -- 'scheduled', 'completed', 'cancelled', 'rescheduled'
notes TEXT,
created_at TIMESTAMPTZ DEFAULT NOW()
);
```
### API Endpoints (New)
```
GET /api/candidate/profile # Get candidate profile
POST /api/candidate/profile # Create/update profile
POST /api/candidate/resume # Upload resume
GET /api/candidate/interviews # Get scheduled interviews
POST /api/candidate/interviews # Schedule interview
GET /api/candidate/recommendations # Job recommendations
```
---
## 4. FOUNDATION - INFORMATIONAL ONLY
### Current State
- `Foundation.tsx` - Landing page
- `FoundationDashboard.tsx` - Placeholder dashboard
### Changes
```
FoundationDashboard.tsx:
- Remove dashboard functionality
- Show informational content about Foundation programs
- Add prominent CTA: "Visit aethex.foundation for full experience"
- Redirect links to aethex.foundation
Or simply redirect /foundation/dashboard → aethex.foundation
```
---
## IMPLEMENTATION ORDER
### Phase 1: Client Portal (Quick Wins)
1. `ClientContracts.tsx` - Build full contract management
2. `ClientInvoices.tsx` - Build full invoice management
3. `ClientReports.tsx` - Build reporting dashboard
4. `ClientSettings.tsx` - Build settings page
### Phase 2: Candidate Portal
1. Database migration for candidate_profiles, candidate_interviews
2. `CandidatePortal.tsx` - Main dashboard
3. `CandidateProfile.tsx` - Profile builder
4. `CandidateApplications.tsx` - Enhanced applications
5. `CandidateInterviews.tsx` - Interview management
6. API endpoints
### Phase 3: Staff Onboarding
1. Database migration for staff_onboarding_progress
2. `StaffOnboarding.tsx` - Main hub
3. `StaffOnboardingChecklist.tsx` - Interactive checklist
4. API endpoints
5. Manager admin view
### Phase 4: Foundation Cleanup
1. Update FoundationDashboard to informational
2. Add redirects to aethex.foundation
---
## FILE CHANGES SUMMARY
### New Files (12)
```
client/pages/candidate/CandidatePortal.tsx
client/pages/candidate/CandidateProfile.tsx
client/pages/candidate/CandidateApplications.tsx
client/pages/candidate/CandidateInterviews.tsx
client/pages/candidate/CandidateOffers.tsx
client/pages/staff/StaffOnboarding.tsx
client/pages/staff/StaffOnboardingChecklist.tsx
api/candidate/profile.ts
api/candidate/interviews.ts
api/staff/onboarding.ts
supabase/migrations/YYYYMMDD_add_candidate_portal.sql
supabase/migrations/YYYYMMDD_add_staff_onboarding.sql
```
### Modified Files (5)
```
client/pages/hub/ClientContracts.tsx (rebuild)
client/pages/hub/ClientInvoices.tsx (rebuild)
client/pages/hub/ClientReports.tsx (rebuild)
client/pages/hub/ClientSettings.tsx (rebuild)
client/pages/dashboards/FoundationDashboard.tsx (simplify)
```
---
## ESTIMATED EFFORT
| Component | Files | Complexity |
|-----------|-------|------------|
| Client Portal Fix | 4 | Medium |
| Candidate Portal | 6 | High |
| Staff Onboarding | 4 | Medium |
| Foundation Cleanup | 1 | Low |
| **Total** | **15** | |
Ready to implement?