{"id":50768783,"url":"https://github.com/stecrin/momentumboard","last_synced_at":"2026-06-11T16:30:28.390Z","repository":{"id":362775313,"uuid":"1250301204","full_name":"stecrin/momentumboard","owner":"stecrin","description":"A local-first command dashboard for daily planning, task organisation, and job-application tracking.","archived":false,"fork":false,"pushed_at":"2026-06-05T21:18:43.000Z","size":4457,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-05T22:12:54.520Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://github.com/stecrin/momentumboard","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stecrin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-26T13:52:06.000Z","updated_at":"2026-06-05T21:18:47.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/stecrin/momentumboard","commit_stats":null,"previous_names":["stecrin/momentumboard"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/stecrin/momentumboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stecrin%2Fmomentumboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stecrin%2Fmomentumboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stecrin%2Fmomentumboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stecrin%2Fmomentumboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stecrin","download_url":"https://codeload.github.com/stecrin/momentumboard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stecrin%2Fmomentumboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34208761,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-11T16:30:25.804Z","updated_at":"2026-06-11T16:30:28.382Z","avatar_url":"https://github.com/stecrin.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MomentumBoard\n\nA local-first productivity and job-application dashboard for organising daily tasks, weekly planning, job applications, and job-hunting decisions.\n\n---\n\n## What This Is\n\nMomentumBoard is a browser-based dashboard built to solve a real workflow problem: organising daily tasks, weekly planning, and job applications in one local-first system, without relying on a generic todo app or external service.\n\nData lives in your browser's `localStorage`. Nothing is sent to a server. There is no login, no cloud sync, and no external dependencies.\n\n---\n\n## Why I Built It\n\nDuring an intensive period of job searching I found standard todo apps too generic and too slow to set up each day. I needed something opinionated: a tool that enforces a daily structure, surfaces the right tasks for my current energy, prevents duplicate job applications, and extracts job details from copied text automatically.\n\nBuilding it also helped me strengthen and demonstrate:\n\n- Product thinking applied to a real, self-contained problem\n- JavaScript state management without a framework\n- Local data persistence and backup strategies\n- Practical job-search tooling with text parsing and duplicate detection\n- Security awareness around local-first applications\n- Iterative development with a clean Git workflow\n\n---\n\n## Core Features\n\n### Recovery Dashboard\n\n- **Recovery state selector** — set your current state (Stable, Pressured, Overwhelmed, In Recovery, Deep Focus); the UI adapts guidance accordingly\n- **Daily minimum standard** — five daily targets tracked with a recovery score: job applications, money action, movement, emotional boundary, one important task completed\n- **Deep Focus mode** — fullscreen overlay displaying your single current mission and its next action; all other UI hidden\n- **Emergency Reset** — guided overwhelm protocol: stop, drink water, 60-second breathing timer, write only 3 tasks, choose the smallest, work for 10 minutes\n\n### Task System\n\n- **Brain Dump Inbox** — empty your head in one pass; commas or line breaks separate items automatically\n- **Organise My Brain** — keyword-rule engine that analyses each inbox item and suggests category, priority, energy level, and the next smallest action; review and accept or skip\n- **Task Breakdown modal** — per-task: define the final outcome, the smallest first step, urgency, money impact, stress reduction, deadline, energy level (Low/Medium/High), and subtasks\n- **Priority engine** — automatic scoring: Urgent +3, Makes Money +2, Reduces Stress +1, Deadline proximity +1 to +3\n- **Subtask tracking** — add manually or auto-suggest by task type; per-card progress indicator\n- **Recurring tasks** — Daily, Weekdays, Weekly (one day), or Custom day patterns; completion resets daily; pause/resume supported\n- **Energy tagging** — Low Energy mode visually dims high-energy tasks to surface what is actually achievable\n\n### Daily and Weekly Planning\n\n- **Today's Plan** — structured daily command: 1 Major Mission, 2 Support Actions, 3 Non-Negotiables; overload warning if too many slots are filled\n- **Build Today For Me** — auto-populates the daily plan from highest-priority tasks, respecting current brain state and energy mode\n- **Weekly Planner** — assign tasks to specific days; today's column highlighted; printable layout\n- **Auto Plan Week** — distributes tasks across the week (high-priority tasks early, health tasks Saturday, max 3 per day)\n- **Weekly Review** — structured end-of-week debrief: completions, avoidance patterns, emotional destabilisers, single mission for next week\n\n### Job Recovery Tab\n\n- **Application tracker** — save jobs with title, company, salary, location, URL, status (Saved / Applied / Interview / Rejected / Offer), match score (1–5), follow-up date, and notes\n- **Daily application counter** — tracks applications completed today with a progress bar toward a configurable daily target\n- **Smart Job Capture** — paste a full job advert or copied LinkedIn description; automatically extracts title, company, location, salary, and suggested tags; handles messy LinkedIn copy patterns; warns about unsuitable location or work-mode risks; preserves all extracted details when saving\n- **Location and work-mode detection** — assesses whether a role's location and work mode (Remote / Hybrid / On-site) is practical; flags roles with a Location Risk tag and caps the match score accordingly\n- **Match scoring** — keyword-based fit scoring (1–5) generated from the pasted job text; adjusted downward for location risk\n- **Already Applied Checker** — paste a title, company, or URL to check if it matches any existing saved job; uses URL normalisation and meaningful-word matching to surface likely duplicates\n- **Duplicate detection on save** — flags exact, high-confidence, and possible duplicates before a job is saved, with the matched record shown inline\n- **Filtering and sorting** — filter by tag (Remote, Hybrid, On-site, £40k+, Cybersecurity, IT Support, Urgent) and by status; sort by newest, oldest, applied/interview/saved first, rejected last, company A–Z, title A–Z, or highest match score\n- **Job stats bar** — live count of saved jobs by status\n\n### Data and Backup\n\n- **localStorage persistence** — all state is written to `localStorage` under key `scs_v1` on every change\n- **Manual backup** — downloads a timestamped JSON file of all tasks, jobs, reviews, and plan data\n- **Manual restore** — import a previous backup JSON; confirmation prompt before overwriting current data\n- **Automatic daily backup** — exports automatically once per day when the app is open; last backup date shown in the header\n- **localhost notice** — warns if the app is opened directly via `file://`, where some browsers may restrict or clear localStorage\n\n---\n\n\n## Interface Preview\n\nA few screenshots showing the main MomentumBoard workflow, including the dashboard, task organisation, planning tools, job tracking, Smart Job Capture, duplicate checking, and local backup features.\n\n![MomentumBoard screenshot 01](assets/screenshots/momentumboard-01.png)\n\n![MomentumBoard screenshot 02](assets/screenshots/momentumboard-02.png)\n\n![MomentumBoard screenshot 03](assets/screenshots/momentumboard-03.png)\n\n![MomentumBoard screenshot 04](assets/screenshots/momentumboard-04.png)\n\n![MomentumBoard screenshot 05](assets/screenshots/momentumboard-05.png)\n\n![MomentumBoard screenshot 06](assets/screenshots/momentumboard-06.png)\n\n\u003cdetails\u003e\n\u003csummary\u003eView more screenshots\u003c/summary\u003e\n\n![MomentumBoard screenshot 07](assets/screenshots/momentumboard-07.png)\n![MomentumBoard screenshot 08](assets/screenshots/momentumboard-08.png)\n![MomentumBoard screenshot 09](assets/screenshots/momentumboard-09.png)\n![MomentumBoard screenshot 10](assets/screenshots/momentumboard-10.png)\n![MomentumBoard screenshot 11](assets/screenshots/momentumboard-11.png)\n![MomentumBoard screenshot 12](assets/screenshots/momentumboard-12.png)\n![MomentumBoard screenshot 13](assets/screenshots/momentumboard-13.png)\n![MomentumBoard screenshot 14](assets/screenshots/momentumboard-14.png)\n![MomentumBoard screenshot 15](assets/screenshots/momentumboard-15.png)\n![MomentumBoard screenshot 16](assets/screenshots/momentumboard-16.png)\n![MomentumBoard screenshot 17](assets/screenshots/momentumboard-17.png)\n![MomentumBoard screenshot 18](assets/screenshots/momentumboard-18.png)\n![MomentumBoard screenshot 19](assets/screenshots/momentumboard-19.png)\n![MomentumBoard screenshot 20](assets/screenshots/momentumboard-20.png)\n\n\u003c/details\u003e\n\n---\n\n## Tech Stack\n\n| Layer | Technology |\n|---|---|\n| Markup | HTML5 |\n| Styling | CSS3 (custom properties, no framework) |\n| Logic | Vanilla JavaScript (ES6+) |\n| Storage | Browser `localStorage` |\n| Backend | None |\n| Dependencies | None |\n\n---\n\n## How to Run Locally\n\nClone the repository and serve it from a local server. Opening `index.html` directly via `file://` works but is not recommended — some browsers restrict or silently clear `file://` localStorage.\n\n```bash\ngit clone https://github.com/stecrin/momentumboard.git\ncd momentumboard\npython3 -m http.server 8181\n```\n\nThen open: **http://localhost:8181**\n\n---\n\n## Data Storage\n\nAll data is stored in your **browser's localStorage**.\n\n- Clearing your browser's site data will erase all saved tasks, jobs, and reviews\n- Use the **Backup** button in the header regularly to download a JSON export\n- Restore from any previous backup with the **Import** button\n- Backup JSON files are listed in `.gitignore` and should not be committed to version control\n\nThere is no cloud sync, no account system, and no server-side storage in the current version.\n\n---\n\n## Security and Privacy Notice\n\nThis is a **local-first application**. Data is stored in browser localStorage and does not leave your machine in normal use.\n\nThe current version does not include:\n\n- Server-side authentication\n- Encrypted database storage\n- Multi-user account isolation\n- Access control or session management\n\n**Do not host a shared or public version of this app and store sensitive personal information in it** unless proper authentication, backend storage, access control, and security hardening are added first.\n\n---\n\n## Roadmap\n\nPlanned improvements — none are currently implemented:\n\n- [ ] Authentication and login system\n- [ ] Backend database (replacing localStorage)\n- [ ] Hosted private version\n- [ ] Multi-user SaaS possibility\n- [ ] Improved job URL capture\n- [ ] Browser extension for LinkedIn job capture\n- [ ] AI-assisted job fit analysis\n- [ ] Application analytics dashboard\n\n---\n\n## Technical Notes\n\nThis project demonstrates:\n\n- **Product thinking** — a workflow-specific tool shaped around a real problem, not a generic CRUD app\n- **User-centred design** — brain state modes, emergency reset, low-energy filtering, and an opinionated daily structure that reduces decision fatigue\n- **JavaScript state management** — single-source-of-truth `state` object with consistent persistence and reactive rendering, no framework\n- **Local data persistence** — localStorage read/write, backup/restore cycle, automatic daily export, corruption-safe hydration\n- **Practical job-search tooling** — text parsing, duplicate scoring, URL normalisation, and tag/salary/location extraction from raw job advert copy\n- **Security awareness** — explicit documentation of the limitations of local storage and the requirements for a safely hosted version\n- **Iterative Git workflow** — feature branches, incremental commits, clean history\n\n---\n\n## Disclaimer\n\nThis is local-first personal productivity software built for practical day-to-day use.\n\n- Not medical advice\n- Not financial advice\n- Not a production security product\n- Not a finished or hosted SaaS\n\nUse it as a local productivity tool. Maintain regular backups to avoid data loss.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstecrin%2Fmomentumboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstecrin%2Fmomentumboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstecrin%2Fmomentumboard/lists"}