Intelligent automation for enterprise SOW creation and management
- Overview
- Key Features
- User Roles
- Getting Started
- Usage Guide
- Technology Stack
- Project Structure
- Available Scripts
- API Integration
- Documentation
- Contributing
- License
SOWGen.ai is an enterprise-grade web application designed to streamline how Xebia creates, manages, and approves Statement of Work (SOW) documents for migration and training services. The platform combines intelligent automation with professional design to deliver an exceptional experience for both clients and internal staff.
π Intelligent Automation
- Automatically fetch repository data from GitHub, GitLab, Bitbucket, and Azure DevOps
- Smart man-hour calculations based on migration complexity
- Pre-populated forms saving 80% of data entry time
π Data-Driven Insights
- Comprehensive analytics dashboard for Xebia administrators
- Real-time SOW pipeline metrics and trends
- Interactive charts showing approval rates and performance
β¨ Professional Experience
- Modern, intuitive interface aligned with Xebia branding
- Interactive migration path visualization
- Mobile-responsive design for approvals on-the-go
π Enterprise-Grade Security
- Role-based access control
- API tokens never stored on servers
- HTTPS encryption for all communications
- Guided form interface for traditional SOW creation
- Comprehensive project details collection
- Migration and training services configuration
- Form auto-save every 30 seconds
- Direct integration with SCM platforms (GitHub, GitLab, Bitbucket, Azure DevOps)
- Automatic repository data fetching via REST APIs
- Instant complexity analysis and man-hour estimates
- Pre-populated forms reducing creation time by 80%
- GitHub Migration Types: Classic, EMU, GHES with type-specific calculations
- Repository Inventory Management: Track total repos, visibility, size, languages
- CI/CD Migration: Optional workflow migration from Jenkins, CircleCI, Travis CI, GitLab CI
- Automated Man-Hour Estimates:
- GitHub Classic: 2 hours/repo base rate
- GitHub EMU: 3 hours/repo base rate
- GitHub GHES: 4 hours/repo base rate
- Adjustments for LFS, submodules, size, and complexity
- Interactive Migration Path Diagram: 7-stage visual journey showing complete migration process
- Comprehensive training module library organized by track and level
- Participant count management per module
- Total training hours calculation
- Seamless integration with SOW generation workflow
- Multi-level approval chains with role-based routing
- Real-time status tracking and notifications
- Integrated commenting for feedback and collaboration
- Visual timeline showing approval progress
- Mobile-friendly approval interface
- Key metrics: Total SOWs, Approved, Pending, Rejection Rates
- SOW approval trends over time (line charts)
- Distribution by status (pie charts)
- Top clients by SOW volume (bar charts)
- Customizable date range filtering
- PDF Export: Professional, branded documents for client distribution
- CSV Export: Comprehensive data export for analysis and reporting
- Bulk Export: Export multiple SOWs with applied filters
- Print-Ready Formatting: Optimized for offline review and archival
- Avatar upload support (JPG, PNG, GIF, WebP, max 5MB)
- Profile editing with persistent display
- User initials fallback for missing avatars
- Profile information visible in header, approvals, and SOW lists
Purpose: External organizations requiring migration and training services
Capabilities:
- Create SOWs using manual or automation mode
- View dashboard with service platform offerings
- Track SOW approval status in real-time
- Export approved SOWs as PDF for internal presentation
- View their own SOW history and activity logs
- Edit profile and upload avatar
Primary Journey:
- Login via Client portal
- View services dashboard with SCM and cloud platforms
- Select platform and creation mode (Manual/Automation)
- Complete SOW form with migration/training configuration
- Submit for Xebia review
- Track approval status
- Download approved SOW as PDF
Purpose: Internal staff managing SOW operations and platform administration
Capabilities:
- Access comprehensive analytics dashboard
- View and manage all client SOWs
- Process SOW submissions and route to approvers
- Export SOW data to CSV for reporting
- Manage user accounts and roles
- Configure service catalog and training modules
- Customize approval workflow rules
- View system-wide activity logs
Primary Journey:
- Login via Xebia portal
- Review dashboard metrics and KPIs
- Process pending SOW submissions
- Verify auto-calculated estimates
- Route SOWs to appropriate approvers
- Generate weekly reports via CSV export
- Manage users and system configuration
Purpose: Senior staff responsible for reviewing and approving SOWs
Capabilities:
- Review complete SOW details
- Access on mobile devices for remote approvals
- Add detailed comments and feedback
- Approve or reject SOWs with justification
- View approval timeline and history
- Track pending approvals
- Export individual SOWs as PDF
Primary Journey:
- Receive email notification of pending SOW
- Login via mobile or desktop
- Review repository inventory and technical details
- Examine man-hour estimates and complexity
- Add technical recommendations via comments
- Approve or request changes
- Monitor SOW progress to completion
Before you begin, ensure you have the following installed:
- Node.js: v18.0.0 or higher (v20 LTS recommended) (Download)
- npm: v9.0.0 or higher (comes with Node.js)
- Git: For cloning the repository (Download)
- Modern Web Browser: Chrome, Firefox, Safari, or Edge (latest versions)
- Clone the repository
git clone https://github.com/xebia/SOWgen.ai.git
cd SOWgen.ai- Install dependencies
npm installThis will install all required dependencies including:
- React 19 with TypeScript
- Tailwind CSS 4
- Radix UI component library
- Framer Motion for animations
- Recharts for data visualization
- And more (see Technology Stack)
- Verify installation
npm run lintIf the installation was successful, the linter will run without errors.
- Start the development server
npm run dev- Open your browser
Navigate to http://localhost:5000 (or the port shown in the terminal)
- Login with demo credentials
The application includes demo users for testing:
Client User:
- Email:
[email protected] - Password:
demo123
Xebia Administrator:
- Email:
[email protected] - Password:
demo123
Approver:
- Email:
[email protected] - Password:
demo123
- Explore the application
- Try creating a SOW using both manual and automation modes
- Test the SCM API integration with public repositories
- View analytics on the Xebia dashboard
- Export SOWs as PDF and CSV
Option 1: Automation Mode (Recommended for existing repositories)
-
Navigate to Dashboard
- After login, you'll see the Services Dashboard
- View available SCM platforms and cloud services
-
Select Platform
- Click on your source platform (e.g., GitHub, GitLab)
- Choose "Use Automation" for automatic data fetching
-
Connect Repository
- Enter your repository URL (e.g.,
https://github.com/owner/repo) - For private repositories, provide an access token (How to generate)
- Click "Fetch Repository Data"
- Enter your repository URL (e.g.,
-
Review Auto-Populated Data
- Repository name, description, and metadata
- Branch and commit statistics
- Programming languages detected
- CI/CD pipeline detection
-
Configure Migration Services
- Check "Include Migration Services" to enable
- Select GitHub Migration Type (Classic/EMU/GHES)
- Review auto-calculated man-hour estimates
- Optionally enable CI/CD migration
-
Add Training Services
- Check "Include Training Services" to enable
- Select relevant training modules from catalog
- Set participant counts per module
-
Submit SOW
- Review all information for accuracy
- Click "Submit for Review"
- Track approval status from dashboard
Option 2: Manual Entry Mode
-
Start Manual Creation
- Click "Create Manually" from dashboard
- Fill in project details: name, organization, description
-
Complete Form Sections
- Project Information
- Migration Services Configuration (optional)
- Repository Inventory
- Training Services Selection (optional)
-
Save and Submit
- Form auto-saves every 30 seconds
- Can save as draft for later completion
- Submit when ready for review
- Dashboard View: See all your SOWs with current status
- Status Indicators:
- π‘ Draft: Not yet submitted
- π΅ Pending: Awaiting Xebia review
- π£ Under Review: Being reviewed by approver
- π’ Approved: Ready for project kickoff
- π΄ Rejected: Requires revisions
- PDF Export: Click "Export PDF" on any approved SOW for professional documentation
- CSV Export: Download your SOW history for your records
- Bulk Export: Export all your SOWs at once from dashboard
For private repositories, you'll need to generate a personal access token:
GitHub:
- Go to Settings β Developer settings β Personal access tokens
- Click "Generate new token (classic)"
- Select
reposcope - Copy the generated token
GitLab:
- Go to User Settings β Access Tokens
- Create token with
read_apiscope - Copy the generated token
Bitbucket:
- Go to Settings β Personal Access Tokens
- Create token with repository read permissions
- Copy the generated token
Azure DevOps:
- Go to User Settings β Personal Access Tokens
- Create token with Code (Read) scope
- Copy the generated token
Security Note: Tokens are used only for the immediate API request and are never stored on servers.
The Xebia Dashboard provides comprehensive visibility into SOW operations:
Key Metrics Cards:
- Total SOWs in system
- Approved SOWs count
- Pending approvals
- Rejection rate
Analytics Charts:
- Approval Trends: Line chart showing approvals over time
- Status Distribution: Pie chart of SOW by status
- Top Clients: Bar chart of clients by SOW volume
Filtering Options:
- Date range selection (Last 30/60/90 days, YTD, Custom)
- Client organization filter
- Project status filter
-
Review Pending SOWs
- Navigate to "All SOWs" tab
- Filter by status: "Pending"
- Click on SOW to view details
-
Verify Automated Data
- Check repository inventory accuracy
- Review man-hour calculations
- Validate migration type selection
-
Route for Approval
- Assign to appropriate approver
- Add internal notes if needed
- Set priority flags
-
Generate Reports
- Use CSV export for weekly/monthly reports
- Filter data by date range and client
- Export includes all SOW details for analysis
-
Access Admin Panel
- Click on user menu β Admin Settings
- Navigate to User Management
-
Create New Users
- Click "Add User"
- Enter email, name, organization
- Assign role (Client/Xebia Admin/Approver)
- Send welcome email with credentials
-
Manage Existing Users
- Search and filter user list
- Edit user information and roles
- Deactivate accounts when needed
- Reset passwords
-
Training Modules
- Add new training courses and workshops
- Organize by track (Developer/Admin/Security)
- Set module levels (Beginner/Intermediate/Advanced)
- Configure default participant counts
-
Migration Services
- Update base man-hour rates
- Configure complexity multipliers
- Manage platform-specific settings
-
Approval Workflows
- Define approval chains by project type
- Assign default approvers
- Set approval deadlines
- Configure escalation rules
- React 19: Latest React with modern features and performance improvements
- TypeScript 5.7: Full type safety across the application
- Vite 7: Lightning-fast development and optimized builds
- Tailwind CSS 4: Utility-first CSS framework with custom design system
- Radix UI: Accessible, unstyled component primitives
- Framer Motion 12: Smooth animations and transitions
- Phosphor Icons: Comprehensive icon library
- Recharts 2: Composable charting library for analytics dashboard
- React Hook Form 7: Performant form handling with minimal re-renders
- Zod 3: TypeScript-first schema validation
- React Context API: Built-in state management with hooks
- TanStack Query 5: Powerful async state management for API calls
- ESLint 9: Code quality and consistency
- PostCSS: CSS processing and optimization
- TypeScript ESLint: TypeScript-specific linting rules
- Native Fetch API: For SCM platform integrations
- Octokit: Official GitHub API client
- Axios: Promise-based HTTP client
SOWgen.ai/
βββ src/
β βββ components/ # React components
β β βββ ui/ # Reusable UI components (buttons, inputs, etc.)
β β βββ LoginPage.tsx # Authentication page
β β βββ ServicesDashboard.tsx # Client dashboard
β β βββ XebiaDashboard.tsx # Admin dashboard with analytics
β β βββ SOWForm.tsx # SOW creation form
β β βββ SOWDetail.tsx # SOW detail view
β β βββ SOWList.tsx # SOW list management
β β βββ UserProfile.tsx # User profile management
β β βββ XebiaLogo.tsx # Xebia branding component
β β βββ MigrationPathDiagram.tsx # Migration visualization
β βββ lib/ # Utility functions and helpers
β β βββ types.ts # TypeScript type definitions
β β βββ app-context.tsx # Global state management
β β βββ utils.ts # Utility functions
β β βββ scm-api.ts # SCM API integration logic
β βββ styles/ # Global styles and CSS
β βββ App.tsx # Main application component
β βββ main.tsx # Application entry point
β βββ index.css # Global CSS imports
βββ public/ # Static assets
βββ docs/ # Documentation
β βββ BRD.md # Business Requirements Document
β βββ PRD.md # Product Requirements Document
β βββ SCM_API_GUIDE.md # API integration guide
βββ package.json # Dependencies and scripts
βββ tsconfig.json # TypeScript configuration
βββ tailwind.config.js # Tailwind CSS configuration
βββ vite.config.ts # Vite build configuration
βββ README.md # This file
npm run devStarts the development server at http://localhost:5000 with hot module replacement (HMR).
npm run buildCreates an optimized production build in the dist/ directory. Includes TypeScript compilation and Vite bundling.
npm run previewPreview the production build locally before deployment.
npm run lintRuns ESLint to check code quality and style consistency.
npm run optimizePre-optimizes dependencies for faster development server startup.
npm run killKills any process running on port 5000 (useful if the dev server doesn't shut down cleanly).
SOWgen.ai supports two modes of data persistence:
- Local Mode (Default): Uses in-browser storage (GitHub Spark KV) - data is stored locally in the browser
- Backend Mode: Uses MongoDB backend via REST API - data is stored on a server and persists across devices
For production deployments where data needs to persist and be accessible from multiple devices, see the MongoDB Backend Integration Guide.
This application is configured to deploy automatically to GitHub Pages when changes are pushed to the main branch.
- Workflow Configuration: The GitHub Actions workflow (
.github/workflows/deploy-github-pages.yml) handles automatic deployment - Trigger: Pushes to the
mainbranch automatically trigger a new deployment - Build Process: The workflow installs dependencies, builds the application with Vite, and deploys to GitHub Pages
- Access: Once deployed, the application will be available at
https://xebia.github.io/SOWgen.ai/
To deploy with MongoDB backend for persistent data storage:
- Deploy the Backend: Follow the MongoDB Backend Guide to set up your backend
- Configure Environment: Set
VITE_API_URLandVITE_USE_BACKEND=truein your GitHub Actions workflow - Deploy: Push to main branch as usual
See the MongoDB Backend Integration Guide for detailed instructions.
To manually trigger a deployment:
- Go to the Actions tab in the GitHub repository
- Select the Deploy to GitHub Pages workflow
- Click Run workflow and select the
mainbranch - Click Run workflow to start the deployment
For the initial setup, ensure GitHub Pages is enabled in the repository settings:
- Go to Settings β Pages
- Under Source, select GitHub Actions
- Save the settings
The application will now deploy automatically on every push to main.
To test the production build locally with the GitHub Pages configuration:
GITHUB_PAGES=true npm run build
npm run previewThis will build the app with the correct base path (/SOWgen.ai/) and allow you to preview it locally.
SOWGen.ai integrates with multiple SCM platforms to automatically fetch repository data:
| Platform | API Version | Authentication | Rate Limit |
|---|---|---|---|
| GitHub | REST API v3 | Personal Access Token | 5,000/hour (authenticated) |
| GitLab | API v4 | Personal Access Token | 600/minute (typical) |
| Bitbucket | REST API v2.0 | App Password | 1,000/hour |
| Azure DevOps | REST API v7.0 | Personal Access Token | No published limit |
- Repository metadata (name, description, visibility)
- Branch and commit statistics
- Contributor analysis and member counts
- Programming language detection with usage percentages
- CI/CD pipeline detection (GitHub Actions, GitLab CI, etc.)
- Repository size and complexity metrics
- Open issues and pull/merge requests
- Stars, forks, and license information
The application includes comprehensive error handling:
- 404 Not Found: Repository doesn't exist or is private without token
- 401 Unauthorized: Invalid or expired access token
- 403 Rate Limited: Too many requests, wait or authenticate
- Network Errors: Connection issues or API downtime
All errors include user-friendly messages with actionable guidance for resolution.
- π API tokens are never stored on servers or in logs
- π Tokens are used only for immediate API requests
- π All API calls use HTTPS encryption
- π Token input fields use password masking
For detailed API integration information, see SCM_API_GUIDE.md.
Comprehensive documentation is available in the repository:
- BRD.md: Business Requirements Document with detailed requirements, personas, and success metrics
- PRD.md: Product Requirements Document with complete feature specifications and design direction
- SCM_API_GUIDE.md: Detailed guide for SCM API integration, authentication, and troubleshooting
- SECURITY.md: Security policies and vulnerability reporting
We welcome contributions from the Xebia team! Here's how to get involved:
- Fork the repository (for external contributors)
- Create a feature branch
git checkout -b feature/your-feature-name
- Make your changes
- Follow existing code style and patterns
- Add comments for complex logic
- Update documentation if needed
- Test your changes
- Run the dev server and test functionality
- Check for console errors
- Test responsive design
- Commit your changes
git commit -m "feat: Add new feature description" - Push to your branch
git push origin feature/your-feature-name
- Open a Pull Request
- Describe your changes clearly
- Reference any related issues
- Request review from maintainers
- TypeScript: Use explicit types, avoid
any - Components: Functional components with hooks
- Naming: PascalCase for components, camelCase for functions/variables
- CSS: Tailwind utility classes, minimize custom CSS
- Formatting: Let ESLint and Prettier handle formatting
Follow the Conventional Commits specification:
feat:New featurefix:Bug fixdocs:Documentation changesstyle:Code style changes (formatting, no logic change)refactor:Code refactoringtest:Adding or updating testschore:Maintenance tasks
This project is licensed under the MIT License - see the LICENSE file for details.
- GitHub Issues: Report bugs or request features
- Internal Xebia Support: Contact the SOWGen.ai team via Slack
- Documentation: Check docs/ folder for detailed guides
Maintained by the Xebia Product Team
- Xebia: For sponsoring this project and providing domain expertise
- React Team: For the amazing React framework
- Tailwind Labs: For the excellent Tailwind CSS framework
- Radix UI: For accessible component primitives
- All Contributors: Thank you for your contributions!
- π GitHub Pages Demo
- π Full Documentation
- π Report Bug
- π‘ Request Feature
- π API Guide
- π Security Policy
Built with β€οΈ by Xebia | Empowering Digital Excellence