Nessuna descrizione

chiappa 53891b2662 SPEC.md: note task-table polish hotfix in §9 + §13 3 giorni fa
assets f204611c29 Fix: task table header alignment + status dropdown visibility + per-input tint 3 giorni fa
doc c5eef6ada1 Docs: rename HANDOFF.md to SPEC.md, add admin manual, refresh README 3 giorni fa
migrations 9cb7669e6b Phase 18: per-cell task-status colours + filter + global toggle 3 giorni fa
public f204611c29 Fix: task table header alignment + status dropdown visibility + per-input tint 3 giorni fa
src 75e96e2470 Phase 19: Twig 3 + Tailwind 3 + Alpine CSP + htmx + SortableJS, jQuery removed 3 giorni fa
tests 75e96e2470 Phase 19: Twig 3 + Tailwind 3 + Alpine CSP + htmx + SortableJS, jQuery removed 3 giorni fa
views f204611c29 Fix: task table header alignment + status dropdown visibility + per-input tint 3 giorni fa
.dockerignore ab9430b0cc Phase 11: vendor Tailwind + drop inline onclick + tighten CSP 2 settimane fa
.env.example 83493d0541 Phase 2 hotfix: scalar-safe Request + local admin login 2 settimane fa
.gitignore 64d2782037 Track composer.lock — fixes stale-cache Docker builds after Phase 19 3 giorni fa
ACCEPTANCE.md b457896413 Phase 17: hide native number spinners + custom 0.5-step stepper popover 2 settimane fa
Dockerfile 75e96e2470 Phase 19: Twig 3 + Tailwind 3 + Alpine CSP + htmx + SortableJS, jQuery removed 3 giorni fa
README.md c5eef6ada1 Docs: rename HANDOFF.md to SPEC.md, add admin manual, refresh README 3 giorni fa
SPEC.md 53891b2662 SPEC.md: note task-table polish hotfix in §9 + §13 3 giorni fa
composer.json 75e96e2470 Phase 19: Twig 3 + Tailwind 3 + Alpine CSP + htmx + SortableJS, jQuery removed 3 giorni fa
composer.lock 64d2782037 Track composer.lock — fixes stale-cache Docker builds after Phase 19 3 giorni fa
docker-compose.yml fd2f0dff1c changed docker compose port 3 giorni fa
package-lock.json 75e96e2470 Phase 19: Twig 3 + Tailwind 3 + Alpine CSP + htmx + SortableJS, jQuery removed 3 giorni fa
package.json 75e96e2470 Phase 19: Twig 3 + Tailwind 3 + Alpine CSP + htmx + SortableJS, jQuery removed 3 giorni fa
phpunit.xml 21d0c4ac33 Phase 7: audit viewer + security headers + PHPUnit 2 settimane fa
tailwind.config.js 75e96e2470 Phase 19: Twig 3 + Tailwind 3 + Alpine CSP + htmx + SortableJS, jQuery removed 3 giorni fa

README.md

Sprint Planner

Web replacement for an Excel-based sprint planning workbook used by a ~15-person ops/dev team. One sprint per page: an Arbeitstage matrix (working-days availability per worker per week) on top, a task list with per-worker day allocations on the bottom. Proper auth, database, and a per-cell audit trail.

Stack

  • PHP 8.3 + Apache (Docker, multi-stage build)
  • SQLite via PDO (file on a mounted volume)
  • Server-rendered PHP templates + Tailwind CSS (vendored, compiled by a Node build stage) + jQuery / jQuery UI (CDN)
  • Microsoft Entra ID (OpenID Connect, Authorization Code + PKCE), with an optional local-admin fallback for dev / on-prem deployments
  • Dark mode (manual toggle, no FOUC), strict CSP

Quick setup

For a development or pilot install on a single host:

# 1. Clone and enter the repo
git clone <repository-url> sprint_planer_web
cd sprint_planer_web

# 2. Create the .env file from the template
cp .env.example .env

# 3. Edit .env. The minimum to sign in without Entra is:
#      SESSION_SECRET=<random 32+ bytes, e.g. `openssl rand -hex 32`>
#      LOCAL_ADMIN_EMAIL=you@example.com
#      LOCAL_ADMIN_PASSWORD=<a long passphrase>
#    For Entra-based sign-in, fill ENTRA_TENANT_ID / ENTRA_CLIENT_ID /
#    ENTRA_CLIENT_SECRET instead (or in addition).
chmod 600 .env

# 4. Build and start the container (compose maps host port 8088 → container 80)
docker compose up -d --build

# 5. Open the app
xdg-open http://localhost:8088   # or just visit it in a browser

The first user to sign in is automatically promoted to administrator (audit-logged as BOOTSTRAP_ADMIN). Subsequent admin promotions happen through the Users page in the hamburger menu.

The SQLite database is created on first request at ./data/app.sqlite on the host (mounted into the container at /var/www/data/app.sqlite). Migrations run automatically on container start. Wiping ./data/ resets the application to a blank slate.

For everything else — Entra app registration, backups, troubleshooting, upgrades — see doc/admin-manual.md.

Layout

public/      front controller (index.php) + web root
src/         application code (App\ namespace, PSR-4)
views/       PHP templates
migrations/  numbered .sql files applied by Migrator
assets/      Tailwind source (compiled into public/assets/css/app.css)
data/        SQLite + sessions (volume-mounted; gitignored)
doc/         operator-facing documentation (admin manual)

Documentation

  • doc/admin-manual.md — administrator setup, configuration, and operations guide.
  • SPEC.md — full specification: schema, routes, capacity math, build phase history. Read this if you intend to modify the code.
  • ACCEPTANCE.md — manual acceptance checklist used to validate releases.

Tests

vendor/bin/phpunit
# → OK (88 tests, 208 assertions)