Status: Active Development - Phase 1 MVP
Version: 1.0.0
Last Updated: 2025-08-08
FX-Orleans is an AI-powered expert consultation platform that connects businesses needing fractional executive leadership (CIO, CTO, CISO) with qualified Fortium partners. The platform uses intelligent matching based on problem statements and comprehensive partner expertise profiles.
- AI-Powered Partner Matching: Natural language processing to analyze client problems and match with optimal experts
- Integrated Booking System: Seamless calendar integration with Google Meet and payment processing
- Authentication & Authorization: Keycloak integration with OpenID Connect
- Event Sourcing Architecture: CQRS pattern with complete audit trails
- Real-time Collaboration: Video conferencing with session notes and client management
- Backend: ASP.NET Core 9.0 with Event Sourcing + CQRS
- Database: PostgreSQL with Marten event store
- Frontend: Blazor Server + WebAssembly with MudBlazor
- Authentication: Keycloak with OpenID Connect
- AI Integration: OpenAI GPT with RAG implementation
- Payments: Stripe integration
- Calendar: Google Calendar API with Google Meet
fx-orleans/
βββ src/
β βββ EventServer/ # Event sourcing backend with CQRS
β βββ FxExpert.Blazor/ # Blazor Server host application
β βββ FxExpert.Blazor.Client/# Blazor WebAssembly client components
β βββ common/ # Shared domain models and utilities
βββ tests/
β βββ EventServer.Tests/ # Backend unit and integration tests
β βββ FxExpert.Blazor.Client.Tests/ # Frontend unit tests
β βββ FxExpert.E2E.Tests/ # End-to-end testing with Playwright
βββ infrastructure/ # Docker and Kubernetes configurations
βββ shared-types/ # Cross-project type definitions
- .NET 9.0 SDK
- Docker Desktop
- Node.js (for frontend tooling)
- Visual Studio Code or Visual Studio 2022
git clone <repository-url>
cd fx-orleans# Start PostgreSQL and Keycloak
docker-compose up -d postgres keycloak
# Wait for services to initialize (about 30 seconds)
docker-compose logs -f keycloak# Navigate to the Blazor project
cd src/FxExpert.Blazor/FxExpert.Blazor
# Set up authentication
dotnet user-secrets set "Authentication:Keycloak:Authority" "http://localhost:8080/realms/fx-orleans"
dotnet user-secrets set "Authentication:Keycloak:ClientId" "fx-orleans-client"
dotnet user-secrets set "Authentication:Keycloak:ClientSecret" "your-client-secret"
# Set up external services
dotnet user-secrets set "OpenAI:ApiKey" "your-openai-api-key"
dotnet user-secrets set "Stripe:SecretKey" "your-stripe-secret-key"
dotnet user-secrets set "Stripe:PublishableKey" "your-stripe-publishable-key"
dotnet user-secrets set "GoogleCalendar:ServiceAccountKey" "path-to-service-account.json"# Build the entire solution
dotnet build
# Option 1: Run with Just (recommended)
just run
# Option 2: Run manually
# Terminal 1:
dotnet watch --project src/EventServer/EventServer.csproj
# Terminal 2:
dotnet watch --project src/FxExpert.Blazor/FxExpert.Blazor/FxExpert.Blazor.csproj- Main Application: http://localhost:5000
- EventServer API: http://localhost:5001
- Keycloak Admin: http://localhost:8080 (admin/admin123)
- PostgreSQL: localhost:5432 (fx_orleans_user/fx_orleans_pass)
- Partner: Expert consultants with skills, availability, and work history
- User: Client users seeking consultation services
- VideoConference: Meeting sessions with scheduling and notes
- Payment: Stripe payment processing and authorization
- Calendar: Google Calendar integration for availability management
// Partner Events
PartnerCreated, PartnerProfileUpdated, PartnerSkillsUpdated
PartnerAvailabilityUpdated, PartnerStatusChanged
// User Events
UserCreated, UserProfileUpdated, UserAddressUpdated
UserPreferencesUpdated
// Booking Events
ConsultationRequested, ConsultationScheduled, ConsultationConfirmed
PaymentAuthorized, PaymentCaptured, SessionCompleted
// Calendar Events
CalendarEventCreated, CalendarEventUpdated, AvailabilityChangedThe application uses Keycloak for identity management with the following setup:
Realm: fx-orleans
Client: fx-orleans-client
Authentication Flow: Authorization Code with PKCE
Supported Providers: Google OAuth (configured for production)
- Client: Can browse partners, book consultations, manage profile
- Partner: Can manage availability, conduct sessions, take notes
- Admin: Can manage partners, view analytics, system administration
- OpenID Connect integration with automatic token refresh
- Secure cookie-based sessions with proper SameSite configuration
- HTTPS enforcement in production environments
- CSRF protection on all forms and state-changing operations
The platform uses OpenAI GPT-4 to:
- Parse Problem Statements: Extract key requirements, technologies, and business context
- Match Partners: Score partners based on relevant experience and skills
- Generate Recommendations: Provide reasoning for partner suggestions
- Optimize Results: Learn from booking patterns and feedback
// Partner knowledge base with vector embeddings
var partnerProfiles = await GetPartnerProfilesAsync();
var problemEmbedding = await GenerateEmbeddingAsync(problemStatement);
var relevantPartners = await FindSimilarPartnersAsync(problemEmbedding);
var recommendations = await GenerateRecommendationsAsync(relevantPartners, problemStatement);- Payment Flow: Authorize β Confirm β Capture
- Amount: $800.00 USD for 60-minute sessions
- Revenue Share: 80% to partners, 20% platform fee
- Security: PCI-compliant with secure token handling
- Payment Intent Created: User initiates booking process
- Payment Authorized: Funds reserved before meeting
- Payment Confirmed: Authorization confirmed, meeting scheduled
- Payment Captured: Funds captured after successful session
- Payment Refunded: Refunds for cancelled or failed sessions
- Service Account: Used for calendar access and management
- Meeting Creation: Automatic Google Meet link generation
- Availability Sync: Real-time partner availability updates
- Notifications: Email confirmations and reminders
- Client selects partner and preferred time slots
- System checks partner availability via Google Calendar
- Payment authorization before booking confirmation
- Calendar event created with Google Meet link
- Email confirmations sent to both parties
# Unit Tests
dotnet test src/EventServer.Tests/
dotnet test src/FxExpert.Blazor.Client.Tests/
# Integration Tests
dotnet test tests/FxExpert.E2E.Tests/
# Specific Test Categories
dotnet test --filter "Category=Authentication"
dotnet test --filter "Category=PaymentFlow"
dotnet test --filter "Category=PartnerMatching"- Cross-browser Testing: Chrome, Firefox, Safari, Edge
- Authentication Flow Testing: OAuth integration testing
- Payment Flow Testing: Stripe integration testing
- Visual Regression Testing: Screenshot comparisons
- Accessibility Testing: WCAG compliance validation
- Structured Logging: Serilog with JSON formatting
- Log Levels: Trace, Debug, Information, Warning, Error, Critical
- Correlation IDs: Request tracking across services
- Performance Metrics: Response times, error rates, resource usage
// Health check endpoints
GET /health # Basic health status
GET /health/ready # Readiness probe
GET /health/live # Liveness probe# Use Docker Compose for local infrastructure
docker-compose up -d
# Run applications with hot reload
just run# Build for production
dotnet publish -c Release
# Deploy to Kubernetes
kubectl apply -f infrastructure/k8s/- Development: Local PostgreSQL and Keycloak instances
- Staging: Containerized services with persistent volumes
- Production: Managed services with high availability and backup
- C# Conventions: Follow Microsoft C# coding conventions
- Blazor Patterns: Component-based architecture with proper state management
- Database Patterns: Event sourcing with read model projections
- Error Handling: Comprehensive error boundaries and logging
- Feature Branches: Create feature branches from
main - Pull Requests: Required for all changes with code review
- Commit Messages: Conventional commits with clear descriptions
- Release Tags: Semantic versioning for releases
- Core partner matching and booking system
- Payment authorization and processing
- Basic calendar integration
- Authentication and user management
- E2E testing infrastructure
- Advanced partner search and filtering
- Mobile-responsive design improvements
- Session history and analytics
- Rating and review system
- Partner performance analytics
- Revenue tracking and reporting
- A/B testing framework
- Customer journey optimization
- Follow the Quick Start guide above
- Read the coding standards in
.agent-os/standards/ - Check active specifications in
.agent-os/specs/ - Create feature branches with descriptive names
- Ensure all tests pass locally
- Update documentation as needed
- Add/update tests for new functionality
- Follow the established code review process
- Project Lead: [Contact Information]
- Technical Lead: [Contact Information]
- Product Owner: [Contact Information]
- Documentation: This README and
.agent-os/specifications - Issue Tracking: GitHub Issues
- Architecture Decisions:
.agent-os/product/decisions.md - Roadmap:
.agent-os/product/roadmap.md
Built with β€οΈ by the Fortium team using .NET 9, Event Sourcing, and AI-powered matching