Phase 4: Authenticated dashboard with tool grid #5

Open
opened 2026-05-09 02:46:55 +00:00 by forgejo_admin · 1 comment
Contributor

Type

Feature

Lineage

Decomposed from #1 — Phase 4 of 4. Depends on #4 (Keycloak auth).

Repo

forgejo_admin/pal-enterprises

User Story

As an authenticated user, I want to see a dashboard of all platform tools after login, so that I can navigate to any service without re-authenticating.

Context

Create the authenticated dashboard at /dashboard — a grid of tool cards linking to every pal-e platform service. This mirrors the current pal-e-hub surfaces list but in Rails. The dashboard is session-gated: unauthenticated users are redirected to the landing page.

The tool list (sourced from the current pal-e-hub +page.server.js):

  • pal-e-docs (notes API)
  • pal-e-dictionary
  • pal-e-kanban
  • westside-admin
  • westside-ror
  • pal-e-ror
  • grafana
  • forgejo
  • woodpecker
  • argocd

File Targets

Files to create:

  • app/controllers/dashboard_controller.rb — index action, before_action auth check
  • app/views/dashboard/index.html.erb — tool cards grid with Tailwind
  • app/controllers/concerns/authentication.rb — shared require_auth concern

Files to modify:

  • config/routes.rb — add /dashboard
  • app/controllers/sessions_controller.rb — redirect to /dashboard after login

Acceptance Criteria

  • Dashboard renders at /dashboard with tool card grid
  • Each card shows tool name, description, status, and link
  • Unauthenticated access to /dashboard redirects to /
  • Dashboard shows logged-in user's name
  • Successful login redirects to /dashboard
  • All platform tools listed with correct Tailscale URLs

Test Expectations

  • Unit test: DashboardController redirects unauthenticated users
  • Unit test: DashboardController renders for authenticated session
  • Run command: bin/rails test

Constraints

  • Tool list is hardcoded (same pattern as pal-e-hub) — no dynamic service discovery yet
  • Auth guard via before_action using the Authentication concern from Phase 3
  • Tailwind card grid, responsive (1 col mobile, 2 col tablet, 3 col desktop)

Checklist

  • PR opened
  • Tests pass
  • Dashboard accessible after Keycloak login
  • No unrelated changes
  • pal-enterprises — project
### Type Feature ### Lineage Decomposed from #1 — Phase 4 of 4. Depends on #4 (Keycloak auth). ### Repo `forgejo_admin/pal-enterprises` ### User Story As an authenticated user, I want to see a dashboard of all platform tools after login, so that I can navigate to any service without re-authenticating. ### Context Create the authenticated dashboard at `/dashboard` — a grid of tool cards linking to every pal-e platform service. This mirrors the current pal-e-hub surfaces list but in Rails. The dashboard is session-gated: unauthenticated users are redirected to the landing page. The tool list (sourced from the current pal-e-hub `+page.server.js`): - pal-e-docs (notes API) - pal-e-dictionary - pal-e-kanban - westside-admin - westside-ror - pal-e-ror - grafana - forgejo - woodpecker - argocd ### File Targets Files to create: - `app/controllers/dashboard_controller.rb` — index action, before_action auth check - `app/views/dashboard/index.html.erb` — tool cards grid with Tailwind - `app/controllers/concerns/authentication.rb` — shared `require_auth` concern Files to modify: - `config/routes.rb` — add `/dashboard` - `app/controllers/sessions_controller.rb` — redirect to `/dashboard` after login ### Acceptance Criteria - [ ] Dashboard renders at `/dashboard` with tool card grid - [ ] Each card shows tool name, description, status, and link - [ ] Unauthenticated access to `/dashboard` redirects to `/` - [ ] Dashboard shows logged-in user's name - [ ] Successful login redirects to `/dashboard` - [ ] All platform tools listed with correct Tailscale URLs ### Test Expectations - [ ] Unit test: DashboardController redirects unauthenticated users - [ ] Unit test: DashboardController renders for authenticated session - Run command: `bin/rails test` ### Constraints - Tool list is hardcoded (same pattern as pal-e-hub) — no dynamic service discovery yet - Auth guard via `before_action` using the Authentication concern from Phase 3 - Tailwind card grid, responsive (1 col mobile, 2 col tablet, 3 col desktop) ### Checklist - [ ] PR opened - [ ] Tests pass - [ ] Dashboard accessible after Keycloak login - [ ] No unrelated changes ### Related - `pal-enterprises` — project
Author
Contributor

Scope Review: NEEDS_REFINEMENT

Review note: review-1181-2026-05-09
File targets are partially stale -- most plumbing already exists from Phase 3. Main remaining work is the tool card grid view.

  • [BODY] File targets need updating: dashboard_controller.rb, routes.rb, sessions_controller.rb already exist and are wired up. concerns/authentication.rb does not exist -- auth lives in ApplicationController.
  • [BODY] Repo reference stale: forgejo_admin/pal-enterprises -> ldraney/pal-enterprises (repo was transferred).
  • [BODY] AC says "redirects to /" but code redirects to /login. Clarify intended behavior.
  • [BODY] "Status" on tool cards is ambiguous (live health check vs static label). Clarify.
  • [BODY] Add Tailscale URLs for all 10 tools so agent doesn't need to discover them.
  • [SCOPE] Create architecture note arch-rails-app -- no backing note exists in pal-e-docs.
## Scope Review: NEEDS_REFINEMENT Review note: `review-1181-2026-05-09` File targets are partially stale -- most plumbing already exists from Phase 3. Main remaining work is the tool card grid view. - **[BODY]** File targets need updating: `dashboard_controller.rb`, `routes.rb`, `sessions_controller.rb` already exist and are wired up. `concerns/authentication.rb` does not exist -- auth lives in `ApplicationController`. - **[BODY]** Repo reference stale: `forgejo_admin/pal-enterprises` -> `ldraney/pal-enterprises` (repo was transferred). - **[BODY]** AC says "redirects to `/`" but code redirects to `/login`. Clarify intended behavior. - **[BODY]** "Status" on tool cards is ambiguous (live health check vs static label). Clarify. - **[BODY]** Add Tailscale URLs for all 10 tools so agent doesn't need to discover them. - **[SCOPE]** Create architecture note `arch-rails-app` -- no backing note exists in pal-e-docs.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ldraney/pal-enterprises#5
No description provided.