{"id":38177579,"url":"https://github.com/femioladeji/screentime","last_synced_at":"2026-05-03T22:02:48.230Z","repository":{"id":40671995,"uuid":"154911091","full_name":"femioladeji/screentime","owner":"femioladeji","description":"A chrome extension for keeping track and managing your time on social media platforms and websites","archived":false,"fork":false,"pushed_at":"2026-04-25T16:15:21.000Z","size":1953,"stargazers_count":70,"open_issues_count":3,"forks_count":10,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-04-25T18:16:25.683Z","etag":null,"topics":["chrome","chrome-extension","extensions","productivity","social-media","vue"],"latest_commit_sha":null,"homepage":"https://chrome.google.com/webstore/detail/screentime/ofmanejijbcohgebmdfacglmhemiifca","language":"Vue","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/femioladeji.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":"2018-10-27T01:17:20.000Z","updated_at":"2026-04-25T16:13:38.000Z","dependencies_parsed_at":"2024-03-16T23:42:52.753Z","dependency_job_id":"3933b1c1-9677-4c70-8d84-edc62103cd79","html_url":"https://github.com/femioladeji/screentime","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/femioladeji/screentime","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/femioladeji%2Fscreentime","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/femioladeji%2Fscreentime/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/femioladeji%2Fscreentime/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/femioladeji%2Fscreentime/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/femioladeji","download_url":"https://codeload.github.com/femioladeji/screentime/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/femioladeji%2Fscreentime/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32586188,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["chrome","chrome-extension","extensions","productivity","social-media","vue"],"created_at":"2026-01-16T23:36:01.598Z","updated_at":"2026-05-03T22:02:48.225Z","avatar_url":"https://github.com/femioladeji.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Screentime Chrome Extension\n\nScreentime is a Chrome extension that helps you reduce time on distracting websites.\nIt tracks time spent per site, lets you define daily limits, supports day/time block windows,\nand automatically closes tabs when a rule is violated.\n\n## What the extension does\n\n- Tracks active-tab usage time by site.\n- Shows activity insights in a dashboard (bar chart and recent day selection).\n- Lets you enable or disable control per site.\n- Lets you configure per-site daily limits (in minutes).\n- Lets you add optional day-specific blocked time windows.\n- Automatically closes tabs when:\n  - the daily limit is exceeded, or\n  - the current time falls inside a blocked window.\n- Sends notifications when a site is blocked/closed.\n- Supports optional password protection for the Manage Time screen.\n\n## Screens in the popup\n\n- `Overview`: activity summary and chart.\n- `Manage Time`: list of configured sites, enable/disable controls, add/edit timers.\n- `Settings`: set or change password used to unlock Manage Time.\n\n## Permissions used\n\nThe extension requests:\n\n- `storage`: stores site rules, timer data, and password hash.\n- `tabs`: checks the current tab and closes blocked tabs.\n- `notifications`: notifies when a limit or blocked window is hit.\n\n## How enforcement works\n\n- A background service worker monitors tab updates, tab activation, and window focus changes.\n- Time is accumulated only while a tracked tab is active and the browser window is focused.\n- Rules are evaluated against current usage and current local time.\n- Tab-closing uses retry handling for transient Chrome tab-edit errors.\n\n## Password behavior\n\n- Passwords are hashed using SHA-256 before storage.\n- The hash is stored in extension storage; plaintext is not stored.\n- Manage Time access is session-unlocked after successful password entry.\n- Password recovery is not implemented; if forgotten, users may need to reinstall.\n\n## Data and migration\n\n- Current data is stored in `chrome.storage.sync`.\n- On first run, the extension attempts to migrate old data from `chrome.storage.local`.\n- Timer data is normalized to the current weekday-based bucket format.\n\n## Development\n\n### Requirements\n\n- Node.js 18+ (Node 20+ recommended)\n- npm\n\n### Install\n\n```sh\nnpm install\n```\n\n### Run dev server\n\n```sh\nnpm run dev\n```\n\n### Build extension\n\n```sh\nnpm run build\n```\n\nThis builds to `dist/`, copies `manifest.json`, and copies icon assets into `dist/images`.\n\n### Load in Chrome\n\n1. Open `chrome://extensions`.\n2. Enable Developer mode.\n3. Click Load unpacked.\n4. Select the `dist/` folder.\n\n### Useful scripts\n\n- `npm run type-check`: Vue/TypeScript checks.\n- `npm run lint`: ESLint auto-fix pass.\n- `npm run preview`: preview production build.\n\n## Project structure\n\n- `src/views`: popup pages (`Overview`, `Manage Time`, `Settings`, etc.).\n- `src/components`: reusable UI components (rows, chart, collapsibles, time blocks).\n- `src/Lib/background.ts`: background enforcement logic.\n- `src/Lib/Storage.ts`: storage reads/writes and initialization.\n- `src/Lib/Migration.ts`: migration and timer data normalization.\n- `manifest.json`: extension metadata and permissions.\n\n## Tech stack\n\n- Vue 3 + Vue Router\n- TypeScript\n- Vite\n- Chart.js (`vue-chartjs`)\n\n## Current version\n\n`6.0.0`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffemioladeji%2Fscreentime","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffemioladeji%2Fscreentime","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffemioladeji%2Fscreentime/lists"}