diff --git a/Makefile b/Makefile index d8c7583..e57b3a2 100644 --- a/Makefile +++ b/Makefile @@ -1,22 +1,21 @@ SHELL := /bin/bash -.PHONY: up stop logs pint phpstan test - up: - docker compose up -d - docker compose exec app composer install || true +docker compose up -d +docker compose exec app composer install || true stop: - docker compose down +docker compose down logs: - docker compose logs -f app +docker compose logs -f app pint: - docker compose exec app ./vendor/bin/pint || true +docker compose exec app ./vendor/bin/pint || true phpstan: - docker compose exec app ./vendor/bin/phpstan analyse || true +docker compose exec app ./vendor/bin/phpstan analyse || true test: - docker compose exec app ./vendor/bin/pest || true \ No newline at end of file +docker compose exec app ./vendor/bin/pest || true + diff --git a/README.md b/README.md index 2d03994..999dde9 100644 --- a/README.md +++ b/README.md @@ -33,3 +33,34 @@ Monolitten for ModusBuilds MVP er bygget på Laravel 11 med Vue/Inertia frontend ## Dokumentation - [RFC-001: ModusBuild – MVP teknisk specifikation (Draft)](docs/rfcs/RFC-001-modusbuild-mvp.md) + +## Håndtering af GitHub-konflikter + +Hvis GitHub viser en besked om konflikter, når du forsøger at merge en pull request, kan du løse dem lokalt med følgende fremgangsmåde: + +1. Sørg for, at din lokale `main` (eller den branch, du vil merge ind i) er opdateret: + ```bash + git checkout main + git fetch origin + git pull origin main + ``` +2. Skift tilbage til din feature-branch (f.eks. `work`) og merge de seneste ændringer fra `main` ind: + ```bash + git checkout work + git merge origin/main + ``` + Git markerer nu de filer, der er i konflikt (fx `Makefile`, `composer.json`, `routes/web.php`). +3. Åbn hver konfliktfil i din editor og fjern konfliktmarkeringerne (`<<<<<<<`, `=======`, `>>>>>>>`) ved at vælge, kombinere eller omskrive indholdet, så det afspejler den ønskede endelige version. +4. Når alle konflikter er løst, stage filerne og fuldfør mergingen: + ```bash + git add Makefile bootstrap/cache/.gitignore composer.json config/database.php routes/web.php storage/.gitignore + git commit + ``` + Hvis merge-committen allerede blev oprettet automatisk, kan du nøjes med `git commit` for at afslutte den. +5. Afslut ved at pushe den opdaterede branch til GitHub: + ```bash + git push origin work + ``` +6. Gå tilbage til pull requesten på GitHub og verificér, at konflikten er væk. Herefter kan du fortsætte med review og merge. + +> Tip: Hvis du foretrækker rebase-fremgangsmåden, kan du erstatte trin 2 med `git rebase origin/main` og afslutte eventuelle konflikter trin for trin. Husk at pushe med `--force-with-lease`, hvis du rebaser. diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore old mode 100755 new mode 100644 diff --git a/composer.json b/composer.json index deedcc5..ef1b1c3 100644 --- a/composer.json +++ b/composer.json @@ -11,12 +11,12 @@ "laravel/pennant": "^1.2" }, "require-dev": { - "larastan/larastan": "^3.1", "laravel/pint": "^1.14", - "nunomaduro/collision": "^8.8", "pestphp/pest": "^3.0", "pestphp/pest-plugin-laravel": "^3.0", - "phpstan/phpstan": "^2.1" + "nunomaduro/collision": "^7.0", + "nunomaduro/larastan": "^2.9", + "phpstan/phpstan": "^1.10" }, "autoload": { "psr-4": { @@ -49,10 +49,7 @@ "config": { "optimize-autoloader": true, "preferred-install": "dist", - "sort-packages": true, - "allow-plugins": { - "pestphp/pest-plugin": true - } + "sort-packages": true }, "minimum-stability": "stable", "prefer-stable": true diff --git a/resources/views/dashboard.blade.php b/resources/views/dashboard.blade.php new file mode 100644 index 0000000..1b829df --- /dev/null +++ b/resources/views/dashboard.blade.php @@ -0,0 +1,275 @@ + + + + + + ModusBuild · Project cockpit (prototype) + @vite(['resources/js/app.ts']) + + + @php + $projects = [ + ['code' => 'PRJ-2025-001', 'name' => 'Rækkehuse – Fase A4', 'status' => 'Active', 'phase' => 'A4 · Forprojektering', 'progress' => 62], + ['code' => 'PRJ-2025-002', 'name' => 'Nyt domicil – Design review', 'status' => 'Gate review', 'phase' => 'A5 · Myndighed', 'progress' => 38], + ['code' => 'PRJ-2024-019', 'name' => 'Renovering – Udbud', 'status' => 'On track', 'phase' => 'B1 · Udbud', 'progress' => 81], + ]; + + $gateChecklist = [ + ['title' => 'Dokumenter godkendt', 'value' => '12 / 12', 'state' => 'done'], + ['title' => 'Ekstern godkendelse', 'value' => 'Ventende', 'state' => 'pending'], + ['title' => 'Workflow trin åbne', 'value' => '1 aktivitet', 'state' => 'warning'], + ]; + + $documents = [ + ['code' => 'A-010', 'title' => 'Facader', 'discipline' => 'A', 'status' => 'For review', 'updated' => '3 timer siden'], + ['code' => 'S-021', 'title' => 'Statik – dæk', 'discipline' => 'S', 'status' => 'Approved', 'updated' => 'I går 14:12'], + ['code' => 'V-004', 'title' => 'VVS oversigt', 'discipline' => 'V', 'status' => 'Changes requested', 'updated' => 'I går 09:31'], + ['code' => 'E-112', 'title' => 'El schema – plan 2', 'discipline' => 'E', 'status' => 'Draft', 'updated' => '4 dage siden'], + ]; + + $activityFeed = [ + ['time' => '10:24', 'actor' => 'Julie Madsen', 'action' => 'godkendte version 1.1 af “Statik – dæk”', 'type' => 'success'], + ['time' => '09:10', 'actor' => 'Ekstern reviewer', 'action' => 'anmodede om ændringer i “VVS oversigt”', 'type' => 'warning'], + ['time' => 'I går', 'actor' => 'System', 'action' => 'sendte transmittal TR-045 til Bygherre', 'type' => 'info'], + ['time' => 'I går', 'actor' => 'Martin Feldt', 'action' => 'startede gate review for Fase A5', 'type' => 'default'], + ]; + @endphp + +
+
+
+
+
+

