Files
ddtracker/prompt.md
Alexander Domene b056725f02 Initial commit: Due Diligence Tracker project
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-28 10:14:13 +02:00

164 lines
5.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Due Diligence Tracking System
I need you to build a due diligence tracking system based on the attached PRD and mockup. This is a web application for tracking corporate evaluation progress across multiple dimensions.
Project Overview
Build a React/TypeScript application with:
Dashboard showing dimensions (Strategy, Sales, Product, Engineering, etc.) with progress tracking
Expandable cards revealing KPIs and their associated checks
SQLite database for data persistence
Local file storage for document references
Clean, professional UI matching the attached mockup
Technical Requirements
Stack:
Frontend: React 18+ with TypeScript
Styling: Tailwind CSS
Database: SQLite (use sql.js for browser or better-sqlite3 for Node)
Build: Vite
Backend: Express.js (minimal API)
Key Features to Implement:
Dashboard Layout
Dimension cards with icon, name, KPI count, and progress bars
Expandable sections showing KPI details
Progress calculated as (completed checks / total checks) × 100%
Responsive design with print support
Data Model
Dimensions → KPIs → Checks (strict hierarchy)
Check structure: question, current_value, expected_value, reference, comment, is_completed
Check types: text, dropdown, number, percentage
File uploads up to 100MB
Core Functionality
CRUD operations for checks
Mark checks as complete/incomplete
File upload with drag-and-drop
Export data to JSON/CSV
Progress tracking per dimension/KPI
Implementation Steps
Project Setup
bash
# Create the project structure
due-diligence-tracker/
├── client/ # React frontend
├── server/ # Express backend
└── shared/ # Shared types
Database Schema
Create SQLite database with tables: dimensions, kpis, checks, files, check_types
Seed with initial data (Strategy, Sales, Product, etc.)
Set up migrations
Frontend Components
components/
├── Dashboard/
│ ├── DimensionCard.tsx
│ ├── ProgressBar.tsx
│ └── KPIExpanded.tsx
├── Checks/
│ ├── CheckForm.tsx
│ ├── CheckList.tsx
│ └── CheckItem.tsx
└── Common/
├── FileUpload.tsx
└── DynamicInput.tsx
API Endpoints
GET /api/dimensions # With nested KPIs and check counts
GET /api/kpis/:id/checks # All checks for a KPI
POST /api/checks # Create check
PUT /api/checks/:id # Update check
POST /api/files/upload # Handle file uploads
GET /api/export/:format # Export data
UI/UX Requirements
Match the gray theme from mockup with customizable accent colors
Smooth expand/collapse animations
Loading states and error handling
Keyboard navigation support
Specific Implementation Details
Check Type System:
typescript
interface CheckType {
type: 'text' | 'dropdown' | 'number' | 'percentage';
options?: string[]; // For dropdowns
validation?: {
min?: number;
max?: number;
required?: boolean;
};
}
// Dynamic rendering based on check type
const DynamicInput = ({ checkType, value, onChange }) => {
switch(checkType.type) {
case 'dropdown': return <Select options={checkType.options} ... />
case 'percentage': return <PercentageInput ... />
// etc.
}
}
Progress Calculation:
typescript
// For each dimension
const calculateProgress = (checks: Check[]) => {
const completed = checks.filter(c => c.is_completed).length;
return (completed / checks.length) * 100;
}
File Handling:
Store files in server/uploads/ with UUID filenames
Save metadata in database
Support drag-and-drop and click-to-upload
Show file preview for common types
Initial Data Structure
Please use this seed data for dimensions:
javascript
const seedData = {
dimensions: [
{ name: 'Strategy', icon: 'Briefcase', color: '#4F46E5' },
{ name: 'Sales', icon: 'TrendingUp', color: '#10B981' },
{ name: 'Product', icon: 'Target', color: '#3B82F6' },
{ name: 'Organization', icon: 'Building', color: '#8B5CF6' },
{ name: 'Engineering', icon: 'Code', color: '#F59E0B' },
{ name: 'DevOps', icon: 'Shield', color: '#EF4444' },
{ name: 'Cyber', icon: 'Shield', color: '#6B7280' },
{ name: 'Finance', icon: 'DollarSign', color: '#059669' },
{ name: 'People', icon: 'Users', color: '#DC2626' },
{ name: 'Culture', icon: 'Heart', color: '#7C3AED' }
]
};
Code Quality Requirements
TypeScript: Strict mode, proper interfaces for all data structures
Error Handling: Try-catch blocks, user-friendly error messages
Performance: Lazy loading for checks, debounced search
Accessibility: ARIA labels, keyboard navigation
Testing: Basic unit tests for critical functions
Styling Guidelines
Use Tailwind classes matching the mockup:
Cards: bg-white rounded-xl border-2 border-gray-300 p-6 shadow-sm
Buttons: hover:bg-gray-100 transition-colors
Progress bars: Custom component with dynamic color based on dimension
Icons: Use lucide-react icons as shown in mockup
Development Priorities
Phase 1: Get the dashboard working with static data
Phase 2: Add database and CRUD operations
Phase 3: Implement file uploads and references
Phase 4: Add export functionality
Phase 5: Polish UI and add validation
Important Notes
Keep the UI clean and professional - avoid over-designing
The mockup's expand/collapse functionality is critical
Progress bars should update in real-time as checks are completed
Make it easy to add new dimensions/KPIs/checks in the future
File storage is local - no cloud integration needed
Focus on desktop experience first, then make responsive
Example Usage Flow
User sees dashboard with all dimensions
Clicks on "Engineering" dimension to expand
Sees list of KPIs with their checks
Clicks on a check to edit
Updates current value from "Traditional" to "Agile"
Uploads a PDF reference document
Marks check as complete
Progress bar updates automatically
Please start by setting up the project structure and creating the dashboard with expandable dimension cards. Let me know if you need clarification on any requirements!