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
- Security Restrictions - Access policies
- Geographic restrictions
-
Unsafe countries list
-
Server Configuration - Standard configurations
- Mount points
- User permissions
- Common configurations
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