Files
2026-04-10 13:41:26 +02:00

3.4 KiB

Implementation Plan: Mobile-Responsive UI

Branch: 006-mobile-responsive-ui | Date: 2026-04-10 | Spec: spec.md
Input: Feature specification from /specs/006-mobile-responsive-ui/spec.md

Note: This template is filled in by the /speckit.plan command. See .specify/templates/plan-template.md for the execution workflow.

Summary

Add CSS media queries to make the frontend usable on small screens (≤ 768px). Three targeted fixes:

  1. Make the navbar sticky and its link bar horizontally scrollable
  2. Prevent horizontal overflow in the book reader view
  3. Align the login card toward the top of the viewport instead of vertically centered

No new dependencies, no backend changes, no new components. Pure CSS additions scoped to existing Vue SFCs.

Technical Context

Language/Version: TypeScript / Node 20 (frontend only)
Primary Dependencies: Vue 3.4, Vue Router 4.3, Pinia 2.1 — no changes
Storage: N/A (frontend-only change)
Testing: Manual browser testing at 375px viewport; npm run lint for TypeScript
Target Platform: Modern mobile browsers (iOS Safari, Chrome Android); desktop unchanged
Project Type: Web application (frontend client only for this feature)
Performance Goals: No regression — changes are CSS-only, zero runtime cost
Constraints: No new dependencies; no changes to desktop layout; no hamburger menu
Scale/Scope: 5 files touched (App.vue, LoginView.vue, BookReaderView.vue, possibly UploadView.vue, BookCard.vue)

Constitution Check

GATE: Must pass before Phase 0 research. Re-check after Phase 1 design.

Principle Status Notes
I. KISS PASS Pure CSS media queries — simplest viable solution. No new abstractions.
II. Easy to Change PASS Changes are scoped CSS within existing SFCs; easy to revert or extend.
III. Web-First Architecture PASS Frontend-only change; no API contract impact.
IV. Documentation as Architecture PASS No architectural change → README diagram unchanged.
Technology Constraints PASS Remains backend/ + frontend/; no new deployable unit.

Verdict: No violations. Complexity Tracking table not required.

Project Structure

Documentation (this feature)

specs/006-mobile-responsive-ui/
├── plan.md              # This file
├── research.md          # Phase 0 output
├── data-model.md        # N/A (no data model changes)
├── quickstart.md        # Phase 1 output
├── contracts/           # N/A (no API contract changes)
└── tasks.md             # Phase 2 output (/speckit.tasks command)

Source Code (repository root)

frontend/
├── src/
│   ├── App.vue                      # Navbar sticky + link bar scroll
│   ├── views/
│   │   ├── LoginView.vue            # Login card top-aligned on mobile
│   │   ├── BookReaderView.vue       # Reader fits screen width on mobile
│   │   └── UploadView.vue           # Book grid min-width reduction (if needed)
│   └── components/
│       └── BookCard.vue             # Card min-width reduction (if needed)

Structure Decision: Option 2 (Web application) per constitution. This feature touches only frontend/; backend/ is untouched.

Complexity Tracking

No violations — table not required for this feature.