A modern, AI-powered web application for tracking aircraft parts sent to repair stations. Replaces manual Excel tracking with an intelligent, responsive interface that syncs with SharePoint and provides automated workflows, smart reminders, and natural language command processing.
The GenThrust RO Tracker is a comprehensive React-based dashboard that provides real-time visibility and intelligent automation for repair orders (ROs) of aircraft parts. It seamlessly integrates with Microsoft 365 services (SharePoint, Excel, Outlook, To Do) and features an AI assistant powered by Claude for natural language interaction and automated workflows.
- AI-Powered Assistant: Natural language commands via Claude AI (Ctrl+K)
- Real-time Data: Directly reads from and writes to SharePoint Excel files
- Intelligent Automation: Smart reminders, payment tracking, automatic archiving
- Multi-Sheet Management: Active, Paid, NET, and Returns tracking
- Shop Directory: Complete repair facility database with contact management
- Email Integration: Built-in email composer with templates
- File Attachments: Upload and manage documents per RO
- Advanced Analytics: Dashboard with KPIs, trends, and overdue tracking
- Dark Mode: Full dark/light theme support
- Mobile Responsive: Optimized for all devices
- Secure: Microsoft Azure AD authentication with MFA support
- Natural Language Interface: Talk to your repair orders in plain English
- Keyboard Shortcut: Press
Ctrl+Kanywhere to open AI Assistant - Powerful AI Tools:
- Update repair orders (status, cost, tracking, notes)
- Query and filter ROs with natural language
- Send reminder emails to shops
- Get RO summaries and analytics
- Archive completed repair orders
- Streaming Responses: Real-time AI feedback as you type
- Context-Aware: AI understands your RO and shop data
- Activity Logs: Review all AI actions in text or Excel format
- Active RO Tracking: Real-time view of all in-progress repair orders
- Multi-Sheet Archiving:
- Paid Sheet: Received and fully paid ROs
- NET Sheet: Received ROs awaiting NET payment (30/60/90 days)
- Returns Sheet: BER (Beyond Economic Repair), RAI (Return As Is), Cancelled
- Smart Archiving: Automatically routes ROs based on payment terms and status
- Status Lifecycle Management:
- TO SEND, WAITING QUOTE, APPROVED, BEING REPAIRED
- CURRENTLY BEING SHIPPED (inbound to shop), RECEIVED
- SHIPPING (outbound to customer), PAID, PAYMENT SENT
- RAI, BER
- Status History Timeline: Visual timeline of all status changes with dates, costs, and notes
- Approval Gates: Confirmation dialogs for critical archival actions
- Business Rules Engine: Automatic next update date calculation per status
- Complete Shop Database: Manage repair facilities and vendors
- Shop Details:
- Customer number, business name, full address
- Phone, toll-free, fax, email, website
- Primary contact person
- Payment terms (NET, COD, Prepaid, etc.)
- ILS code, last sale date, YTD sales
- Search & Filter: Find shops by name, contact, email, location
- CRUD Operations: Add, edit, delete shop records
- Integration: Link ROs to shops with automatic lookup
- Built-in Email Composer: Send emails directly from the dashboard
- Dynamic Templates:
- Quote request emails
- Follow-up status updates
- Approval confirmations
- Custom templates per RO status
- Template Customization: Edit subject, body, recipients before sending
- Email from RO Details: One-click email to shop from RO view
- Email Logging: Track sent emails (planned)
- RO Document Management: Upload files to any repair order
- Drag-and-Drop Upload: Easy file attachment
- Multi-File Upload: Batch upload multiple documents
- Storage Options:
- OneDrive (simple setup)
- SharePoint (enterprise organization)
- File Operations: Upload, download, delete, view metadata
- Organized Folders: Files auto-organized by RO number
- Metadata Tracking: Created/modified dates, user, file size
- Multiple Reminder Types:
- Microsoft To Do tasks
- Outlook Calendar events
- Combined (both To Do and Calendar)
- Automatic Scheduling: Next update date calculated by business rules
- NET Payment Reminders: Auto-create calendar events for NET30/60/90 payments
- Status-Based Follow-ups:
- TO SEND: 3 days
- WAITING QUOTE: 14 days
- APPROVED: 7 days
- BEING REPAIRED: 10 days
- CURRENTLY BEING SHIPPED: 5 days
- RECEIVED: 3 days
- SHIPPING: 3 days
- PAID: Based on payment terms
- Real-time Statistics:
- Total Active ROs, Overdue count
- Waiting for Quote, Approved, Being Repaired, Shipping
- Today's Due, 30+ Days Overdue
- On Track count
- Total & Estimated Values
- Archive Statistics:
- Approved/Paid, Approved/NET
- RAI, BER, Cancelled
- Visual KPI Cards: Color-coded cards with icons
- Trend Indicators: See changes at a glance
- Multi-Column Search: Search across RO number, shop, part, serial number, description
- Smart Filters:
- Overdue ROs only
- Due this week
- High value (>$5000)
- Filter by shop
- Waiting for action
- Clear all filters
- Active Filter Count: See how many filters applied
- Column Sorting: Sort by RO number, status, date, cost
- Genthrust Inventory Access: View and access company inventory file
- File Discovery: Automatic SharePoint file search
- Workbook Structure: Display worksheets, tables, and columns
- External Link: Open inventory directly in Excel Online
- Dark/Light Mode: Full theme support with system preference detection
- Responsive Design: Optimized for desktop, tablet, and mobile
- Toast Notifications: User-friendly feedback with Sonner
- Loading States: Skeleton loaders and spinners
- Confirmation Dialogs: Prevent accidental actions
- Keyboard Shortcuts: Ctrl+K for AI Assistant
- Smooth Animations: Modern transitions and effects
- Microsoft Azure AD: Enterprise-grade authentication
- Single Sign-On (SSO): Use your organization account
- Multi-Factor Authentication (MFA): Additional security layer
- Scope-Based Permissions: Granular API access control
- Token Management: Automatic refresh, silent acquisition
- No Hardcoded Secrets: All credentials in environment variables
- Multi-Select: Select multiple ROs with checkboxes
- Batch Actions:
- Bulk status updates
- Batch archiving
- Export to CSV
- Bulk delete (planned)
- React 19.1 - Latest React with concurrent features
- TypeScript 5.9 - Type-safe development
- Vite 7 - Lightning-fast build tool and dev server
- Tailwind CSS 3.4 - Utility-first CSS framework
- Shadcn/UI - High-quality, accessible React components
- Radix UI - Headless UI primitives for accessibility
- Anthropic Claude - Claude Sonnet 4 AI model
- Streaming SDK - Real-time response streaming
- Tool Use API - Structured function calling
- Context Management - Maintains conversation history
- Microsoft Graph API - SharePoint, Excel, OneDrive, Outlook access
- Azure AD / MSAL - Authentication and authorization
- Excel Tables - Structured data in SharePoint Excel files
- Microsoft To Do API - Task reminders
- Microsoft Calendar API - Calendar event reminders
- TanStack Query (React Query) 5.90 - Server state, caching, synchronization
- Sonner - Beautiful toast notifications
- Lucide React - Beautiful icon library (550+ icons)
- class-variance-authority - Component variant management
- tailwind-merge - Intelligent class merging
- Vitest - Fast unit test runner
- React Testing Library - Component testing
- ESLint - Code quality and consistency
- TypeScript ESLint - TypeScript-specific linting
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β User's Browser β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β React Application β β
β β ββ Components (UI, Dialogs, Tables) β β
β β ββ Hooks (Data fetching with React Query) β β
β β ββ Services (Excel, SharePoint, AI, Email, Reminders) β β
β β ββ AI Agent (Claude Sonnet 4 with tool use) β β
β β ββ MSAL (Authentication) β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Microsoft Azure AD β
β (Authentication & Authorization) β
β Multi-Factor Authentication β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββΌββββββββββββββββ¬βββββββββββββββββββ
β β β β
ββββββββββββββββββββ ββββββββββββββ βββββββββββββββ ββββββββββββββββββ
β Anthropic API β β Graph API β β To Do API β β Calendar API β
β (Claude AI) β β (SharePointβ β (Reminders) β β (Events) β
ββββββββββββββββββββ β & Excel) β βββββββββββββββ ββββββββββββββββββ
ββββββββββββββ
β
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SharePoint Online β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Book.xlsx (Main Excel File) β β
β β ββ RepairTable (Active repair orders) β β
β β ββ Paid (Completed & paid ROs) β β
β β ββ NET (Received, awaiting NET payment) β β
β β ββ Returns (BER, RAI, Cancelled) β β
β β β β
β β Shops.xlsx (Shop Directory) β β
β β ββ ShopsTable (All repair facilities) β β
β β β β
β β Genthrust_Inventory.xlsx (Inventory File) β β
β β β β
β β RO Attachments/ (Document folders by RO number) β β
β β ββ RO-12345/ (files for RO 12345) β β
β β ββ RO-12346/ (files for RO 12346) β β
β β ββ ... β β
β β β β
β β AI_Logs/ (Daily AI activity logs) β β
β β ββ AI_Log_2025-01-13.xlsx β β
β β ββ ... β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
App.tsx- Root component, authentication, navigationDashboard.tsx- KPI cards, statistics, analyticsROTable.tsx- Main repair orders table with search, filter, sortShopDirectory.tsx- Shop management interface
RODetailDialog.tsx- Comprehensive RO details with tabsAddRODialog.tsx- Create new RO or edit existingUpdateStatusDialog.tsx- Change status with validation and archivingApprovalDialog.tsx- Confirm archival decisionsArchiveDestinationDialog.tsx- Choose PAID vs NET for unclear payment termsEmailComposerDialog.tsx- Draft and send emails to shopsReminderTypeDialog.tsx- Choose reminder type (To Do, Calendar, Both)ShopManagementDialog.tsx- Add/edit shop informationLogsDialog.tsx- View AI activity logs
AIAgentDialog.tsx- Main AI assistant interface with streamingAttachmentManager.tsx- File upload, download, delete interfaceStatusTimeline.tsx- Visual status history timelineStatusBadge.tsx- Color-coded status indicatorsBulkActionsBar.tsx- Multi-select action toolbarInventoryFileViewer.tsx- Inventory file displayThemeToggle.tsx- Dark/light mode switcher
- Button, Card, Badge, Input, Label, Checkbox
- Dialog, Textarea, Table, Select, Dropdown Menu
useROs()- Fetch all active repair ordersuseArchivedROs(sheetName)- Fetch from specific archiveuseShops()- Fetch all shopsuseDashboardStats()- Calculate dashboard metricsuseInventoryFile()- Search and access inventory fileuseAttachments(roNumber)- Fetch RO attachments
useUpdateROStatus()- Update RO statususeAddRepairOrder()- Create new ROuseUpdateRepairOrder()- Edit existing ROuseBulkUpdateStatus()- Batch status updatesuseArchiveRO()- Move RO to archive sheetuseDeleteRepairOrder()- Delete ROuseAddShop(),useUpdateShop(),useDeleteShop()- Shop CRUDuseUploadAttachment(),useDeleteAttachment()- File operations
useROFilters()- Manage filter state and active countuseTheme()- Theme state and toggle
Handles all SharePoint/Excel operations for repair orders.
Key Methods:
getRepairOrders()- Fetch all ROs from Excel tableaddRepairOrder(data)- Add new RO rowupdateROStatus(rowIndex, status, notes, cost, deliveryDate)- Update RO fieldsappendNote(rowIndex, note)- Add note to existing ROmoveROToArchive(rowIndex, targetSheet, targetTable)- Archive ROdeleteRepairOrder(rowIndex)- Delete ROsearchForFile(fileName)- Find file in SharePointlistFileStructure(fileId)- Get workbook structure
Session Management:
- Creates isolated workbook sessions for write operations
- Prevents conflicts with concurrent users
- Auto-closes in finally blocks
Date Handling:
- Excel serial dates β JavaScript Date conversion
- Formula:
(serialDate - 25569) * 86400 * 1000
Manages shop/repair facility data.
Methods:
getShops()- Fetch all shopsaddShop(data)- Create new shopupdateShop(rowIndex, data)- Edit shopdeleteShop(rowIndex)- Remove shop
Handles file attachments and document management.
Methods:
uploadFile(roNumber, file)- Upload attachmentuploadMultipleFiles(roNumber, files)- Batch uploadlistFiles(roNumber)- Get RO attachmentsdeleteFile(fileId)- Remove attachmentdownloadFile(fileId)- Download filegetROFolderUrl(roNumber)- Get SharePoint folder URL
Storage Options:
- SharePoint: Enterprise document libraries
- OneDrive: Simple setup for small teams
Creates reminders and calendar events.
Methods:
createToDoTask(title, dueDate, notes)- Microsoft To Do taskcreateCalendarEvent(title, startDate, notes)- Outlook calendar eventcreatePaymentDueCalendarEvent({roNumber, shopName, amount, netDays})- NET payment reminder
Logs AI interactions to SharePoint/OneDrive.
Methods:
logAIInteraction(action, details, result)- Log AI actiongetAILogs(date)- Retrieve daily logs- Automatic Excel file creation with formatted entries
Claude AI integration for natural language processing.
Features:
- Claude Sonnet 4 model
- Streaming responses
- Tool use with structured schemas
- Multi-turn conversations
- Context-aware with RO and shop data
Methods:
processCommand(userMessage, context)- Process natural language commandcontinueConversation(messages)- Multi-turn chat- Handles tool execution and response streaming
Defines AI tool schemas and executors.
Available Tools:
update_repair_order- Update status, cost, tracking, notes, datesquery_repair_orders- Filter ROs by status, shop, date, cost, overduesend_reminder_email- Email shops for status updatesget_repair_order_summary- Summarize RO detailsarchive_repair_order- Move completed ROs to archivecreate_repair_order- Add new RO (planned)
Implemented in businessRules.ts:
- TO SEND: Follow up in 3 days to confirm shipment
- WAITING QUOTE: Follow up in 14 days for quote
- APPROVED: Follow up in 7 days to check repair start
- BEING REPAIRED: Follow up in 10 days for progress
- CURRENTLY BEING SHIPPED: Follow up in 5 days for inbound delivery
- RECEIVED: Follow up in 3 days for payment processing
- SHIPPING: Follow up in 3 days to track delivery
- PAID: Based on payment terms
- NET 30/60/90: Payment due in X days
- COD/Prepaid/Credit Card: No follow-up (complete)
- Wire Transfer: 3 days for processing
- Unknown terms: Default 30 days
- PAYMENT SENT: Order complete, no follow-up
- BER: No follow-up needed
Implemented in excelSheets.ts:
- NET Detection: Regex pattern
NET\s*(\d+)extracts days- "NET 30", "NET30", "Net 60" β 30, 30, 60 days
- Term Types:
- COD (Cash on Delivery)
- Prepaid
- Credit Card
- Wire Transfer / XFER
- NET 30/60/90
Determined by status and payment terms:
- RECEIVED Status:
- NET payment terms β NET archive (with payment reminder)
- Other payment terms β PAID archive
- Unclear/no terms β Prompt user to choose
- PAID/PAYMENT SENT:
- PAID archive
- BER/RAI:
- Returns archive
- Other Statuses:
- Remain in Active sheet
- TO SEND: Blue
- WAITING QUOTE: Yellow
- APPROVED: Green
- BEING REPAIRED: Purple
- CURRENTLY BEING SHIPPED: Cyan
- RECEIVED: Teal
- SHIPPING: Indigo
- PAID/PAYMENT SENT: Gray
- BER: Slate
- Overdue: Red (overrides status color)
interface RepairOrder {
// Identifiers
id: string;
roNumber: string;
// Dates
dateMade: Date;
dateDroppedOff?: Date;
estimatedDeliveryDate?: Date;
currentStatusDate: Date;
lastDateUpdated: Date;
nextDateToUpdate: Date | null;
// Shop & Part Info
shopName: string;
partNumber: string;
serialNumber: string;
partDescription: string;
requiredWork: string;
shopReferenceNumber?: string;
// Costs
estimatedCost?: number;
finalCost?: number;
terms?: string; // Payment terms
// Status
currentStatus: string;
genThrustStatus?: string;
shopStatus?: string;
trackingNumber?: string;
// Notes & History
notes?: string;
statusHistory?: StatusHistoryEntry[];
// Calculated
isOverdue: boolean;
daysOverdue: number;
checked?: boolean;
}interface Shop {
id: string;
customerNumber: string;
businessName: string;
// Address
addressLines: string[];
city: string;
state: string;
zip: string;
country: string;
// Contact
phone: string;
tollFree?: string;
fax?: string;
email: string;
website?: string;
contact: string; // Primary contact name
// Business
paymentTerms: string;
ilsCode?: string;
lastSaleDate?: Date;
ytdSales?: number;
}interface StatusHistoryEntry {
status: string;
date: Date;
user: string;
cost?: number;
notes?: string;
deliveryDate?: Date;
}interface DashboardStats {
// Active RO Metrics
totalActive: number;
overdue: number;
waitingQuote: number;
approved: number;
beingRepaired: number;
shipping: number;
dueToday: number;
overdue30Plus: number;
onTrack: number;
// Financial
totalValue: number;
estimatedValue: number;
// Archive Stats
archiveStats: {
approvedPaid: number;
approvedNet: number;
rai: number;
ber: number;
cancelled: number;
};
}Column Index Field Name
ββββββββββββββββββββββββββββββββββββββββ
0 RO Number
1 Date Made
2 Shop Name
3 Part Number
4 Serial Number
5 Part Description
6 Required Work
7 Date Dropped Off
8 Estimated Cost
9 Final Cost
10 Terms (Payment Terms)
11 Shop Reference Number
12 Estimated Delivery Date
13 Current Status
14 Current Status Date
15 GenThrust Status
16 Shop Status
17 Tracking Number
18 Notes
19 Last Date Updated
20 Next Date to Update
21 Checked
- Node.js 18+ and npm
- Azure AD App Registration with permissions:
User.Read- User profile accessFiles.ReadWrite.All- Excel file read/writeSites.Read.All- SharePoint site accessTasks.ReadWrite- Microsoft To DoCalendars.ReadWrite- Outlook Calendar
- SharePoint Site with Excel files
- Excel Tables (not just worksheets) for data storage
- Anthropic API Key for Claude AI
-
Clone the repository
cd repair-dashboard -
Install dependencies
npm install
-
Create
.env.localfile# Azure AD / MSAL Configuration VITE_CLIENT_ID=your-azure-ad-client-id VITE_TENANT_ID=your-azure-ad-tenant-id # SharePoint Configuration VITE_SHAREPOINT_SITE_URL=https://yourcompany.sharepoint.com/sites/YourSite VITE_EXCEL_FILE_NAME=Book.xlsx VITE_EXCEL_TABLE_NAME=RepairTable VITE_SHOPS_FILE_NAME=Shops.xlsx VITE_SHOPS_TABLE_NAME=ShopsTable # Anthropic AI Configuration VITE_ANTHROPIC_API_KEY=sk-ant-api03-... # Storage Configuration (optional) VITE_STORAGE_TYPE=sharepoint # or "onedrive" VITE_SHAREPOINT_SITE_ID=your-site-id # if using SharePoint storage
-
Configure Azure AD App Registration
- Go to Azure Portal
- Navigate to Azure Active Directory β App registrations
- Create new registration or select existing
- Authentication:
- Platform: Single-page application (SPA)
- Redirect URIs:
http://localhost:5173(development)- Your production URL
- Implicit grant: Enable Access tokens and ID tokens
- API permissions (Microsoft Graph delegated):
User.Read(default)Files.ReadWrite.AllSites.Read.AllTasks.ReadWriteCalendars.ReadWrite- Click "Grant admin consent"
- Copy Client ID and Tenant ID to
.env.local
-
Set up SharePoint Excel Files
Book.xlsx (Repair Orders):
- Upload Excel file to SharePoint document library
- IMPORTANT: Create Excel Tables (not just worksheets):
- Select data range β Insert β Table (Ctrl+T)
- Check "My table has headers"
- Name tables:
- Active repairs:
RepairTable - Paid archive:
Paid - NET archive:
NET - Returns archive:
Returns
- Active repairs:
- Column headers must match the mapping above
Shops.xlsx (Shop Directory):
- Create Excel table named
ShopsTable - Required columns:
- Customer Number, Business Name, Address Lines
- City, State, Zip, Country
- Phone, Email, Contact, Payment Terms
Permissions:
- Ensure your account has Edit permissions on files
- All users need at least Read access
-
Get Anthropic API Key
- Sign up at anthropic.com
- Create API key
- Add to
.env.localasVITE_ANTHROPIC_API_KEY
-
Run development server
npm run dev
-
Open browser
- Navigate to
http://localhost:5173 - Sign in with your Microsoft account
- Press Ctrl+K to test the AI Assistant
- Start tracking repair orders!
- Navigate to
npm run buildOutputs to /dist directory. Deploy to:
- Azure Static Web Apps (recommended)
- Netlify
- Vercel
- Any static hosting service
Production Environment Variables:
- Set all
VITE_*variables in your hosting platform - Ensure Azure AD redirect URI matches production URL
- Update CORS settings if needed
repair-dashboard/
βββ src/
β βββ assets/ # Static assets
β β βββ GENLOGO.png # Company logo
β β
β βββ components/ # React components
β β βββ ui/ # shadcn/ui base components
β β β βββ button.tsx
β β β βββ card.tsx
β β β βββ badge.tsx
β β β βββ input.tsx
β β β βββ label.tsx
β β β βββ checkbox.tsx
β β β βββ dialog.tsx
β β β βββ textarea.tsx
β β β βββ table.tsx
β β β βββ select.tsx
β β β βββ dropdown-menu.tsx
β β βββ Dashboard.tsx # Statistics dashboard
β β βββ ROTable.tsx # Main repair orders table
β β βββ RODetailDialog.tsx # RO details modal
β β βββ AddRODialog.tsx # Create/edit RO modal
β β βββ UpdateStatusDialog.tsx # Update status
β β βββ ApprovalDialog.tsx # Archive approval
β β βββ ArchiveDestinationDialog.tsx # PAID vs NET
β β βββ StatusBadge.tsx # Status display
β β βββ StatusTimeline.tsx # Status history
β β βββ ShopDirectory.tsx # Shop management
β β βββ ShopManagementDialog.tsx # Add/edit shops
β β βββ EmailComposerDialog.tsx # Email interface
β β βββ ReminderTypeDialog.tsx # Reminder options
β β βββ AIAgentDialog.tsx # AI assistant
β β βββ LogsDialog.tsx # AI activity logs
β β βββ AttachmentManager.tsx # File uploads
β β βββ BulkActionsBar.tsx # Multi-select actions
β β βββ InventoryFileViewer.tsx # Inventory file
β β βββ ThemeToggle.tsx # Dark/light mode
β β
β βββ hooks/ # Custom React hooks
β β βββ useROs.ts # RO data fetching & mutations
β β βββ useShops.ts # Shop data
β β βββ useROFilters.ts # Filter state management
β β βββ useInventoryFile.ts # Inventory file access
β β βββ useTheme.ts # Theme state
β β
β βββ lib/ # Core libraries
β β βββ excelService.ts # Excel/SharePoint service
β β βββ shopService.ts # Shop CRUD operations
β β βββ reminderService.ts # To Do & Calendar
β β βββ loggingService.ts # AI logging
β β βββ businessRules.ts # Status & date logic
β β βββ emailTemplates.ts # Email generation
β β βββ trackingUtils.ts # Carrier detection
β β βββ exportUtils.ts # CSV export
β β βββ msalConfig.ts # Azure AD config
β β βββ utils.ts # Utility functions
β β
β βββ services/ # Backend services
β β βββ anthropicAgent.ts # Claude AI integration
β β βββ aiTools.ts # AI tool definitions
β β βββ aiParser.ts # Command parsing
β β βββ sharepoint.ts # File attachments
β β
β βββ config/ # Configuration
β β βββ anthropic.ts # AI settings
β β βββ excelSheets.ts # Sheet definitions
β β βββ sharepoint.ts # Storage config
β β
β βββ types/ # TypeScript types
β β βββ index.ts # Core types
β β βββ aiAgent.ts # AI types
β β βββ aiCommand.ts # Command types
β β
β βββ App.tsx # Root component
β βββ main.tsx # App entry point
β βββ index.css # Global styles
β
βββ .env.local # Environment variables (gitignored)
βββ package.json # Dependencies
βββ tsconfig.json # TypeScript config
βββ vite.config.ts # Vite config
βββ tailwind.config.js # Tailwind CSS config
βββ postcss.config.js # PostCSS config
βββ components.json # shadcn/ui config
βββ README.md # This file
- State-of-the-art natural language understanding
- Tool use API for structured function calling
- Streaming responses for real-time feedback
- 200K token context window (handles large datasets)
- Strong reasoning capabilities for complex workflows
- Automatic caching and background updates
- Built-in loading and error states
- Automatic refetching on window focus
- Optimistic updates support
- Reduces boilerplate by 80%
- Microsoft Graph API only supports Excel Tables
- Tables provide structured, queryable data
- Automatic schema validation
- Column name access (not just indexes)
- Better for programmatic access
- Provides isolated edit context
- Prevents conflicts with concurrent users
- Recommended by Microsoft for write operations
- Ensures data consistency
- Required for batch operations
- Utility-first speeds up development
- Highly customizable with CSS variables
- Built-in dark mode support
- Excellent performance (PurgeCSS)
- Industry standard
- Copy-paste approach (full control over code)
- Built on Radix UI (world-class accessibility)
- Highly customizable
- No package bloat (only includes used components)
- TypeScript-first
- Official Microsoft authentication library
- Handles token refresh automatically
- Supports SSO and silent acquisition
- Industry standard for Azure AD
- Built-in error recovery
- Cause: Data is in worksheet cells, not an Excel Table
- Solution: Select data β Insert β Table β Name it correctly (e.g., "RepairTable")
- Verify: Table appears in Excel's Table Design tab
- Cause: No edit permissions on Excel file
- Solution: Check SharePoint permissions, ensure you have Edit access
- Fix: File β Share β Grant Edit to your account
- Cause: API permissions need admin consent
- Solution: Azure AD admin must grant consent in App Registration β API permissions β Grant admin consent
- Cause: Browser blocking popup window
- Solution: Allow popups for localhost or your domain
- Alternative: App automatically falls back to redirect flow
- Cause: React Query cache not invalidating
- Solution: Click refresh button (top right) or wait for auto-refetch (30 seconds)
- Force Refresh: F5 (browser reload)
- Cause: Invalid or missing Anthropic API key
- Solution: Verify
VITE_ANTHROPIC_API_KEYin.env.local - Check: API key starts with
sk-ant-api03-
- Cause: SharePoint permissions or incorrect site ID
- Solution:
- Check
VITE_STORAGE_TYPEsetting - Verify SharePoint site ID if using SharePoint storage
- Ensure OneDrive access if using OneDrive storage
- Check
- Cause: Missing Calendar/Tasks API permissions
- Solution: Add
Calendars.ReadWriteandTasks.ReadWriteto Azure AD app
- Cause: Theme variables not loaded
- Solution: Check
index.csshas:rootand.darkCSS variables - Reset: Clear browser cache, reload
Potential features for future development:
- Global search across all 4 tables (Active, Paid, NET, Returns)
- Responsive mobile table layout
- Advanced PDF/CSV export with filtering
- Bulk email sending to multiple shops
- Email send history tracking
- RO edit history/audit log
- Power BI integration for advanced analytics
- Gantt chart view for repair timelines
- Cost trend analysis and forecasting
- Shop performance metrics and ratings
- Automated quote reminder escalation
- Push notifications for overdue ROs
- Mobile app (React Native)
- Offline support with sync
- Power Automate workflow integration
- QR code generation for ROs
- Barcode scanning for parts
- Multi-language support
This is an internal GenThrust project. For questions or issues:
- Contact the development team
- Submit issues via internal ticketing system
- Request features via project management board
Proprietary - GenThrust XVII Internal Use Only
All rights reserved. This software is the property of GenThrust XVII and may not be distributed, copied, or used outside the organization without explicit written permission.
- Ctrl+K - Open AI Assistant
- Esc - Close dialogs
- Ctrl+F - Focus search (browser default)
"Update RO 12345 to RECEIVED status"
"Show me all overdue ROs from Duncan Aviation"
"Send a reminder email to StandardAero for RO 12346"
"What's the summary for RO 12347?"
"Archive RO 12348 to PAID"
"Show high value ROs over $10000"
TO SEND β WAITING QUOTE β APPROVED β BEING REPAIRED β
CURRENTLY BEING SHIPPED β RECEIVED β SHIPPING β PAID β PAYMENT SENT
Alternative endings:
β BER (Beyond Economic Repair)
β RAI (Return As Is)
- PAID Sheet: Received + non-NET payment terms
- NET Sheet: Received + NET30/60/90 terms (creates reminder)
- Returns Sheet: BER, RAI, Cancelled statuses
Built with β€οΈ using Claude Code & Claude AI for GenThrust XVII
Last Updated: January 2025