Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
e443ba8
Ho definito la struttura generale del progetto e configurato il file …
subnetMusk May 11, 2026
4a8cc4f
allineata la UI di base a quella del mockup
subnetMusk May 11, 2026
7abb16f
fix aws e metriche
angelica-gastal May 11, 2026
61a8b00
Merge origin/develop — risolto conflitto dashboard blade
angelica-gastal May 11, 2026
d687501
Allinea la PoC pubblica ai flussi principali e aggiorna la documentaz…
subnetMusk May 12, 2026
0568aee
fix: ho lasciato solo l'accesso ad AWS tramite credenziali IAM toglie…
subnetMusk May 12, 2026
4821497
small fixes
subnetMusk May 12, 2026
1f64159
fix problemi con split di documenti
angelica-gastal May 12, 2026
7739035
ho ripristinato il modello di filament
subnetMusk May 12, 2026
8946e27
Merge branch 'origin/develop' into fix/restore_filament
subnetMusk May 12, 2026
5f3531b
sistemato criticità e confidenza
angelica-gastal May 12, 2026
2453364
Resolve merge conflict in DocumentProcessingService.php
subnetMusk May 12, 2026
d231fb8
rifinito il pannello /admin (serve essenzialmente per modificare i pa…
subnetMusk May 13, 2026
5941f76
feat: restyling enterprise README, potenziamento pipeline AI (splitti…
subnetMusk May 13, 2026
da7a374
rimigrato verso blade
subnetMusk May 13, 2026
b8d3492
refactor: completamento architettura AI, ottimizzazione job e rimozio…
subnetMusk May 13, 2026
1c49911
minor fixes: Refine PoC docs and stabilize runtime configuration
subnetMusk May 13, 2026
f9e04b6
sistemato split, eliminato codice duplicato o morto
angelica-gastal May 13, 2026
7b21ee1
fix: harden document processing and add quality checks
subnetMusk May 14, 2026
628918f
fix: align workflows with PHP 8.4
subnetMusk May 14, 2026
7de8486
fix: stabilize accessibility workflow
subnetMusk May 14, 2026
3cb4e43
fix(ci): fix pa11y sandbox, sse leak in tests, and improve pest workflow
subnetMusk May 14, 2026
409fc00
ci: enforce mock drivers and .env in pest workflow
subnetMusk May 14, 2026
c8861d5
build(docker): ottimizzazione stack out-the-box e isolamento vendor/s…
subnetMusk May 14, 2026
fee385a
predisposti i badges nel readme per main
subnetMusk May 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
.git
.github
.idea
.vscode

vendor
node_modules

.env
.env.*
!.env.example

storage/app/*
storage/framework/cache/*
storage/framework/sessions/*
storage/framework/views/*
storage/logs/*

ai-worker/.venv
ai-worker/__pycache__
ai-worker/app/__pycache__
110 changes: 62 additions & 48 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,67 +1,81 @@
APP_NAME=Laravel
# --- APPLICATION ---
APP_NAME=NEXUM
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost

APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US

APP_MAINTENANCE_DRIVER=file
# APP_MAINTENANCE_STORE=database

# PHP_CLI_SERVER_WORKERS=4

BCRYPT_ROUNDS=12

LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
APP_URL=http://localhost:8080
APP_LOCALE=it
APP_FALLBACK_LOCALE=it
APP_FAKER_LOCALE=it_IT

# --- DATABASE (PostgreSQL) ---
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_HOST=postgres
DB_PORT=5432
DB_DATABASE=poc_swe
DB_USERNAME=root
DB_PASSWORD=

SESSION_DRIVER=database
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null

BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=database

CACHE_STORE=database
# CACHE_PREFIX=

MEMCACHED_HOST=127.0.0.1
DB_DATABASE=nexum
DB_USERNAME=nexum
DB_PASSWORD=nexum

# --- INFRASTRUCTURE (Redis & Queue) ---
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
CACHE_STORE=redis
QUEUE_CONNECTION=redis
REDIS_QUEUE_RETRY_AFTER=360
SESSION_DRIVER=database

MAIL_MAILER=log
MAIL_SCHEME=null
MAIL_HOST=127.0.0.1
MAIL_PORT=2525
# --- MAIL (SMTP / Mailpit) ---
MAIL_MAILER=smtp
MAIL_HOST=mailpit
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_ADDRESS=noreply@nexum.local
MAIL_FROM_NAME="${APP_NAME}"

# --- AWS CORE CREDENTIALS (IAM) ---
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
AWS_SESSION_TOKEN=
AWS_DEFAULT_REGION=eu-north-1

# --- AWS STORAGE (S3 / MinIO locale) ---
FILESYSTEM_DISK=s3
AWS_STORAGE_ACCESS_KEY_ID=minioadmin
AWS_STORAGE_SECRET_ACCESS_KEY=minioadmin
AWS_STORAGE_SESSION_TOKEN=
AWS_BUCKET=nexum-local
AWS_ENDPOINT=http://minio:9000
AWS_URL=http://localhost:9000/nexum-local
AWS_USE_PATH_STYLE_ENDPOINT=true

# --- AWS BEDROCK (AI Assistant & Document Analysis) ---
BEDROCK_ENABLED=false
BEDROCK_MODEL_ID=amazon.nova-lite-v1:0
# local = fallback PoC, bedrock = estrazione strutturata tramite Bedrock
DOCUMENT_OCR_DRIVER=local
DOCUMENT_CLASSIFIER_DRIVER=fake

# --- AWS TEXTRACT (disattivato per la PoC) ---
TEXTRACT_ENABLED=false
TEXTRACT_AWS_REGION=eu-north-1
TEXTRACT_S3_BUCKET=
TEXTRACT_SNS_TOPIC_ARN=
TEXTRACT_ROLE_ARN=

# --- AI WORKER (Python FastAPI) ---
AI_WORKER_URL=http://ai-worker:8000
AI_WORKER_PORT=8001
AI_WORKER_ENV=local

BEDROCK_MODEL_ID=us.anthropic.claude-3-5-sonnet-20241022-v2:0
# --- POC SETTINGS & LIMITS ---
POC_CONFIDENCE_THRESHOLD=80
DOCUMENT_MAX_UPLOAD_MB=25
DISPATCH_MAIL_SIMULATION=true

VITE_APP_NAME="${APP_NAME}"
# --- DOCKER / SETUP ---
NGINX_PORT=8080
COMPOSER_INSTALL_ON_STARTUP=true
LARAVEL_AUTOMATED_SETUP=true
57 changes: 57 additions & 0 deletions .github/workflows/accessibility.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Accessibility

on:
push:
branches:
- develop
- main
- migration/full-blade
pull_request:

jobs:
accessibility:
name: Axe and Pa11y
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "22"

- name: Install Node dependencies
run: npm ci --ignore-scripts=false

- name: Install Playwright browser
run: npx playwright install --with-deps chromium

- name: Start application
run: docker compose up -d --build

- name: Wait for application
run: |
for attempt in {1..120}; do
if curl --silent --fail http://localhost:8080 > /dev/null; then
exit 0
fi

sleep 2
done

docker compose logs
exit 1

- name: Run axe
run: node scripts/a11y/axe-playwright.mjs http://localhost:8080 http://localhost:8080/admin

- name: Run Pa11y
run: |
npx pa11y http://localhost:8080
npx pa11y http://localhost:8080/admin

- name: Stop application
if: always()
run: docker compose down --volumes --remove-orphans
40 changes: 40 additions & 0 deletions .github/workflows/pest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Pest

on:
push:
branches:
- develop
- main
- migration/full-blade
pull_request:

jobs:
pest:
name: Run test suite
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: "8.4"
extensions: dom, fileinfo, mbstring, pdo_sqlite, sqlite3
coverage: none

- name: Install dependencies
run: composer install --no-interaction --prefer-dist --no-progress

- name: Create .env file
run: cp .env.example .env

- name: Run Pest
env:
DOCUMENT_OCR_DRIVER: local
DOCUMENT_CLASSIFIER_DRIVER: fake
BEDROCK_ENABLED: false
run: |
php artisan config:clear
php artisan test --display-warnings
31 changes: 31 additions & 0 deletions .github/workflows/pint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Pint

on:
push:
branches:
- develop
- main
- migration/full-blade
pull_request:

jobs:
pint:
name: Check code style
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: "8.4"
extensions: dom, fileinfo, mbstring
coverage: none

- name: Install dependencies
run: composer install --no-interaction --prefer-dist --no-progress

- name: Run Pint
run: ./vendor/bin/pint --test
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
/.codex
/.cursor/
/.claude
/.mcp.json
/.specify
/.idea
/.nova
Expand All @@ -21,11 +22,22 @@
/public/hot
/public/storage
/storage/*.key
/storage/app/private/documents
/storage/app/private/livewire-tmp
/storage/app/tmp
/storage/app/public/documents
/storage/framework/poc-setup-complete
/storage/pail
/vendor
__pycache__/
*.py[cod]
.venv/
CLAUDE.md
boost.json
/specs
_ide_helper.php
Homestead.json
Homestead.yaml
Thumbs.db

/documenti_ocr
11 changes: 0 additions & 11 deletions .mcp.json

This file was deleted.

35 changes: 35 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
.PHONY: help test fresh logs bash restart setup

# Colori per l'output
BLUE := \033[34m
RESET := \033[0m

help:
@echo "$(BLUE)Comandi disponibili per la PoC:$(RESET)"
@echo " $(BLUE)make test$(RESET) Esegue la suite di test (Pest)"
@echo " $(BLUE)make fresh$(RESET) Resetta database e dati generati (documenti e bozze)"
@echo " $(BLUE)make logs$(RESET) Segue i log dei container app e queue"
@echo " $(BLUE)make bash$(RESET) Entra nel container dell'applicazione"
@echo " $(BLUE)make restart$(RESET) Riavvia tutti i servizi Docker"
@echo " $(BLUE)make setup$(RESET) Costruisce l'ambiente da zero"

test:
docker compose exec -T app ./vendor/bin/pest

fresh:
docker compose exec app php artisan migrate:fresh --seed
docker compose exec app php artisan poc:reset-data --force

logs:
docker compose logs -f app queue

bash:
docker compose exec app bash

restart:
docker compose restart

setup:
docker compose up -d --build
@echo "$(BLUE)L'ambiente è stato configurato ed è in fase di avvio.$(RESET)"
@echo "$(BLUE)Puoi monitorare il progresso con: make logs$(RESET)"
Loading
Loading