Skip to main content

Modules

Backend modules architecture and implementation details

Overview

Workspaces is built using a modular architecture where each module encapsulates specific functionality. This design promotes separation of concerns, code reusability, and maintainability.

Module Structure

Each module follows a standard structure:

  • Resolvers: GraphQL resolvers for API endpoints
  • Services: Business logic and data processing
  • Types: TypeScript type definitions
  • Schema: GraphQL schema definitions
  • Config: Module-specific configuration
  • Utils: Utility functions and helpers
  • Workers: Background jobs and task processors
  • Tests: Unit and integration tests

Available Modules

Workspaces includes the following modules:

  • accessibility: Accessibility features and compliance
  • accounting: Accounting and financial management
  • activity: Activity tracking and audit logs
  • agents: AI agents and automation
  • analytics: Analytics and metrics tracking
  • calendar: Calendar and scheduling
  • config: Configuration management
  • content: Content management and publishing
  • conversations: Real-time messaging and conversations
  • esign: Electronic signature and document signing
  • export: Data export and reporting
  • files: File upload, storage, and management
  • forms: Dynamic form builder and management
  • graph: Graph database and relationships
  • grc: Governance, risk, and compliance
  • groups: Group and team management
  • inventory: Inventory tracking and management
  • kiosk: Kiosk mode and public access
  • main: Main application module and entry point
  • metadata: Metadata management and tagging
  • packaging: Package and shipment management
  • project: Project management and tracking
  • rbac: Role-based access control
  • resource: Resource management and allocation
  • rule-engine: Business rules and decision engine
  • scheduler: Job scheduling and cron management
  • security: Security features and threat detection
  • tags: Tagging and categorization system
  • transit: Transit and logistics management
  • workflow: Workflow automation and orchestration
  • workspace: Workspace management and collaboration

Module Development

Creating a New Module

  1. Create a new directory in src/modules/[module-name]
  2. Implement the standard module structure
  3. Export module resolvers and types
  4. Register the module in the main application
  5. Add tests and documentation

Module Best Practices

  • Keep modules focused on a single responsibility
  • Use dependency injection for better testability
  • Implement proper error handling and validation
  • Document public APIs and interfaces
  • Write comprehensive tests