This application allows to manage events, their booking forms and bookings via a web-based platform.
- Manage events and event series, locations, and organizations
- Events and series can have a parent event (series).
- Events, series, locations, organizations can be requested via a read-only API.
- Manage booking options and their booking forms (for events without a parent event)
- Users editing booking forms can see a preview for the booking forms if bookings are not enabled yet.
- Bookings
- Confirmation via email
- Guest bookings are supported, but can be forbidden by enabling the restriction to logged-in users in the settings of the booking option.
- Users with the corresponding access rights can view, export, edit, delete and restore bookings. They can also add a booking comment and set the payment status.
- Group participants for events with bookings
- Bookings are automatically grouped by their booking option.
- If a date of birth is submitted, the age of each participant and average age of each group is shown.
- Sub events have the bookings from parent event.
- Generate groups (randomized or age-based)
- Manage responsibilities (responsible users with their position) for events, event series and organizations
- Manage documents for events, event series, and organizations
- Manage materials and storage locations
- Login and logout, reset password, verify e-mail address, edit own account
- Manage users and flexible roles
- Notify users if an account was created for them (optional)
- Registration (if enabled via
.env)
- Manage personal access tokens (for Laravel Sanctum)
- Footer links for legal notice, privacy, terms and conditions configurable via
.env
To get started, you need to install the following software:
- Composer to manage PHP dependencies,
- PHP, and the PDO extension for the database of your choice,
- a relational database, such as MariaDB
- Alpine.js to extend Livewire with some additional JavaScript
- Bladestrap, Blade components for Bootstrap
- Bootstrap, a front-end toolkit
- Font Awesome for icons
- Laravel framework
- Laravel Dompdf for PDF export
- Laravel Livewire for dynamic UI without leading PHP
- Laravel Sluggable to autogenerate slugs
- Laravel Query Builder for custom filtering and sorting
- Laravel Zipstream to create and stream zip files
- PhpSpreadsheet for Excel exports
- https://github.com/rapi-doc/RapiDoc for Open API documentation
To setup/update your development environment:
- Run
composer installto setup autoloading and install the development dependencies for PHP. - Run
npm installto install CSS and JavaScript libraries. - Use
npm run devto start the development server if you modify the compiled or copied files. - Create/update the
.envconfiguration if necessary (see Configuration below). - Run
php artisan migrateto migrate the database to the latest version. - Run
composer stanto run static analysis with PHPStan. - Run
composer testto execute all PHPUnit tests.
For development, we use
- ESlint for the JavaScript code style check
- Laravel Debugbar for debugging utility
- Laravel Pint for the PHP code style check
- Laravel Translatable String Exporter
- PHPStan with Larastan and strict rules extension for static analysis
- PHPUnit for Unit tests
- Stylelint for the SASS code style check
- Vite for compiling and copying assets
Run composer cs to check compliance with the code style
and composer csfix to fix code style violations before every commit
(see composer.json and package.json for commands to run the code style check/fix for just one language).
- PHP code MUST follow the Pint configuration, including PSR-12 specification.
- Laravel code SHOULD follow the best practices from the list by Alexey Mezenin.
- JavaScript code MUST follow the default ESLint rules.
- CSS code MUST follow the standard stylelint rules.
Any texts in the code MUST be in English.
Use composer translate to extract them to lang/de.json.
- Update version in
CHANGELOG.mdandconfig/app.php. - Create a tag in Git and publish corresponding release notes in GitLab.
- Run
composer productionto remove development dependencies. - Run
npm run buildto build production files. - Upload files to the production system.
- Create/update the
.envconfiguration if necessary. - Run
php artisan migrateto migrate the database to the latest version. - Optimize performance with caching for config, events, routes, views by running
php artisan optimize.
APP_NAMEandAPP_OWNERdefine name and owner shown in header or footer.APP_DEFAULT_LOCALEdefines the locale to use for translations by default.APP_URL_LEGAL_NOTICE,APP_URL_PRIVACY_STATEMENT, andAPP_URL_TERMS_AND_CONDITIONScan be set to URLs for the respective pages which show up in the footer of the webpages and of the emails.REGISTRATION_ENABLED=trueenables registration which is disabled by default.