Case study / Study Journal
Keep the notebook at the center of learning.
Reading a note and choosing what to practice are different actions. Study Journal keeps writing in the foreground, then lets the learner deliberately turn a passage into a card, question, or idea. The first phase follows one complete flow: open a topic, write, save, reload, and return to the source of a study object.
- Explicit creation of study objects
- Serialized autosave and recovery
- 76 local unit/component tests passed
Evidence Snapshot
The public source contains the editor, autosave controller, repository interfaces, and a Playwright study-flow specification. On November 4, 2026, typecheck, lint, all 76 unit/component tests, and the production build passed locally. The browser flow is specified across desktop, laptop, and mobile projects; no passing hosted CI run or production deployment is claimed here.
Problem and Users
This project is for a learner who needs room to explain a concept in her own words, while keeping useful passages available for later practice. Automatically converting every note into a card would make the tool decide what matters before the learner has made that choice.
The goal for Phase 1 was a small, complete learning workflow, rather than a dashboard of unfinished study features.
Key Product Decisions
Notes never become cards automatically. A learner selects a passage, opens a composer, fills in the required fields, and presses Save. The card, question, or idea keeps its journal-entry and topic identifiers, plus source text and section when created from a selection.
The notebook takes priority when space is tight. The study context sits in a rail on larger screens and moves into a sheet on smaller screens. A source control brings the learner back to the passage; if that text has been edited away, the interface says so instead of guessing.
Engineering Decisions
An 800 ms debounce keeps autosave quiet while the learner writes. A framework-independent controller serializes saves and tracks revisions, so a save completing in the background cannot mark newer writing as saved. A failed save retains the draft and attempts a separate session-storage recovery copy.
Repository interfaces keep storage out of the components. The current adapters use localStorage; a future backend would need its own implementation. That boundary is preparation for another adapter, not evidence that sync already exists.
The scheduler and focus-trap work were ported from CodeHerWay with tests. The reuse audit distinguishes those ports from adapted patterns and the features deliberately left out.
Accessibility Considerations
The implementation includes labeled editors, keyboard toolbar navigation, focus trapping and restoration for overlays, and failure announcements. Test source covers focus behavior and the study flow. These checks do not establish WCAG conformance or replace assistive-technology testing.
Performance Considerations
The verified production build emitted an 820.69 kB JavaScript entry chunk (258.61 kB gzip). The editor is a substantial part of the first load. Code splitting is still deferred; there is no measured browser-speed improvement to report.
Current Status and Limits
The source and local checks support the Phase 1 implementation. Storage belongs to this browser, and recovery is best effort. There is no account sync, global search, or review screen. No learner-outcome data is reported. Development is AI-assisted; the linked code and checks make the implementation reviewable.
What I Would Improve Next
- Test the writing and recovery flow with learners, including failed storage writes.
- Run and retain browser-flow results across the configured screen sizes.
- Reduce the editor cost before expanding the product surface.
- Design a backend adapter and conflict behavior before promising cross-device access.
Inspect the Source
These links pin the evidence to the revision reviewed for this page.