Technical stack
This document describes the main technologies used in Balyze and the rationale behind their selection.
The focus is on long-term suitability and architectural coherence rather than environment-specific details.
Backend framework
Laravel is used as the primary backend framework.
Reasons for this choice:
- mature and stable ecosystem
- strong conventions that reduce accidental complexity
- first-class support for authentication, authorization, and testing
- good balance between productivity and explicit architecture
Laravel provides the structural foundation of the application without imposing premature constraints.
Authorization and roles
Role and permission management is handled through Spatie Laravel Permission.
This library is used to:
- manage roles and permissions explicitly
- avoid custom authorization implementations
- align with Laravel’s native authorization system
The library is treated as an infrastructure concern, not as a domain dependency.
Database
PostgreSQL is used as the primary relational database.
Reasons for this choice:
- strong data integrity guarantees
- excellent support for relational and structured data
- robust transactional behavior
- long-term scalability
PostgreSQL is well suited for domain-driven data models and historical consistency.
Caching and performance
A dedicated caching layer (e.g. Redis) is used where appropriate to support performance and scalability needs.
Caching remains an implementation concern and does not influence domain rules.
Testing
Automated tests are written using PHPUnit.
Testing focuses on:
- domain services
- lifecycle rules
- authorization boundaries
Tests are considered part of the domain safety net rather than an optional add-on.
Versioning considerations
Specific version numbers are intentionally omitted from this document.
Exact versions are defined and enforced through:
- dependency management files
- container configurations
- infrastructure tooling
This document describes what is used and why, not which patch version is currently deployed.