Owl is an advanced, modular invoicing and business management platform built on Sylius architecture and Symfony 6.4. The system provides a comprehensive solution for invoice generation, business document management, and financial operations with advanced role-based access control (RBAC), and modern user interface.
Owl is primarily an invoicing system that leverages Sylius's proven e-commerce architecture to deliver robust business functionality beyond traditional e-commerce needs.
- Multi-type Invoices - Sales invoices, proforma invoices, and correction invoices
- Advanced Tax System - VAT calculations with tax rate snapshots for compliance
- Multiple Payment Methods - Wire transfer, cash, card, credit, check, and custom methods
- Buyer & Seller Management - Complete customer and vendor data management
- Line Items & Calculations - Detailed invoice line items with automatic net/gross calculations
- Invoice Series & Numbering - Configurable invoice numbering with series management
- Multi-currency Support - Exchange rate snapshots for international transactions
- Payment Tracking - Invoice payment status management (pending, completed)
- AdminBundle - Administrative dashboard
- UserBundle - User management and authentication
- RbacBundle - Role-based access control system
- CategoryBundle - Category management
- FileBundle - File and media management
- CompanyBundle - Company information management
- ContractorBundle - Contractor/vendor management
- LocationBundle - Location and address management
- NotificationBundle - Notification system
- SettingBundle - Application configuration
- UiBundle - User interface components
- Backend: PHP 8.2+, Symfony 6.4, Doctrine ORM
- Architecture: Based on Sylius Framework architecture patterns
- Frontend: JavaScript (ES6+), Stimulus, Webpack Encore, Tom Select
- Database: MySQL 5.7/8.0
- Testing: PHPUnit, Playwright (E2E)
- Code Quality: PHPStan, ECS (Easy Coding Standard)
- Containerization: Docker, Docker Compose
- Sales Invoices (
sales
) - Standard billing documents
- VAT Calculations - Automatic tax calculations
- Tax Rate Snapshots - Historical tax rate preservation for compliance
- Net/Gross Calculations - Flexible calculation from net or gross amounts
- Multi-tax Support - Different tax rates per line item
- Multi-currency Support - Exchange rate snapshots for foreign transactions
- Invoice Numbering - Configurable series and sequential numbering
- Line Item Management - Detailed invoice positions with quantities and units
- Payment Tracking - Invoice payment status monitoring
- Buyer/Seller Profiles - Complete customer and vendor management
Owl utilizes an advanced Role-Based Access Control (RBAC) system using the yiisoft/rbac library. The system enables:
- Role and permission definitions
- Role hierarchies
- Business rules
- Dynamic permission assignments
- PHP 8.2 or higher
- Node.js 20+ or 22+
- MySQL 5.7+ or 8.0+
- Composer 2.4+
- Docker and Docker Compose (for development environment)
- Clone the repository
git clone [repository-url]
cd owl
- Configure environment variables
cp .env .env.local
# Edit .env.local as needed
- Start the application
docker-compose up -d
- Access the application
- Application: http://localhost:8080
- PHPMyAdmin: http://localhost:8088
- Mailhog: http://localhost:8025
# Install required dependencies
$ composer install
# Copy .env file and change the database connection settings
$ cp .env .env.local
# Create database
$ php bin/console doctrine:database:create
# Create database schema
$ php bin/console doctrine:schema:create
# Load fixtures
$ php bin/console sylius:fixtures:load
# Install packages
$ yarn install
# Build dev
$ yarn encore dev
# Create theme dir for admin
$ mkdir -p public/_themes/owl/admin
# Install assets
$ php bin/console sylius:theme:assets:install public/_themes/owl/admin
# Start server
$ symfony serve:start
Admin system:
l: owl@owl.com
p: test123
vendor/bin/phpunit
npm run test:e2e
npm run test:e2e:headed # With GUI
npm run test:e2e:debug # Debug mode
vendor/bin/phpstan analyse
vendor/bin/ecs check
vendor/bin/ecs check --fix # Auto-fix issues
npm run lint
owl/
βββ src/
β βββ Kernel.php
β βββ Owl/
β βββ Bundle/ # Application modules
β β βββ InvoiceBundle/ # Invoice management
β β βββ AdminBundle/ # Administration panel
β β βββ UserBundle/ # User management
β β βββ ... # Other business modules
β βββ Component/ # Business logic components
β β βββ Invoice/ # Invoice domain logic
β β βββ ... # Other domain components
β βββ Bridge/ # External library integrations
βββ config/ # Application configuration
βββ public/ # Public files
βββ templates/ # Twig templates
βββ themes/ # Application themes
βββ translations/ # Translations
βββ migrations/ # Database migrations
βββ tests/ # Tests
βββ e2e/ # E2E tests
βββ assets/ # Frontend assets
Owl is built on Sylius architecture principles, leveraging:
- Resource-based architecture - Each business entity is a resource
- State machine workflows - For invoice status management
- Grid system - For data listing and management
- Repository patterns - For data access
- Factory patterns - For object creation
- Event-driven architecture - For extensibility
- SyliusResourceBundle - Resource management
- SyliusGridBundle - Data grids
- SyliusThemeBundle - Theming system
- SyliusMailerBundle - Email management
- SyliusFixturesBundle - Data fixtures
- Build Docker images
docker build --target owl_php_prod -t owl:php-prod .
docker build --target owl_nginx -t owl:nginx .
- Production environment variables
cp .env.prod .env.local
# Configure production values
- Run database migrations
docker run --rm owl:php-prod bin/console doctrine:migrations:migrate --no-interaction
- dev - Development
- test - Testing
- prod - Production
- PSR-4 autoloading
- Symfony best practices
- Sylius coding standards
- PHPDoc documentation
PaweΕ KΔska
Email: projekty@pawelkeska.eu
Owl is completely free and released under the MIT License.
If you have any additional details or specific sections you'd like to include, please let me know!
If you find any bugs or issues, please report them through the Issue tracker system.
For additional help and support, please contact the project author.