ModusBuild prototype

+

Projektcockpit

+

Visualiseret ud fra RFC-001: gate readiness, dokumentstatus og seneste aktiviteter.

+
+
+ + + Sandbox environment + +
+ + Sofie Holm + Lead Engineer + + SH +
+
+
+
+
+ +
+ + +
+
+ @foreach ($projects as $project) +
+
+
+

{{ $project['code'] }}

+

{{ $project['name'] }}

+

{{ $project['phase'] }}

+
+ {{ $project['status'] }} +
+
+
+ Fremdrift + {{ $project['progress'] }}% +
+
+ +
+
+
+ @endforeach +
+ +
+
+
+
+

Gate readiness

+ Fase A5 +
+

Status baseret på GateService::validate – kriterier fra RFC-001 §8.2.

+
    + @foreach ($gateChecklist as $item) +
  • +
    +

    {{ $item['title'] }}

    +

    {{ $item['state'] === 'pending' ? 'Afventer ekstern handling' : 'Opdateret for 2 minutter siden' }}

    +
    + {{ $item['value'] }} +
  • + @endforeach +
+ +
+ +
+
+

Dokumenter i fokus

+ Se alle +
+
+ + + + + + + + + + + + @foreach ($documents as $doc) + + + + + + + + @endforeach + +
KodeTitelDisciplinStatusOpdateret
{{ $doc['code'] }}{{ $doc['title'] }} + {{ $doc['discipline'] }} + + @php + $statusColours = [ + 'Approved' => 'bg-emerald-100 text-emerald-700', + 'For review' => 'bg-amber-100 text-amber-700', + 'Draft' => 'bg-slate-100 text-slate-600', + 'Changes requested' => 'bg-rose-100 text-rose-700', + ]; + @endphp + {{ $doc['status'] }} + {{ $doc['updated'] }}
+
+
+
+ +
+
+

Aktiviteter

+

Audit- og eventfeed inspireret af RFC-001 §5 og §24.

+
    + @foreach ($activityFeed as $event) +
  1. + +
    +

    {{ $event['actor'] }} {{ $event['action'] }}

    +

    {{ $event['time'] }}

    +
    +
  2. + @endforeach +
+
+ +
+

Næste skridt

+

Plan for prototype → produkt:

+
    +
  • + + Tilføj live-data via Inertia + API v1 endpoints. +
  • +
  • + + Udvid dokumentlisten med filtrering og søgning. +
  • +
  • + + Integrér gate beslutninger og transmittal events. +
  • +
+ +
+
+
+
+
+
+ + diff --git a/routes/web.php b/routes/web.php index 0626734..2ce44b9 100644 --- a/routes/web.php +++ b/routes/web.php @@ -2,4 +2,4 @@ use Illuminate\Support\Facades\Route; -Route::view('/', 'welcome'); +Route::view('/', 'dashboard'); diff --git a/storage/.gitignore b/storage/.gitignore old mode 100755 new mode 100644