corrad-bp/CLAUDE.md
Md Afiq Iskandar 2f1d3964c8 Add Documentation for Process Builder and CLAUDE Guidance
- Introduced CLAUDE.md to provide comprehensive guidance for developers working with the codebase, including common development commands, architecture overview, and security considerations.
- Added Process Builder Pages Analysis document detailing the implementation, features, and improvement opportunities for the process-builder section, including in-depth analysis of index.vue, manage.vue, and analytics pages.
- Updated README.md to reflect the new documentation structure and enhance clarity on system capabilities and usage guidelines.
- Removed outdated JSON files related to process definitions and variables to streamline the documentation and ensure relevance.
- Enhanced overall documentation organization for better accessibility and understanding of the Corrad ProcessMaker platform.
2025-07-15 10:17:10 +08:00

214 lines
7.9 KiB
Markdown

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Common Development Commands
### Development Server
```bash
yarn dev # Start development server
yarn build # Build for production
yarn build:new # Build with pre/post-build scripts
yarn preview # Preview production build
yarn generate # Generate static site
```
### Database Operations
```bash
yarn prisma # Pull DB schema, generate client, and start dev server
npx prisma generate # Generate Prisma client only
npx prisma db pull # Pull database schema
npx prisma studio # Open Prisma Studio for database management
```
### Code Quality
```bash
npx eslint . # Run ESLint
npx prettier --write . # Format code with Prettier
```
## Architecture Overview
### Technology Stack
- **Framework**: Nuxt 3 with Vue 3 Composition API
- **Database**: MySQL with Prisma ORM
- **State Management**: Pinia stores
- **UI Framework**: Tailwind CSS + Custom Rose UI components
- **Forms**: FormKit with custom extensions
- **Process Visualization**: Vue Flow for BPMN diagrams
- **Authentication**: JWT-based with custom middleware
### Core System Components
This is a **Business Process Management (BPM) platform** with two primary modules:
#### 1. Process Builder (`/process-builder/`)
Visual BPMN workflow designer with three main pages:
- **index.vue**: Main process designer (drag-and-drop BPMN editor, ~40k tokens)
- **manage.vue**: Process management dashboard with metrics and CRUD operations
- **analytics/[id].vue**: Process analytics and journey visualization
#### 2. Form Builder (`/form-builder/`)
Dynamic form creator with conditional logic, validation, and JavaScript API integration
### State Management Architecture
**Primary Stores:**
- `processBuilder.js`: Process design, node management, auto-save, history tracking
- `formBuilder.js`: Form components, validation, custom scripts, preview data
- `variableStore.js`: Global process variables and data flow management
- `user.js`: Authentication and user session management
**Store Patterns:**
- All stores use Pinia with persistence
- Reactive state updates trigger UI changes automatically
- Centralized error handling and loading states
- Auto-save functionality prevents data loss
### Database Schema (Prisma)
**Core Entities:**
- `process`: BPMN process definitions with JSON schema, versioning, and templates
- `form`: Dynamic form configurations with custom scripts and validation
- `caseInstance`: Process execution instances with status tracking
- `task`: User tasks within process cases
- `user/role/userrole`: Authentication and RBAC system
**Key Relationships:**
- Forms can be embedded in process tasks
- Process variables flow between forms and process nodes
- Complete audit trail through `processHistory` and `formHistory`
- Case timeline tracking for process execution monitoring
### Component Architecture
**Process Flow Components (`/components/process-flow/`):**
- `ProcessFlowCanvas.vue`: Main BPMN editor using Vue Flow
- `ProcessBuilderComponents.vue`: Draggable component palette
- Node Configuration Modals: Specialized modals for each BPMN node type
- `VariableManager.vue`: Process variable management interface
**Form Components (`/components/formkit/`):**
- Custom FormKit inputs with enhanced functionality
- Conditional logic engine for dynamic field visibility
- JavaScript API integration for real-time calculations
**Rose UI Components (`/components/rs-*/`):**
- Custom design system components (buttons, modals, cards, etc.)
- Consistent styling and behavior across the application
### API Architecture (`/server/api/`)
**RESTful Structure:**
- `/api/forms/`: CRUD operations for forms with history tracking
- `/api/process/`: Process management, publishing, execution
- `/api/tasks/`: Task assignment and completion
- `/api/devtool/`: Development utilities (ORM, code editor, etc.)
**Special Endpoints:**
- Form field extraction: `/api/forms/[formId]/fields.get.js`
- Process analytics: `/api/process/dashboard/summary.get.js`
- Version management: `/api/forms/[id]/history.get.js`
### Configuration Files (`/docs/json/`)
**Critical System Configurations:**
- `formComponents.json`: Complete form structure for Malaysian Asnaf registration system
- `processDefinition.json`: BPMN process flow definitions with nodes and edges
- `processVariables.json`: 100+ process variables for data management
- `customScript.js`: Form conditional logic and field visibility rules
These JSON files define a production Malaysian welfare application system with complex business rules.
### Development Patterns
**Vue 3 Composition API Usage:**
- Use `ref()` for primitive reactive data
- Use `shallowRef()` for large objects (like Vue Flow nodes) to avoid deep reactivity
- Implement proper cleanup in `onUnmounted()` for timers and event listeners
- Use `watch()` for complex reactive logic, `computed()` for derived state
**State Management Patterns:**
- Store actions handle all business logic and API calls
- Components focus on presentation and user interaction
- Use store getters for computed values across components
- Implement optimistic updates with error rollback
**Form Builder Patterns:**
- FormKit schema generation from component configurations
- Conditional logic engine evaluates field visibility in real-time
- JavaScript API provides hooks for custom calculations and validations
- Custom script execution sandbox for security
**Process Builder Patterns:**
- Vue Flow integration for professional BPMN rendering
- Node configuration through specialized modal components
- Auto-save with debouncing to prevent data loss
- History tracking for undo/redo functionality
### Security Considerations
**Authentication:**
- JWT tokens with refresh mechanism
- Role-based access control (RBAC) through `user/role/userrole` models
- Route-level middleware protection
**Data Security:**
- XSS protection disabled for specific API routes (devtool, forms)
- Rate limiting: 200 requests per minute
- Input validation through FormKit and Prisma
- SQL injection protection through Prisma ORM
**Script Execution:**
- Form custom scripts run in 'safe' mode by default
- Script execution sandbox prevents direct DOM access
- Advanced mode available for power users with additional permissions
### Key Implementation Details
**Auto-save System:**
- Debounced saves every 2 seconds after changes
- Unsaved changes protection with navigation guards
- Visual indicators for save status
**Process Execution:**
- BPMN-compliant process engine
- Task assignment and routing based on process definition
- Variable management throughout process lifecycle
- Integration points for external APIs and services
**Form System:**
- Dynamic component rendering from JSON schema
- Real-time validation and conditional logic
- Preview mode for form testing
- Import/export functionality for form templates
**Performance Optimizations:**
- Lazy loading for heavy components (modals, editors)
- Virtual scrolling for large lists
- Optimized API calls with loading states
- Bundle splitting for reduced initial load times
### Development Tips
**Working with Large Files:**
- `pages/process-builder/index.vue` is ~40k tokens - consider code splitting
- Use component lazy loading for modal components
- Implement proper loading states for better UX
**Database Changes:**
- Always run `npx prisma generate` after schema changes
- Use migrations for production database updates
- Test with realistic data volumes
**Testing Process Flows:**
- Use the process management dashboard for testing
- Create test cases in `/execution/` interface
- Monitor variables through the Variable Manager
**Custom Scripts:**
- Test in 'safe' mode first before enabling 'advanced' mode
- Use the JavaScript API documentation for available functions
- Implement proper error handling for custom scripts
This codebase represents a sophisticated, production-ready BPM platform with comprehensive process design, form building, and execution capabilities.