schneespur/lang/en/help.php
Michael ee3dbba6cc Initial release v1.0.0
Schneespur — Open-source winter service documentation software (PWA + Admin).
GPS tracking via OwnTracks, weather data, photo evidence, and legally
compliant service records for winter maintenance operators.

License: AGPL-3.0-or-later
2026-05-17 13:33:51 +00:00

188 lines
20 KiB
PHP

<?php
return [
'page_title' => 'Help',
'page_description' => 'Find guides and explanations for all :app_name features here.',
'back_to_overview' => 'Back to overview',
// Topic titles & descriptions (hub page)
'topic_installation' => 'Installation',
'topic_installation_desc' => 'Install and set up :app_name on your web hosting.',
'topic_first_steps' => 'First Steps',
'topic_first_steps_desc' => 'Initial configuration after installation — set up company, drivers and customers.',
'topic_customers' => 'Customers',
'topic_customers_desc' => 'Create, edit and manage customers.',
'topic_drivers' => 'Drivers',
'topic_drivers_desc' => 'Create drivers, manage credentials and archive.',
'topic_owntracks' => 'OwnTracks & GPS',
'topic_owntracks_desc' => 'Set up and use GPS tracking with the OwnTracks app.',
'topic_jobs' => 'Jobs',
'topic_jobs_desc' => 'Document and track snow clearing and gritting jobs.',
'topic_overview' => 'Reports',
'topic_overview_desc' => 'Use daily, monthly and driver reports.',
'topic_exports' => 'Exports',
'topic_exports_desc' => 'Export job data as CSV or customer PDF.',
'topic_dsgvo' => 'GDPR',
'topic_dsgvo_desc' => 'Manage data protection briefing and retention periods.',
'topic_settings' => 'Settings',
'topic_settings_desc' => 'Configure company, branding, email and retention policies.',
'topic_updates' => 'Auto-Update',
'topic_updates_desc' => 'Automatic updates, version checks and update installation.',
'topic_modules' => 'Modules',
'topic_modules_desc' => 'Install, enable and manage extension modules.',
'content_placeholder' => 'This help page will be filled with content soon.',
// Tooltip texts for contextual help icons
'tooltip_jobs' => 'Help with jobs',
'tooltip_customers' => 'Help with customers',
'tooltip_drivers' => 'Help with drivers',
'tooltip_owntracks' => 'Help with OwnTracks & GPS',
'tooltip_overview' => 'Help with reports',
'tooltip_exports' => 'Help with exports',
'tooltip_dsgvo' => 'Help with GDPR',
'tooltip_settings' => 'Help with settings',
'tooltip_first_steps' => 'Help with first steps',
// Installation
'installation_requirements_title' => 'System Requirements',
'installation_requirements_text' => ':app_name requires PHP 8.2 or higher, a MySQL database, and a web server with mod_rewrite (Apache) or equivalent Nginx configuration. The software runs on standard shared web hosting (e.g. Strato, IONOS, All-Inkl.) — SSH or Docker are not required.',
'installation_upload_title' => 'Upload Files',
'installation_upload_text' => 'Upload all files to your hosting web directory via FTP. The "public" directory must be accessible as the document root. Most hosts point the domain root to a folder like "htdocs" or "public_html" — copy the contents of "public" there and adjust the paths in index.php accordingly.',
'installation_database_title' => 'Set Up Database',
'installation_database_text' => 'Create a new MySQL database and database user through your hosting control panel. Note the hostname, database name, username, and password — you will need these in the next step.',
'installation_env_title' => 'Configure .env File',
'installation_env_text' => 'Rename ".env.example" to ".env" and enter your database credentials (DB_HOST, DB_DATABASE, DB_USERNAME, DB_PASSWORD). Set APP_URL to the URL of your installation. Generate the app key via the browser installer or manually with "php artisan key:generate".',
'installation_finish_title' => 'Complete Installation',
'installation_finish_text' => 'Open your domain in the browser. The installer will guide you through the database migration and creation of the admin account. Afterwards, set up a cron job that runs "php artisan schedule:run" every minute — this is required for background processing (weather data, queue).',
// First Steps
'first_steps_company_title' => 'Enter Company Details',
'first_steps_company_text' => 'Navigate to Settings and enter your company name, address, and optionally a logo. This information appears on customer exports and PDF documents.',
'first_steps_drivers_title' => 'Create Drivers',
'first_steps_drivers_text' => 'Under Drivers, create at least one driver. Each driver receives their own credentials for the driver app and OwnTracks GPS tracking. The first driver can also be the business owner.',
'first_steps_customers_title' => 'Create Customers',
'first_steps_customers_text' => 'Under Customers, create the properties you service during winter. Enter name, address, and optionally GPS coordinates — the address is automatically geocoded if coordinates are missing.',
'first_steps_owntracks_title' => 'Set Up OwnTracks',
'first_steps_owntracks_text' => 'Install the OwnTracks app on the driver\'s smartphone and configure the connection to your :app_name installation. Use the QR code on the driver detail page for quick setup. See the "OwnTracks & GPS" help section for details.',
'first_steps_first_job_title' => 'Perform Your First Job',
'first_steps_first_job_text' => 'Start a shift in the driver app, drive to a customer, and complete the job. :app_name records the GPS track, automatically fetches weather data, and creates the job report. Check the result in the admin area under Jobs.',
// Customers
'customers_create_title' => 'Create Customer',
'customers_create_text' => 'Click "New Customer" and fill in the name and address. Each customer represents a service location (e.g. property, parking lot, commercial premises). The same client can have multiple customer entries if different locations are serviced.',
'customers_fields_title' => 'Fields and Meaning',
'customers_fields_text' => 'Name: Display name in lists and exports. Address: Street, zip code, city — used for geocoding and job reports. Contact person and phone: optional, for internal communication. Notes: free text field for special instructions (e.g. "keep left driveway clear").',
'customers_edit_title' => 'Edit Customer',
'customers_edit_text' => 'Click on a customer in the list to open the detail view. There you can modify all fields. Changes to the address trigger a new geocoding lookup.',
'customers_delete_title' => 'Delete Customer',
'customers_delete_text' => 'Customers can only be deleted if no associated jobs exist. Otherwise, archive the customer to preserve existing job reports. Deleted customers are permanently removed.',
'customers_geo_title' => 'Geocoding',
'customers_geo_text' => ':app_name automatically determines GPS coordinates from the entered address (geocoding). These coordinates are used for map display and matching with the driver\'s GPS track. If automatic resolution fails, you can enter coordinates manually.',
// Drivers
'drivers_create_title' => 'Create Driver',
'drivers_create_text' => 'Under Drivers → New Driver, enter name and email address. :app_name automatically creates credentials for the driver app and OwnTracks GPS tracking.',
'drivers_roles_title' => 'Roles',
'drivers_roles_text' => 'There are two roles: Admin and Driver. Admins have full access to all management functions. Drivers only see their own shift view and can start/end jobs. A business typically has one admin (the owner) and multiple drivers.',
'drivers_credentials_title' => 'Credentials',
'drivers_credentials_text' => 'Each driver receives separate credentials for the web app (email + password) and for OwnTracks (HTTP username + password). OwnTracks credentials can be viewed on the driver detail page and shared via QR code.',
'drivers_archive_title' => 'Archiving',
'drivers_archive_text' => 'Archived drivers can no longer log in but remain in the historical job data. Use archiving when a driver leaves the company but job reports must be retained.',
'drivers_anonymize_title' => 'Anonymization (GDPR)',
'drivers_anonymize_text' => 'Anonymization replaces personal data (name, email) with a placeholder while preserving linked job data. This is the GDPR-compliant alternative to deletion when job reports are still needed for legal reasons.',
// OwnTracks
'owntracks_intro_title' => 'What is OwnTracks?',
'owntracks_intro_text' => 'OwnTracks is a free open-source app for iOS and Android that sends GPS positions to your own server. :app_name uses OwnTracks in HTTP mode to record driver locations during a shift.',
'owntracks_install_title' => 'Install the App',
'owntracks_install_text' => 'Download OwnTracks from the App Store (iOS) or Play Store (Android). The app is free and ad-free.',
'owntracks_config_title' => 'Configure Connection',
'owntracks_config_text' => 'Set the mode to "HTTP". Enter the OwnTracks endpoint URL of your :app_name installation as the URL (e.g. https://your-domain.com/api/owntracks). Username and password can be found on the driver detail page in the admin area.',
'owntracks_qr_title' => 'Quick Setup via QR Code',
'owntracks_qr_text' => 'On the driver detail page you will find a QR code containing the complete OwnTracks configuration. Scan this QR code in the OwnTracks app — all settings are applied automatically.',
'owntracks_troubleshoot_title' => 'Troubleshooting',
'owntracks_troubleshoot_text' => 'If no GPS data is arriving: Check that the app has "Always" location permission. Make sure the URL is correct and the server is reachable (HTTPS). Verify username and password. If necessary, disable the phone\'s battery saver mode as it can suppress background GPS updates.',
// Jobs
'jobs_workflow_title' => 'Job Workflow',
'jobs_workflow_text' => 'A job follows this flow: Start shift → Drive to customer → Start job → Clear/grit → End job → Optionally drive to next customer → End shift. GPS tracking runs throughout the entire shift; weather data is automatically fetched when a job starts.',
'jobs_types_title' => 'Job Types',
'jobs_types_text' => ':app_name distinguishes between different job types: Clearing, Gritting, Clearing and Gritting, Inspection (no clearing/gritting). The job type is selected when starting a job and appears in the job report.',
'jobs_manual_title' => 'Manual Jobs',
'jobs_manual_text' => 'Jobs can also be manually entered in the admin area — for example, when GPS tracking failed or a job needs to be documented retroactively. Manual jobs are marked accordingly in the report.',
'jobs_photos_title' => 'Photos',
'jobs_photos_text' => 'During or after a job, photos can be uploaded via the driver app. Photos serve as additional evidence in the job report — e.g. condition of the walkway before/after clearing.',
'jobs_weather_title' => 'Weather Data',
'jobs_weather_text' => ':app_name automatically fetches weather data (temperature, precipitation, snow depth) from Open-Meteo when a job starts. This data is saved in the job report and documents the weather conditions at the time of the job.',
'jobs_gps_title' => 'GPS Track',
'jobs_gps_text' => 'The GPS track is recorded via the OwnTracks app and displayed on the map view. It shows the route driven and serves as proof that the driver was on site. Accuracy depends on the smartphone\'s GPS settings.',
// Overview / Reports
'overview_daily_title' => 'Daily Overview',
'overview_daily_text' => 'The daily overview shows all jobs for a day on a map and in a table. Filter by driver or customer to highlight specific jobs.',
'overview_monthly_title' => 'Monthly Report',
'overview_monthly_text' => 'The monthly report summarizes all jobs for a month — grouped by customer. You can see the number of jobs, total job time, and job types per customer.',
'overview_driver_title' => 'Driver Report',
'overview_driver_text' => 'The driver report shows performance per driver: number of jobs, total time, customers serviced. Use this view for time tracking and performance documentation.',
'overview_time_title' => 'Time Tracking',
'overview_time_text' => ':app_name automatically tracks working time based on shift start and end times. Times are broken down per driver and day and can be exported as CSV.',
// Exports
'exports_csv_title' => 'CSV Export',
'exports_csv_text' => 'Export job data as a CSV file for further processing in Excel or other programs. Select the time period and optionally a customer or driver as filter. The CSV file contains all job details including times, job type, weather data, and driver information.',
'exports_pdf_title' => 'Customer PDF Export',
'exports_pdf_text' => 'The customer PDF export creates a formatted job report per customer for a selectable time period. The PDF contains company header, customer data, all jobs with date, time, job type, and weather conditions — ideal for sending to the client.',
'exports_filter_title' => 'Filters and Time Period',
'exports_filter_text' => 'All exports allow you to set the time period (from/to), customer, and driver as filters. The default is the current month. For annual billing, select the entire season as the time period.',
// DSGVO / GDPR
'dsgvo_briefing_title' => 'Data Protection Briefing',
'dsgvo_briefing_text' => ':app_name processes personal data (driver GPS positions, customer addresses, photos). As the operator, you are responsible for GDPR-compliant processing. Inform your drivers about GPS recording and obtain their consent.',
'dsgvo_confirmations_title' => 'Confirmations',
'dsgvo_confirmations_text' => ':app_name offers the ability to digitally capture GDPR confirmations from drivers. Drivers confirm the data protection briefing upon first login. The confirmation status is visible in the driver overview.',
'dsgvo_anonymize_title' => 'Anonymization',
'dsgvo_anonymize_text' => 'The anonymization function replaces personal data with placeholders without deleting linked job data. Use this function when a driver requests deletion of their data but job reports must be retained for legal reasons.',
'dsgvo_retention_title' => 'Retention Periods',
'dsgvo_retention_text' => 'Under Settings you can define retention periods. After the period expires, job data is automatically flagged for deletion. The recommended retention period for job reports is 3 years (statute of limitations for duty of care claims).',
'dsgvo_deletion_title' => 'Data Deletion',
'dsgvo_deletion_text' => 'Via the GDPR management you can delete individual records or entire time periods. Deletion is irreversible. Ensure there are no ongoing legal disputes before deleting job reports.',
// Settings
'settings_branding_title' => 'Branding',
'settings_branding_text' => 'Enter your company name and upload a logo. This information appears in the admin area header and on PDF exports.',
'settings_email_title' => 'Email / SMTP',
'settings_email_text' => 'Configure SMTP settings for email delivery (e.g. password reset, notifications). Enter SMTP host, port, username, and password. Test the delivery using the test function.',
'settings_address_title' => 'Business Address',
'settings_address_text' => 'The business address is used in the company header of PDF exports and customer documentation.',
'settings_retention_title' => 'Retention Periods',
'settings_retention_text' => 'Define after how many months job data is automatically suggested for deletion. The default is 36 months (3 years). Changes only affect future deletion suggestions.',
'settings_season_title' => 'Season Period',
'settings_season_text' => 'Define the winter service season period (e.g. October to April). This period is used for seasonal reports and as the default filter for exports.',
// Modules help topic
'modules_what_title' => 'What are modules?',
'modules_what_text' => 'Modules extend :app_name with additional features without modifying the core software. Each module can provide its own navigation entries, dashboard widgets, settings pages, and event listeners. Modules are placed in the "modules/" folder on the server and automatically discovered by the system.',
'modules_install_title' => 'Installing and removing modules',
'modules_install_text' => 'Navigate to Modules in the admin area. There you will see all available and installed modules. Click "Install" to download and set up a module from the catalog. Installed modules can be completely uninstalled via the "Remove" button — this deletes all module files and data.',
'modules_enable_title' => 'Enabling and disabling modules',
'modules_enable_text' => 'Installed modules can be enabled or disabled at any time. A disabled module remains installed but is not loaded — its navigation entries, widgets, and routes are not visible. Enable a module again to reactivate it.',
'modules_artisan_title' => 'Artisan commands',
'modules_artisan_text' => 'Advanced users can use Artisan commands: "php artisan schneespur:modules-sync" synchronizes modules from the catalog server. "php artisan schneespur:modules-list" shows all installed modules with their status. "php artisan schneespur:modules-remove {slug}" completely removes a module.',
'modules_example_title' => 'Example module',
'modules_example_text' => ':app_name includes an example module (modules/example/) that demonstrates all available extension points: navigation entry, dashboard widget, event listener, and settings page. This module serves as a reference for developing your own modules.',
'modules_troubleshoot_title' => 'Troubleshooting',
'modules_troubleshoot_text' => 'If a module does not start: Check the logs (storage/logs/laravel.log) for errors during module boot. Modules that crash on startup are automatically disabled to prevent disruption of the application. Make sure file permissions are correct and the module.json file is valid.',
// Updates help topic
'updates_how_title' => 'How do updates work?',
'updates_how_text' => ':app_name regularly checks the update server for new versions. Each update is cryptographically signed (Ed25519) by the server and verified for authenticity and integrity before installation. Tampered or corrupted updates are automatically rejected.',
'updates_auto_title' => 'Automatic check',
'updates_auto_text' => 'When enabled, :app_name checks daily at 04:17 for new versions. The result is displayed on the dashboard. Installation is always manual — updates are never applied automatically.',
'updates_backup_title' => 'Backup before updating',
'updates_backup_text' => 'Create a backup of your database (via phpMyAdmin SQL export) and your files (via FTP download) before each update. If an error occurs during the update, you can restore the original state.',
'updates_install_title' => 'Installing an update',
'updates_install_text' => 'Click "Check Now" to run a version check. If an update is available, the changelog and an install button will be shown. Confirm the backup and click "Install Update". During installation, the application is briefly put into maintenance mode.',
'updates_security_title' => 'Security',
'updates_security_text' => 'Each update is verified in multiple steps before installation: The trust list is checked against the built-in root key, the manifest is verified with the signing key from the trust list, and the downloaded ZIP is checked via SHA-256 checksum against the signed manifest. Additionally, rollback protection is ensured through a monotonically increasing counter.',
];