Skip to content

Architecture Documentation

Technical design documents, architecture decisions, and system design discussions.

Available Documents

System Architecture

  • Asynchronous Architecture - Async processing patterns
  • Sync vs Async comparison
  • PHP async libraries
  • Use cases in Method Grid

  • Instrumentation - Monitoring and logging

  • New Relic APM configuration
  • Log management
  • On-host integrations
  • Performance monitoring

Features and Functionality

  • Sign-in Functionality - Authentication flows
  • Username/password authentication
  • SSO authentication
  • Two-factor authentication
  • Session management

  • API Release - API deployment procedures

  • Deployment process
  • Post-deployment tasks

Planning and Refactoring

  • Backend Refactoring - Refactoring backlog
  • Technical debt items
  • Composer packages
  • PHP 8.4 migration plan
  • Settings configuration

  • Data Separation - Multi-tenancy planning

  • Implementation estimates
  • Infrastructure changes
  • Database separation strategy

Security and Configuration

Architecture Principles

Scalability

  • Horizontal scaling of webservers
  • Stateless application design
  • Shared storage via NFS
  • Cache layer (Redis)
  • Message queue (RabbitMQ)

Reliability

  • Multiple webservers behind load balancer
  • Automated backups
  • Service monitoring (New Relic)
  • Health checks

Security

  • Layered security approach
  • Principle of least privilege
  • Secure authentication
  • Regular security updates

Maintainability

  • Infrastructure as code (planned)
  • Comprehensive documentation
  • Standardized server configurations
  • Automated deployments

Technology Stack

Backend

  • Language: PHP 8.4
  • Framework: Slim 3.x
  • ORM: Laravel Eloquent
  • Message Queue: RabbitMQ 4.0.5

Databases

  • SQL: MariaDB
  • NoSQL: MongoDB
  • Cache: Redis

Services

  • Node.js: Websocket, Scheduler, Gantt PDF
  • Python: AI services
  • Supervisor: Process management

Infrastructure

  • OS: Ubuntu 24.04 LTS
  • Web Server: Apache 2
  • Reverse Proxy: Apache mod_proxy
  • Load Balancer: Digital Ocean Load Balancer

Design Patterns

Event-Driven Architecture

  • Event dispatch via Symfony EventDispatcher
  • Async processing via RabbitMQ
  • Consumers for background jobs

Message Queue Patterns

  • Activity Log: Low priority, async
  • Notifications: Low priority, async with delay
  • Cache Invalidation: Time-sensitive async
  • Gantt Scheduler: High priority, async

Caching Strategy

  • Session Cache: Redis
  • View Cache: MongoDB
  • Element Cache: MongoDB
  • Gantt Cache: MongoDB

Future Considerations

Planned Improvements

  • Containerization (Docker/Kubernetes)
  • Microservices architecture
  • GraphQL API
  • Improved async processing
  • Enhanced monitoring

Data Separation

Long-term goal to separate tenant data: - Separate databases per tenant/group - Centralized authentication service - Back-office management system - Improved isolation and security

PHP 8.4 Migration

  • Property hooks evaluation
  • New array functions adoption
  • Asymmetric visibility usage
  • Deprecated attribute implementation
Last modified by: Unknown