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).
- 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
- Add, update, delete documents for events, event series, and organizations
- 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 Query Builder for custom filtering and sorting
- PhpSpreadsheet for Excel exports
- Laravel Sluggable to autogenerate slugs
To setup/update your development environment:
- Run
composer install
to setup autoloading and install the development dependencies for PHP. - Create/update the
.env
configuration if necessary (see Configuration below). - Run
php artisan migrate
to migrate the database to the latest version.
For development, we use
- ESlint for the JavaScript code style check
- Laravel Debugbar for debugging utility
- Laravel Mix for compiling assets
- Laravel Pint for the PHP code style check.
- Laravel Translatable String Exporter
- Stylelint for the SASS code style check
Run composer cs
to check compliance with the code style
and composer csfix
to fix code style violations before every commit
(see composer.jsonand
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
.
- Run
composer production
to remove development dependencies. - Create/update the
.env
configuration if necessary. - Run
php artisan migrate
to migrate the database to the latest version. - Upload files to the production system.
APP_NAME
andAPP_OWNER
define name and owner shown in header or footer.APP_DEFAULT_LOCALE
defines the locale to use for translations by default.APP_URL_LEGAL_NOTICE
,APP_URL_PRIVACY_STATEMENT
, andAPP_URL_TERMS_AND_CONDITIONS
can be set to URLs for the respective pages which show up in the footer of the webpages and of the emails.REGISTRATION_ENABLED=true
enables registration which is disabled by default.