A lightweight task management app designed around cognitive load.
Traditional task managers optimize for priority.
This app optimizes for ability to act.
"What do I realistically have the mental energy to do right now?"
No signup required. Data is stored locally in your browser.
Case Study: Adobe Portfolio · GitHub
Core feature set is stable. Currently migrating to TypeScript and Zustand for state management - replacing prop-drilled App-level state with domain-specific stores (tasks, filters, momentum, UI).
- UX-driven problem framing and solution design
- Front-end architecture using React + IndexedDB
- Offline-first application design
- Accessibility-conscious UI decisions
- Iterative design process from concept → prototype → implementation
Low Load — routine tasks ("Reply to email")
Medium Load — moderate effort ("Sort clean laundry")
High Load — deep focus ("Write 7-page report")
This model supports users dealing with fatigue, ADHD, executive dysfunction, or fluctuating mental energy.
- Create, edit, and delete tasks
- Assign cognitive load (Low / Medium / High)
- Mark tasks complete
- Persistent storage using IndexedDB
- Offline-first (no backend required)
- Filtering by cognitive load
- Optional sorting and organization
- Momentum Mode (experimental task sequencing)
This project is under active development.
Core functionality and persistence are implemented.
Ongoing work includes UI/UX refinement and accessibility improvements.
AI tools were used selectively for:
- UI exploration and mockup generation
- brainstorming layout variations
- accelerating boilerplate code
All architecture, state management, IndexedDB integration, and feature logic were implemented and/or reviewed manually.
- React
- Vite
- IndexedDB (local persistence)
- Vanilla JavaScript
IndexedDB was chosen because it provides:
- structured data storage
- larger capacity
- better performance for growing datasets
- asynchronous operations
This allows the app to scale beyond a trivial demo while remaining fully offline-capable.
I intentionally skipped it to move faster and validate the product idea. Now that the core features are finished, I have migrated TypeScript and Zustand for state management.
This app stores data locally using IndexedDB and does not implement authentication or encryption.
It is designed for low-friction personal task management.
Sensitive information should not be stored in this app.
git clone https://github.com/martinson-r/Cognitive-Load-Task-Organizer.git cd Cognitive-Load-Task-Organizer
npm install npm run dev
Then open:
Unit tests cover the core Momentum Mode algorithm and task view utilities, the logic most likely to fail silently under edge cases.
npm test # run tests in watch mode
npm run test:ui # visual test runnerTest files live in src/utils/. Current coverage:
momentum.test.ts—pickKeystoneForMe,getRunwayNeedsFallback,hasCrossContextLowerLoadOptions,getMomentumTaskstaskView.test.ts—getVisibleTasks,normalizeTaskPositions
This project includes a living UI Implementation Guide that documents the application's semantic tokens, typography scales, and accessible component patterns.
While the guide is intentionally omitted from the main application navigation to maintain a focused user experience, it can be accessed directly:
- Live Documentation: View the UI Guide
- Local Development: Navigate to
/#/ui-guidewhile the dev server is running.
Note: The deployed URL utilizes /#/ui-guide. HashRouter was a deliberate tradeoff for zero-config portability across static hosting environments (like Netlify/GitHub Pages) without requiring server-level redirect logic.
As a UX Engineer, I built this guide to serve as a pragmatic dictionary for developers. It ensures:
- Single Source of Truth: All styles are driven by CSS variables defined in
App.css, preventing "magic numbers" in the codebase. - Theme Scalability: By using semantic tokens instead of hardcoded hex values, the app supports native Dark Mode with zero component-level overrides.
- Spatial Consistency: Layouts follow a strict 8px-based spacing scale to ensure visual rhythm and predictability.