{% extends "layout.twig" %} {% block content %}
{% if authError|default(false) %}
Sign-in failed. Check the server logs or the audit log for details.
{% endif %} {% if currentUser is null %}

Sprint Planner

Sign in with your Microsoft account to get started. The first person to sign in becomes the admin automatically.

{% if oidcConfigured %} Sign in with Microsoft {% endif %} {% if localAdminEnabled %} Sign in as local admin {% endif %} {% if not oidcConfigured and not localAdminEnabled %} No sign-in method configured. Set ENTRA_* or LOCAL_ADMIN_* in .env. {% endif %}
{% else %}

Sprints

{{ sprintRows|length }} sprint{{ sprintRows|length == 1 ? '' : 's' }}.

{% if currentUser.isAdmin %} New sprint {% endif %}
{% if sprintRows is empty %}
No sprints yet. {% if currentUser.isAdmin %} Create the first one. {% endif %}
{% else %} {% for row in sprintRows %} {% set s = row.sprint %} {% endfor %}
Name Dates Workers Tasks Reserve Status
{{ s.name }} {{ s.startDate }} – {{ s.endDate }} {{ row.nWorkers }} {{ row.nTasks }} {{ (s.reserveFraction * 100)|number_format(0) }}% {% if s.isArchived %} archived {% else %} active {% endif %}
{% endif %}
{% endif %} {% if currentUser is null or currentUser.isAdmin %}
Runtime
PHP
{{ constant('PHP_VERSION') }}
APP_ENV
{{ appEnv }}
SQLite file
{{ dbPath }}
Schema version
{{ schemaVersion }}
OIDC
{{ oidcConfigured ? 'configured' : 'not configured' }}
Local admin
{{ localAdminEnabled ? 'enabled' : 'disabled' }}

Liveness probe: /healthz

{% endif %}
{% endblock %}