LfV Intranet is the internal platform of Luftfahrtvereinigung Greven e.V. for member-facing workflows and internal administration.
It covers recurring club processes such as refueling, oil logging, expense submissions, department coordination, chat onboarding, and administrative back-office tasks.
- Member login via Vereinsflieger
- Mobile-optimized forms for operational workflows
- Filament admin panel for internal processes
- Background jobs and queue-based integrations
- Laravel 12
- Livewire 4
- Filament 5
- Tailwind CSS 4
- MySQL
composer install
pnpm install
cp .env.example .env
php artisan key:generate
php artisan migrate
pnpm devVF_USERNAME,VF_PASSWORD,VF_APPKEY,VF_CID: Vereinsflieger credentialsFI_WORKHOURS_CATEGORY_ID: workhours category id used for FI workflows (default:8471)
- Start the backend:
php artisan serve - Start the frontend:
pnpm dev - Run tests:
php artisan test - Run code style fixes:
./vendor/bin/pint - Build production assets:
pnpm build
- The Umami script is only loaded in
productionfrom app.blade.php. - Static click tracking uses
data-umami-eventdirectly in Blade templates. - Dynamic tracking uses
window.trackUmamiEvent(name, data)from app.js. - Livewire dispatches browser events through
$this->dispatch('umami-track', ...).
header_logo_clickedadmin_link_clickedhome_event_banner_clickedhome_menu_clicked(target:refueling,oil_log,expenses,chat)sign_out_clickedhome_login_link_clickedpassword_reset_link_clickedlogin_startlogin_attemptlogin_successlogin_error(error_type:validation,credentials)refueling_startrefueling_gas_station_selectedrefueling_aircraft_selectedrefueling_submit_attemptrefueling_submit_successrefueling_submit_error(error_type:validation,save_failure)refueling_back_clickedrefueling_success_home_clickedoil_log_startoil_log_aircraft_selectedoil_log_submit_attemptoil_log_submit_successoil_log_submit_error(error_type:validation,save_failure)oil_log_success_home_clickedoil_log_back_clickedexpense_startexpense_submit_attemptexpense_submit_successexpense_submit_error(error_type:validation,save_failure)expense_success_back_clickeddepartment_startdepartment_selecteddepartment_submit_attemptdepartment_submit_successdepartment_submit_error(error_type:validation,save_failure)department_descriptions_clickedevent_page_viewedevent_slot_selectedevent_enrollment_attemptevent_enrollment_successevent_enrollment_delete_clickedevent_enrollment_delete_attemptevent_enrollment_delete_successchat_app_store_clickedchat_google_play_clickedchat_password_reset_requestedchat_back_clicked
app/: Laravel application code such as models, jobs, and servicesresources/: Blade views, CSS, JavaScript, and static assetsroutes/: HTTP route definitionsdatabase/: migrations, factories, and seederstests/: automated tests
- Do not commit secrets.
- Access to Vereinsflieger should go through
App\Services\VereinsfliegerClientto keep login and retry behavior consistent.
Contributions are welcome.
Please read CONTRIBUTING.md before opening your first pull request.
By submitting a contribution, you confirm that you have the necessary rights to your changes and that you provide them under AGPL-3.0-or-later.
Please do not report vulnerabilities in public issues.
See SECURITY.md for the reporting process.
This project is licensed under the GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later).
See LICENSE for the full license text.