Handoff — docs-angular, cloud docs config, landing integration

Comprehensive documentation system guides

Handoff: docs-angular context, landing links, and moving private-project auth to cloud/MongoDB

This document captures what was verified in the codebase (March 2026) and recommended next steps. Product focus stays on the landing site (deploy/gograb-landing/); docs work is a separate track unless explicitly scoped.


1. What docs-angular is

Canonical public entry for marketing links

Landing repo alignment


2. Project list and selection (NGXS)


3. View sessions (subset of projects via share link)

Purpose: Restrict which projects appear for a given link (e.g. partner or public subset) without exposing the full catalog.

Frontend

Backend

Client API base


4. Private projects and passwords (current design — to improve)

Where passwords live today

Runtime behavior

UI touchpoints


5. Recommendations: move private access to cloud/MongoDB (next agent)

Goals

  1. No plaintext passwords in browser-loaded JSON; optionally no password field in folders config at all.
  2. Server-side verification (e.g. POST /docs-api/projects/:id/unlock with password body, or session cookie/JWT after success).
  3. MongoDB (or existing docs DB) stores hashed credentials per project or per “doc space,” with audit fields (createdBy, rotatedAt).

Suggested phases

Phase Action
A Schema: DocProjectAccess or extend existing docs collections with projectId, passwordHash, salt/argon2id params, active.
B API: challenge/response or single POST verify; rate-limit; return short-lived session token or httpOnly cookie scoped to docs domain.
C docs-angular: Replace unlockProject plaintext compare with API call; store token in memory/sessionStorage (not long-lived secrets); keep NGXS “unlocked” derived from validated session.
D Migration: one-time script to import from current docs-folders-config passwords → hashes, then strip password from public config served to clients.
E Admin: Config editor should edit visibility flags in DB, not embed secrets in JSON (or only “set/rotate password” via secure endpoint).
F View sessions: Already server-side; align RBAC so private content never leaks via allowedProjectIds without server checks for content routes.

Risks to call out


6. Key files (quick map)

Area Path
Router / hash / initializer apps/docs-angular/src/app/app.config.ts
Dynamic routes + view session routes apps/docs-angular/src/app/services/dynamic-routes.service.ts
Static route definitions (legacy reference) apps/docs-angular/src/app/app.routes.ts
Project list + view session URL parsing apps/docs-angular/src/app/state/project-selection.state.ts
Private unlock + password match apps/docs-angular/src/app/services/access.service.ts
View session entry redirect apps/docs-angular/src/app/pages/view-session-entry/view-session-entry.component.ts
Admin view sessions UI apps/docs-angular/src/app/admin/view-sessions/
Folders config (repo copy) apps/docs-angular/src/assets/docs-folders-config.json
Backend view sessions APIs/backend-docs-api/src/app/view-sessions/
Landing docs links deploy/gograb-landing/index.html, deploy/gograb-landing/DEPLOY.md

7. Explicitly out of scope for “landing-focused” work

Landing owner checklist (only)


8. Related internal docs


End of handoff. Next agent: pick up Phase A–B in backend-docs-api + schema repo, then wire AccessService in docs-angular.