Math Challenge
More

Navigation for the Authenticated App Area: Parent Dashboard and Future Child/Adult Play Surfaces

mc-50 · Published: · by Math Challenge Research · 2,123 words · 11 cited sources

Executive summary

The owner found, via a real screenshot, that the parent dashboard ("Tu casa") inherited Base.astro — the MARKETING nav, with "Sign in"/"Sign up" as actions for someone already logged in. Internal research confirmed this was omission, not decision: the three app/kids/ files carry extensive, cited reasoning for NOT using Base.astro (zero telemetry, zero brand nav, zero JavaScript — red line #2, D-037), but app/index.astro and app/signin.astro were the only two files under /app/ with no comment explaining their layout choice. Neither master-plan.md nor decisions.md contains a single decision about what navigation the authenticated adult area should have — D-064 and mc-49 cover the public site exclusively.

The deeper finding wasn't about layout but about the data model: the screen assumed every adult is a parent. users.is_learner has existed since migration 0001 — "does this adult use the product for themselves?" — and nothing downstream ever read it. An adult who registered via registro-aprendo saw the same empty, meaningless "Your children" section, and has nowhere to go: no practice screen exists for a solo adult learner — F5b (N8-N10 content) and F10 (adult clubs) remain unbuilt — so the navigation gap was really two gaps: the wrong layout, and a feature that doesn't exist yet.

External research converges on a known pattern: Google Family Link — the closest real analogue, an adult managing a minor's usage — uses exactly 3 fixed tabs (Highlights/Controls/Location), not a marketing-site nav [1]. UX literature confirms fixed tabs work for 3-5 equally-important destinations [2][3], and that a panel with more than that becomes a single scrollable list instead of tabs [4] — the same HIG/Material 3 rule D-064 already fixed at 5. On future CHILD-facing bands (PRIMARIA, SECUNDARIA): mc-20/mc-21 already settle this — maximum 2-tap navigation, zero menu, the avatar grid IS the navigation [5][6]. mc-21 adds, for PRIMARIA, a lightweight in-session "where am I" strip (not a menu) [7]. mc-22 (teens) is the only one suggesting a different navigation pattern: persistent sidebar, desktop-only, docked numeric keypad on phone — but framed as in-screen content density, not account-level chrome [8]. mc-23 (adult/pro) asks for visible jump navigation inside practice (skip to topic), instead of a fixed linear flow — again inside the problem-solving screen, not an account menu [9].

---

374 words

This document was written in English. It is published here in full, unedited.

Verification status

This document carries no [unverified] flag. Every claim in it is tied to a numbered source below.

[unverified] means the claim is stated in the research but was not confirmed against a primary source in the session that produced it. It is published rather than removed, because a research corpus that hides its gaps is not verifiable.

How this research was produced

The 47 documents were produced on 2026-07-31 by independent agents, each instructed not to invent citations and to flag as [unverified] anything it could not confirm against a primary source. The session's web-search quota ran out mid-way, and later agents worked by direct fetch against primary sources. Several sites (ftc.gov, ico.org.uk) block automated fetching, which is why certain legal claims are flagged on purpose.

Findings

1. Google Family Link’s tab structure. Three fixed tabs: Highlights (today’s usage, most-used app), Controls (screen time / app limits), Location — plus a shared notification hub. Multi-child households get fast profile switching from the same shell [1]. This is architecturally the closest real product to “Tu casa”: an adult account managing minors, not a marketing site.

2. Tabs vs. single-scroll-list, and where the line is. Bottom tabs suit 3-5 primary destinations accessed repeatedly [2]. Settings screens specifically: tabs work when destinations are equally important and not subordinate to each other; when one destination is clearly primary and the rest secondary, or when there are more varied categories than that, a single scrollable list serves better [3][4]. Sidebar navigation is the right call for products with 15-40 sections (admin panels, SaaS dashboards) — not applicable at this screen’s scale (2-5 sections) [10].

3. mc-20 (KINDER) navigation findings, restated for this task’s purpose. Max 2 taps from app-open to “answering a challenge.” Tap 1: pick avatar. Tap 2: tap mascot/Play. Explicit anti-pattern: “deep or hidden navigation (hamburger menus, multi-level settings) inside the child-facing surface” [5]. Applies to KINDER by design; the codebase currently reuses this same zero-chrome pattern for ALL child bands via kids/jugar.astro (explicitly documented as a simplification: “en esta rejilla conviven las tres bandas de niño… manda el piso más alto de los tres”).

4. mc-21 (PRIMARIA) navigation findings. Fast, no-typing profile switching; no assumption of a persisted personal login (shared family tablets, school Chromebooks) [6]. One new element vs. KINDER: a lightweight in-session context strip (progress/streak indicator) — the first band where “where am I in this session” is recommended at all, but still not a menu [7].

5. mc-22 (SECUNDARIA/teens) navigation findings. The one directly transferable chrome idea across all four band docs: “Tablet: two-pane (problem + scratch/graph). Desktop: persistent skill-tree sidebar that phone omits — the ‘not a kids app’ signal on desktop leans toward Desmos/Khan-Academy-style utility density.” [8] Explicitly framed as per-surface density inside the practice screen, not account-level app navigation. Dark-mode-by-default for this band is already implemented in bandas.css.

6. mc-23 (adult/expert) navigation findings. “Expose explicit learner control over path: visible skip/reorder/jump-to-topic… honoring the self-concept assumption that adults disengage when the system controls sequencing.” [9] Also inside the practice screen — multi-panel density (problem, scratch area, attempt history), not a settings/account menu.

7. What none of the four band docs address. A persistent, top-level, account-facing navigation menu for the authenticated area. KINDER/PRIMARIA want zero chrome by design. SECUNDARIA/adult findings are about in-practice content density. This confirms the private-app navigation gap this document addresses had no prior research coverage at all — same conclusion mc-49 reached for the public site before D-064.

8. The data-model gap. migrations/0001_identity.sql, comment on the deliberate absence of a role column: “Sin columna role… una persona puede ser las tres cosas a la vez: el propio dueño es papá y aprendiz adulto (por-que-existe.md). Un rol excluyente obligaría a mentir.” Capabilities are derived: parent ⇐ has rows in child_profiles; teacher ⇐ has a row in group_owner_identity (F9, unbuilt); learner ⇐ users.is_learner = 1, the only explicit flag, set at signup from the registro-aprendo door but never read downstream before this pass.

Design implications

  1. The authenticated adult area gets its own layout, not Base.astro. Same principle app/kids/** already established for child surfaces, extended to the one remaining gap (D-065).
  2. Fixed top tab strip, not the four-context machinery of D-064. This screen has 2-5 destinations, not “6 sections + overflow competing with a marketing nav” — the problem D-064’s complexity solves doesn’t exist here. A simple sticky tab row, present regardless of display-mode (there’s no competing browser-tab-vs-installed nav to avoid stacking with), matches both the Family Link precedent and the product’s own “don’t build machinery a problem doesn’t need” instinct.
  3. Tabs are derived from what the account actually has, not from which door it registered through. esFamilia = has ≥1 child profile. esSolo = users.is_learner = 1. Not mutually exclusive. Cap at 5 (HIG/Material 3, mc-49’s own citation, reapplied here).
  4. “Cuenta” (passkey/password/sign-out) is always present and always real — it’s the one destination that never depends on account type, and guarantees the dashboard is never a dead end even for an account with neither children nor is_learner set (e.g. teacher-only, F9 unbuilt).
  5. Landing tab is the first REAL (non-”coming soon”) tab, not simply the first in display order — a solo learner should not open the app to a “coming soon” placeholder when “Cuenta” has real, working content.
  6. RUM band is SERIO, not PUBLICO. D-037 permits measuring adult surfaces; PUBLICO mixes marketing traffic with authenticated product usage in the same metrics bucket.
  7. For future child-facing bands (PRIMARIA, SECUNDARIA): no account-level chrome, ever — this is the lineamiento the owner asked to fix now rather than defer. The zero-navigation, avatar-grid-as-entry pattern kids/** already implements for KINDER stays the pattern for every child band. What changes per band is content density inside the play screen, never app-level navigation: PRIMARIA adds a lightweight in-session progress strip (not a menu); SECUNDARIA’s desktop practice screen may carry a persistent skill-tree sidebar, phone still docks the keypad with no added chrome; none of the three ever gets a hamburger menu, a bottom tab bar, or any structure requiring more than 2 taps from open to “answering a challenge.” A child never reaches layouts/Privada.astro — that layout is adult-only by construction (D-065).
  8. For the future adult/pro self-study surface (F5b/F10, unbuilt): when it ships, it lives as a real “Practicar” tab in this same Privada.astro shell (not a new layout) — mc-23’s visible skip/jump-to-topic navigation happens inside that screen, the same way it would inside any practice screen, not as a second account-level nav system.

Open questions for the project owner

Already resolved this session, recorded here for traceability:

  1. Solo vs. family accounts, and how the menu should differ → resolved: derived from real data (is_learner, child count), not signup door; tabs are the union of what applies.
  2. Whether to anticipate F8’s tabs now → resolved: yes, as visible “Próximamente” tabs rather than rebuilding navigation twice.
  3. Whether to write the future-band guideline now or defer → resolved: now (design implication #7 above).

Still open, for whoever builds F5b/F9/F10:

  1. When the adult “Practicar” tab goes from placeholder to real, does it reuse child_profiles-style entity modeling, or a separate table keyed directly on users.id? (Out of scope for navigation; a content/data question for F5b.)
  2. When F9 (teacher/classroom) ships, does the teacher get a 6th tab here, or a fully separate /app/maestro/ area? This document’s 5-tab cap assumes parent+learner; a teacher tab would need its own scope decision at that point.

Sources

  1. Google Families / Family Link product documentation and support pages — tab structure (Highlights/Controls/Location), multi-child profile switching
  2. UXPin, "Mobile Navigation Patterns: Pros and Cons"
  3. LogRocket Blog, "Tabbed navigation in UX: Where and when to use it"
  4. Cursa, "Tab Navigation Patterns and When to Use Them"
  5. Math Challenge internal research, docs/research/2026-07-31-mc-20-ui-ages-3-6-kinder.md §8, design implications #8-#9
  6. Math Challenge internal research, docs/research/2026-07-31-mc-21-ui-ages-7-11-primary.md §10, design implication #13
  7. Same as [6], design implication #4
  8. Math Challenge internal research, docs/research/2026-07-31-mc-22-ui-teens-12-17.md, design implication #13
  9. Math Challenge internal research, docs/research/2026-07-31-mc-23-ui-adult-expert.md, design implications #8, #10
  10. AlfDesignGroup, "Sidebar Design for Web Apps: UX Best Practices (2026 Guide)"
  11. Math Challenge internal code/decisions — migrations/0001_identity.sql (schema comment on role vs. derived capabilities, is_learner column), apps/web/src/pages/[locale]/app/kids/index.astro (§"Por qué esta pantalla NO usa layouts/Base.astro"), docs/decisions.md D-034, D-064

Open questions this document leaves for the owner

These are unanswered on purpose. They are listed, not resolved — turning them into a FAQ would mean inventing answers the document does not contain.

One of 51 research documents, 168,346 words in total, counted at build time from the files themselves. Read this document in the repository