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

8.8 KiB

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)

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)

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?