feat: a dashboard for clients, behind a secret link

Owners and admins turn it on in Configuración → General, pick what it
shows (tickets per status, the sprint under way, release forecasts,
open epics and activity per day) and can renew or drop the link. Whoever
has it sees /share/{token} without an account: only those blocks, no
people nor single tickets but the epics, no links into the app, read
again every minute. A renewed or dropped link says it no longer works.

REST (GET/PUT/DELETE /api/projects/{project}/share and the public
GET /api/shared/dashboards/{token}) and GraphQL (dashboardShare,
shareDashboard, unshareDashboard, sharedDashboard). The token is kept
in dashboard_shares and goes with the project.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-16 10:39:26 +02:00
parent 4dc673997d
commit 8fe581ff3e
44 changed files with 3299 additions and 12 deletions

View File

@@ -45,6 +45,15 @@ export const trackerRoutes: Routes = [
loadComponent: () =>
import('./pages/explore.page').then((m) => m.ExplorePage),
},
{
// A project's dashboard for its clients: the token is the access.
path: 'share/:token',
title: 'Estado del proyecto · TaskStream',
loadComponent: () =>
import('./pages/shared-dashboard.page').then(
(m) => m.SharedDashboardPage,
),
},
// The Spanish paths, from links shared before.
{ path: 'cartera', redirectTo: 'portfolio' },
{ path: 'explorar', redirectTo: 'explore' },