- PHP 98.3%
- Shell 0.7%
- Blade 0.5%
- Dockerfile 0.3%
- JavaScript 0.1%
| .forgejo/workflows | ||
| app | ||
| bin | ||
| bootstrap | ||
| config | ||
| database | ||
| docker | ||
| lang/vendor/backup | ||
| public | ||
| resources | ||
| routes | ||
| storage | ||
| tests | ||
| .editorconfig | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| .npmrc | ||
| artisan | ||
| CHANGELOG.md | ||
| composer.json | ||
| composer.lock | ||
| docker-compose.build.yml | ||
| docker-compose.quickstart.yml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| package.json | ||
| phpunit.xml | ||
| README.md | ||
| vite.config.js | ||
natec-skeleton
Lauffaehiges, leeres App-Fundament fuer neue natec-Anwendungen (Laravel 13 / Filament v5). Es bootet, Login und Konfiguration funktionieren, CI ist gruen und das Docker-Image baut — aber es enthaelt keine Fachdomaene. Neue Apps werden daraus geklont und mit einem Skript initialisiert, statt eine bestehende App zu kopieren (das vermeidet Altlasten).
Was enthalten ist
- Verwaltungs-Panel (
/admin, Filament v5) mit generischer Navigation. - Konfiguration-Cluster: Branding, Allgemein, Mail, SMS, Backup, Mail-Protokoll, Audit-Log.
- Wiederverwendbare Bausteine:
App\Support\Branding(Dual-Logo hell/dunkel) undApp\Support\Settings(In-App-Einstellungen mit ENV-Fallback, DB-sicher). - Modelle:
Setting,User(mitcanAccessPanel-Geruest),MailLog,SmsLog. - Dienste:
SmsService(TextBee-Gateway). - Befehle:
skeleton:version,skeleton:ensure-admin,skeleton:ensure-rbac(minimaler, generischer Rollensatz),skeleton:reset-admin-password. - Infrastruktur: Migrationen (Users/Cache/Jobs, Settings, Rollen/Rechte, Mail-/SMS-Logs,
Activity-Log), Dockerfile, Compose, Entrypoint (mit
ensure-rbac+ensure-admin),.forgejo-CI (Tests + Image-Build/-Push),phpunit.xmlmit festem Test-APP_KEY. - Infra-Smoke-Tests: Panel-Zugriff, RBAC-Befehl, Panel-Boot.
Neue App anlegen
# 1) Neues, leeres Repo anlegen und dieses Skeleton hineinklonen/-spiegeln.
# 2) Platzhalter umbenennen (SKELETON/Skeleton/skeleton -> Appname):
bin/init-app.sh meineapp
# 3) Abhaengigkeiten + lokale Umgebung:
composer install
cp .env.example .env && php artisan key:generate
php artisan migrate --seed && php artisan meineapp:ensure-admin
# 4) Pruefen und Skript entfernen:
vendor/bin/phpunit
git rm bin/init-app.sh
Danach die eigene Fachdomaene bauen (Modelle, Migrationen, Filament-Resources,
Navigationsgruppen im AdminPanelProvider, fachliche Rechte/Rollen in EnsureRbac).
Stack
Laravel 13, Filament v5, PostgreSQL 16, FrankenPHP — identische Release-/CI-/Deploy-
Konventionen wie die uebrigen natec-Apps (image-only via Portainer, Tag ueber *_TAG).
Konfiguration
Schalter und Stammwerte (Branding, Mail, SMS, Backup) liegen in der In-App-Konfiguration; ENV ist nur Fallback. Beim Anlegen eigener Schalter dieses Prinzip beibehalten.
Deployment
Wie gewohnt: docker-compose.yml zieht das vom CI gebaute Image. Pflicht-Stack-Variable
DB_PASSWORD; APP_KEY darf leer bleiben (Entrypoint erzeugt und persistiert ihn).
Beim ersten Repo einmalig das CI-Secret REGISTRY_TOKEN setzen, sonst laeuft der Image-Build nicht.