- 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.
7.9 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Common Development Commands
Development Server
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
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
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 trackingformBuilder.js
: Form components, validation, custom scripts, preview datavariableStore.js
: Global process variables and data flow managementuser.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 templatesform
: Dynamic form configurations with custom scripts and validationcaseInstance
: Process execution instances with status trackingtask
: User tasks within process casesuser/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
andformHistory
- Case timeline tracking for process execution monitoring
Component Architecture
Process Flow Components (/components/process-flow/
):
ProcessFlowCanvas.vue
: Main BPMN editor using Vue FlowProcessBuilderComponents.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 systemprocessDefinition.json
: BPMN process flow definitions with nodes and edgesprocessVariables.json
: 100+ process variables for data managementcustomScript.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.