🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
11 KiB
11 KiB
Due Diligence Tracking System
Product Requirements Document (PRD)
1. Executive Summary
A web-based due diligence tracking system that enables systematic evaluation of corporate dimensions through KPIs and checks. The system provides a dashboard overview of progress across multiple dimensions with drill-down capabilities to individual checks.
2. System Architecture
2.1 Technology Stack
- Frontend: React with TypeScript
- Styling: Tailwind CSS
- Database: SQLite (via sql.js for browser compatibility)
- File Storage: Local file system (server-side)
- Build Tool: Vite
- Deployment: Self-hosted on dedicated server
2.2 Data Architecture
Database: SQLite
├── dimensions (id, name, order, created_at)
├── kpis (id, dimension_id, name, order, created_at)
├── checks (id, kpi_id, question, check_type, current_value, expected_value,
│ reference_url, reference_file_id, comment, is_completed, created_at, updated_at)
├── check_types (id, name, data_type, options_json)
└── files (id, original_name, stored_path, mime_type, size_bytes, uploaded_at)
3. Data Model
3.1 Hierarchy
- Dimension → KPIs → Checks (strict 3-level hierarchy)
- One-to-many relationships throughout
- No cross-references between checks and KPIs
3.2 Check Structure
Each check contains:
- Question/Statement (text): The evaluation criteria
- Current Value (dynamic type based on check_type)
- Expected Value (dynamic type based on check_type)
- Reference (URL or file upload)
- Comment (text): Additional notes
- Is Completed (boolean): Manual completion flag
3.3 Check Types
- Text: Free-form text input
- Dropdown: Predefined options stored in JSON
- Number: Numeric input with optional min/max
- Percentage: 0-100 with % display
Example check_types configuration:
{
"development_method": {
"type": "dropdown",
"options": ["Traditional", "Agile", "Waterfall", "Hybrid"]
},
"team_size": {
"type": "number",
"min": 1,
"max": 1000
},
"completion_rate": {
"type": "percentage"
}
}
4. Core Features
4.1 Dashboard View
- Overview Cards: Display each dimension with:
- Icon and name
- KPI count
- Total items (open + completed)
- Progress percentage
- Visual progress bar
- Expandable Sections: Click to reveal KPI details
- Progress Calculation: (Completed checks / Total checks) × 100%
4.2 Check Management
- Add Check: Form with dynamic fields based on check type
- Edit Check: In-place editing with validation
- Complete Check: Checkbox to mark as done
- Bulk Actions: Select multiple checks for completion/deletion
4.3 File Handling
- Upload: Drag-and-drop or click to upload
- File Types: All types accepted (max 100MB)
- Storage: Server file system with database reference
- Preview: Quick preview for common formats (PDF, images)
5. User Interface
5.1 Design System Options
Option A: Professional Blue
- Primary: #3B82F6 (Blue)
- Success: #10B981 (Green)
- Warning: #F59E0B (Amber)
- Error: #EF4444 (Red)
- Neutral: Gray scale
Option B: Modern Purple
- Primary: #8B5CF6 (Purple)
- Success: #10B981 (Green)
- Warning: #F59E0B (Amber)
- Error: #EF4444 (Red)
- Neutral: Slate scale
Option C: Corporate Dark
- Primary: #1F2937 (Dark Gray)
- Success: #059669 (Emerald)
- Warning: #D97706 (Amber)
- Error: #DC2626 (Red)
- Neutral: Gray scale
5.2 Layout Structure
┌─────────────────────────────────────┐
│ Header (Logo, Title, Actions) │
├─────────────────────────────────────┤
│ ┌─────────┐ ┌─────────┐ ┌─────────┐│
│ │Strategy │ │ Sales │ │Product ││ <- Dimension Cards
│ └─────────┘ └─────────┘ └─────────┘│
│ ┌─────────┐ ┌─────────┐ ┌─────────┐│
│ │Engineer │ │ DevOps │ │ Cyber ││
│ └─────────┘ └─────────┘ └─────────┘│
│ ┌─────────┐ ┌─────────┐ │
│ │ People │ │Culture │ │
│ └─────────┘ └─────────┘ │
└─────────────────────────────────────┘
Expanded View:
┌─────────────────────────────────────┐
│ ▼ Engineering │
├─────────────────────────────────────┤
│ KPI: Development Efficiency │
│ ├─ Check 1: Dev methodology │
│ ├─ Check 2: Sprint velocity │
│ └─ Check 3: Code coverage │
└─────────────────────────────────────┘
6. Functional Requirements
6.1 Phase 1 (MVP)
- Dashboard with all dimensions
- Expandable dimension views
- Add/Edit/Complete checks
- File upload and reference
- Progress tracking
- Data persistence in SQLite
- Export data to JSON/CSV
6.2 Phase 2 (Future)
- Configurable dimensions
- Advanced queries and filters
- PDF report generation
- Historical progress tracking
- Multi-user support
- Check templates
- Automated reminders
7. Technical Implementation
7.1 Database Schema
-- Dimensions table
CREATE TABLE dimensions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
icon TEXT,
color TEXT,
order_index INTEGER,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- KPIs table
CREATE TABLE kpis (
id INTEGER PRIMARY KEY AUTOINCREMENT,
dimension_id INTEGER NOT NULL,
name TEXT NOT NULL,
description TEXT,
order_index INTEGER,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (dimension_id) REFERENCES dimensions(id)
);
-- Checks table
CREATE TABLE checks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
kpi_id INTEGER NOT NULL,
question TEXT NOT NULL,
check_type TEXT NOT NULL,
current_value TEXT,
expected_value TEXT,
reference_url TEXT,
reference_file_id INTEGER,
comment TEXT,
is_completed BOOLEAN DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (kpi_id) REFERENCES kpis(id),
FOREIGN KEY (reference_file_id) REFERENCES files(id)
);
-- Files table
CREATE TABLE files (
id INTEGER PRIMARY KEY AUTOINCREMENT,
original_name TEXT NOT NULL,
stored_path TEXT NOT NULL,
mime_type TEXT,
size_bytes INTEGER,
uploaded_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Check types configuration
CREATE TABLE check_types (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL UNIQUE,
data_type TEXT NOT NULL,
options_json TEXT,
validation_json TEXT
);
7.2 API Endpoints
GET /api/dimensions
GET /api/dimensions/:id/kpis
GET /api/kpis/:id/checks
POST /api/checks
PUT /api/checks/:id
DELETE /api/checks/:id
POST /api/files/upload
GET /api/files/:id
GET /api/export/:format (json|csv)
8. Non-Functional Requirements
8.1 Performance
- Dashboard load time < 2 seconds
- Check updates < 500ms
- Support 10,000+ checks without degradation
8.2 Security
- File upload validation
- SQL injection prevention
- XSS protection
- File size limits (100MB)
8.3 Usability
- Responsive design (mobile, tablet, desktop)
- Keyboard navigation support
- Print-friendly views
- Intuitive drag-and-drop
9. Initial Data Structure
{
"dimensions": [
{
"name": "Strategy",
"icon": "Briefcase",
"kpis": [
{
"name": "Strategic Alignment",
"checks": [
{
"question": "Is the company vision clearly defined?",
"check_type": "dropdown",
"options": ["Yes", "Partially", "No"]
}
]
}
]
},
{
"name": "Sales",
"icon": "TrendingUp",
"kpis": [
{
"name": "Sales Performance",
"checks": [
{
"question": "Monthly revenue growth rate",
"check_type": "percentage"
}
]
}
]
},
{
"name": "Engineering",
"icon": "Code",
"kpis": [
{
"name": "Development Practices",
"checks": [
{
"question": "Development methodology",
"check_type": "dropdown",
"options": ["Traditional", "Agile", "Waterfall", "Hybrid"]
},
{
"question": "Average sprint velocity",
"check_type": "number"
}
]
}
]
}
]
}
10. Development Roadmap
Week 1-2: Foundation
- Set up project structure
- Implement SQLite integration
- Create basic UI components
- Dashboard layout
Week 3-4: Core Features
- Check CRUD operations
- File upload system
- Progress calculations
- Expand/collapse functionality
Week 5-6: Polish & Testing
- Validation rules
- Export functionality
- Responsive design
- Performance optimization
11. Success Metrics
- Efficiency: 50% reduction in due diligence tracking time
- Completeness: 100% of checks documented
- Visibility: Real-time progress tracking
- Usability: < 5 minute onboarding time
12. Appendix
Sample Check Types Configuration
const checkTypes = {
text: {
component: 'TextInput',
validation: null
},
dropdown: {
component: 'SelectInput',
validation: 'requiredOption'
},
number: {
component: 'NumberInput',
validation: 'numeric'
},
percentage: {
component: 'PercentageInput',
validation: 'range:0:100'
}
};
File Structure
due-diligence-tracker/
├── client/
│ ├── src/
│ │ ├── components/
│ │ ├── pages/
│ │ ├── hooks/
│ │ ├── utils/
│ │ └── types/
│ └── public/
├── server/
│ ├── api/
│ ├── db/
│ ├── uploads/
│ └── utils/
└── shared/
└── types/