Ein modernes Schichtplanungs- und Arbeitszeiterfassungssystem, entwickelt mit Laravel 11 und Vue 3.
Schichtplan ist eine webbasierte Anwendung zur Verwaltung von Arbeitsschichten und Mitarbeitereinsätzen. Das System ermöglicht es Administratoren und Teamleitern, Schichten zu planen und Mitarbeitern, sich für verfügbare Schichten einzutragen.
- Schichtverwaltung – Erstellen, bearbeiten und löschen von Schichten mit Datum, Uhrzeit und benötigter Mitarbeiteranzahl
- Jobgruppen – Organisation von Mitarbeitern in verschiedene Arbeitsgruppen (z.B. Gastro, Büro)
- Schichtanmeldung – Mitarbeiter können sich selbstständig für Schichten eintragen oder absagen
- Arbeitszeiterfassung – Automatische Berechnung von Arbeitszeiten, Pausen und Überstunden
- Minijob-Verwaltung – Spezielle Kontingent-Verwaltung für Minijobber
- API-Zugang – RESTful API für mobile Apps und externe Integrationen
| Bereich | Technologie |
|---|---|
| Backend | Laravel 11, PHP 8.2+ |
| Frontend | Vue 3, Inertia.js |
| Styling | Tailwind CSS 3.0 |
| Authentifizierung | Laravel Sanctum |
| Datenbank | MySQL |
| PDF-Generierung | Laravel DomPDF |
| Benachrichtigungen | Telegram |
- PHP 8.2 oder höher
- Composer
- Node.js & NPM
- MySQL
-
Repository klonen
git clone https://github.com/zigman79//schichtplan.git cd schichtplan -
PHP-Abhängigkeiten installieren
composer install
-
NPM-Abhängigkeiten installieren
npm install
-
Umgebungsvariablen konfigurieren
cp .env.example .env php artisan key:generate
-
Datenbank einrichten
Erstelle eine MySQL-Datenbank und passe die
.envDatei an:DB_DATABASE=schichtplan DB_USERNAME=your_username DB_PASSWORD=your_password
-
Migrationen ausführen
php artisan migrate
-
Frontend kompilieren
npm run dev
-
Server starten
php artisan serve
Die Anwendung ist nun unter http://localhost:8000 erreichbar.
schichtplan/
├── app/
│ ├── Http/Controllers/ # Web- und API-Controller
│ ├── Models/ # Eloquent Models
│ └── Mail/ # E-Mail-Klassen
├── database/
│ ├── migrations/ # Datenbankmigrationen
│ └── seeders/ # Datenbank-Seeder
├── resources/
│ └── js/
│ ├── Pages/ # Vue-Seiten
│ ├── Components/ # Wiederverwendbare Komponenten
│ └── Layouts/ # Layout-Komponenten
├── routes/
│ ├── web.php # Web-Routen
│ └── api.php # API-Routen
└── config/
└── tenant.php # Mandanten-Konfiguration
Die API nutzt Laravel Sanctum für die Authentifizierung. Alle Endpunkte erfordern einen gültigen API-Token.
| Methode | Endpunkt | Beschreibung |
|---|---|---|
| GET | /api/shifts |
Verfügbare Schichten abrufen |
| GET | /api/shifts/{id} |
Schichtdetails abrufen |
| POST | /api/shifts/{id}/enroll |
Für Schicht anmelden |
| DELETE | /api/shifts/{id}/unenroll |
Schichtanmeldung zurückziehen |
| POST | /api/shifts/{id}/decline |
Schicht absagen |
curl -X POST "https://your-domain.com/api/shifts/1/enroll" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"comment": "Bin verfügbar!"}'| Rolle | Berechtigungen |
|---|---|
| Admin | Vollzugriff auf alle Funktionen |
| Teamleiter | Verwaltung von Schichten und Jobgruppen |
| Mitarbeiter | Anmeldung für Schichten, eigene Arbeitszeiten einsehen |
| Minijobber | Wie Mitarbeiter, mit Kontingent-Beschränkungen |
In config/tenant.php können folgende Features aktiviert werden:
return [
'name' => env('TENANT_NAME', 'default'),
'features' => [
'minijob' => env('TENANT_FEATURE_MINIJOB', false),
'tournaments' => env('TENANT_FEATURE_TOURNAMENTS', false),
'group_notifications' => env('TENANT_FEATURE_GROUP_NOTIFICATIONS', false),
],
];# Entwicklung mit Hot-Reload
npm run dev
# Produktion
npm run build# PHP Code-Style prüfen und korrigieren
./vendor/bin/pintphp artisan testDieses Projekt steht unter der GNU General Public License v3.0.
Entwickelt mit Laravel und Vue.js