{"id":24838266,"url":"https://github.com/duckymomo20012/tracking-activities","last_synced_at":"2026-05-18T06:38:06.921Z","repository":{"id":39926578,"uuid":"384391940","full_name":"DuckyMomo20012/tracking-activities","owner":"DuckyMomo20012","description":"A program to monitor children's computer usage","archived":false,"fork":false,"pushed_at":"2022-08-19T14:59:51.000Z","size":81317,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-05T18:43:12.063Z","etag":null,"topics":["csharp","googledriveapi","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DuckyMomo20012.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-07-09T09:45:23.000Z","updated_at":"2022-04-09T03:58:57.000Z","dependencies_parsed_at":"2022-08-24T18:41:41.954Z","dependency_job_id":null,"html_url":"https://github.com/DuckyMomo20012/tracking-activities","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DuckyMomo20012/tracking-activities","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DuckyMomo20012%2Ftracking-activities","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DuckyMomo20012%2Ftracking-activities/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DuckyMomo20012%2Ftracking-activities/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DuckyMomo20012%2Ftracking-activities/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DuckyMomo20012","download_url":"https://codeload.github.com/DuckyMomo20012/tracking-activities/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DuckyMomo20012%2Ftracking-activities/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33167829,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-18T05:43:36.989Z","status":"ssl_error","status_checked_at":"2026-05-18T05:43:19.133Z","response_time":71,"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":["csharp","googledriveapi","python"],"created_at":"2025-01-31T06:10:03.550Z","updated_at":"2026-05-18T06:38:06.902Z","avatar_url":"https://github.com/DuckyMomo20012.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n  \u003ch1\u003eTracking Activities\u003c/h1\u003e\n\n  \u003cp\u003e\n    A program to monitor children's computer usage\n  \u003c/p\u003e\n\n\u003c!-- Badges --\u003e\n\u003cp\u003e\n  \u003ca href=\"https://github.com/DuckyMomo20012/tracking-activities/graphs/contributors\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/contributors/DuckyMomo20012/tracking-activities\" alt=\"contributors\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/last-commit/DuckyMomo20012/tracking-activities\" alt=\"last update\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/DuckyMomo20012/tracking-activities/network/members\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/forks/DuckyMomo20012/tracking-activities\" alt=\"forks\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/DuckyMomo20012/tracking-activities/stargazers\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/stars/DuckyMomo20012/tracking-activities\" alt=\"stars\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/DuckyMomo20012/tracking-activities/issues/\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/issues/DuckyMomo20012/tracking-activities\" alt=\"open issues\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/DuckyMomo20012/tracking-activities/blob/main/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/DuckyMomo20012/tracking-activities.svg\" alt=\"license\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch4\u003e\n    \u003ca href=\"https://github.com/DuckyMomo20012/tracking-activities/\"\u003eView Demo\u003c/a\u003e\n  \u003cspan\u003e · \u003c/span\u003e\n    \u003ca href=\"https://github.com/DuckyMomo20012/tracking-activities\"\u003eDocumentation\u003c/a\u003e\n  \u003cspan\u003e · \u003c/span\u003e\n    \u003ca href=\"https://github.com/DuckyMomo20012/tracking-activities/issues/\"\u003eReport Bug\u003c/a\u003e\n  \u003cspan\u003e · \u003c/span\u003e\n    \u003ca href=\"https://github.com/DuckyMomo20012/tracking-activities/issues/\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/h4\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n\u003c!-- Table of Contents --\u003e\n\n# :notebook_with_decorative_cover: Table of Contents\n\n- [About the Project](#star2-about-the-project)\n  - [Tech Stack](#space_invader-tech-stack)\n  - [Features](#dart-features)\n- [Getting Started](#toolbox-getting-started)\n  - [Prerequisites](#bangbang-prerequisites)\n  - [Run Locally](#running-run-locally)\n- [Usage](#eyes-usage)\n  - [Children Program](#baby-children-program)\n  - [Parent Program](#adult-parent-program)\n- [Contributing](#wave-contributing)\n  - [Code of Conduct](#scroll-code-of-conduct)\n- [FAQ](#grey_question-faq)\n- [License](#warning-license)\n- [Contact](#handshake-contact)\n- [Acknowledgements](#gem-acknowledgements)\n\n\u003c!-- About the Project --\u003e\n\n## :star2: About the Project\n\n\u003c!-- TechStack --\u003e\n\n### :space_invader: Tech Stack\n\n\u003cdetails\u003e\n  \u003csummary\u003eClient\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003ePython\u003c/li\u003e\n    \u003cli\u003eC#\u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003c!-- Features --\u003e\n\n### :dart: Features\n\n- **Children program:**\n\n  - Run in the background.\n  - Capture background, ~~and key loggers~~.\n  - Manage on-screen time for children (force computer shutdown).\n\n- **Parent program:**\n  - Manage captured pictures and send them to the Google Drive folder\n    via APIs.\n  - Require the user to create a folder called: \"**TrackingActivities**\" at the\n    root of Google Drive.\n\n\u003c!-- Getting Started --\u003e\n\n## :toolbox: Getting Started\n\n\u003c!-- Prerequisites --\u003e\n\n### :bangbang: Prerequisites\n\n- Python: `\u003e= 3.9`.\n\n- Operating system: `Windows`.\n\n  \u003e **Note**: This app only supports `Windows`. Currently not supporting `Linux`\n  \u003e and `macOS`.\n\n\u003c!-- Run Locally --\u003e\n\n### :running: Run Locally\n\nClone the project:\n\n```console\ngit clone https://github.com/DuckyMomo20012/tracking-activities.git\n```\n\nGo to the project directory:\n\n```console\ncd tracking-activities\n```\n\nChange directory to `parent_program` folder:\n\n```console\ncd src/parent_program\n```\n\nCreate a virtual environment:\n\n```console\npython -m venv .venv\n```\n\nActivate environment:\n\n```console\n.venv\\Scripts\\activate\n```\n\n\u003c!-- Usage --\u003e\n\n## :eyes: Usage\n\n\u003e **Warning**: This doc is updated after a long time unmaintained, so maybe\n\u003e there is some parts incorrect.\n\n\u003c!-- Children Program --\u003e\n\n### :baby: Children Program\n\n\u003e **Parent program must run first to prepare needed files!**\n\n- Setup autostart:\n\n  - Create **shortcut** for children's program\n\n    ![shortcut](https://i.imgur.com/qVDBxnf.png)\n\n  - Copy shortcut to directory: `C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp`\n\n    ![copy directory](https://i.imgur.com/bYxXEG5.png)\n\n- Login into the children's program:\n\n  - Parent password: `1234`\n  - Children password: `4321`\n\n\u003c!-- Parent Program --\u003e\n\n### :adult: Parent Program\n\n\u003e **Note**: **Parent program must run first to prepare needed files!**\n\n- Run parent program (require python and requirement libs is installed):\n\n  ```console\n  winRun.bat\n  ```\n\n- The parent program will prompt you to trust the program \"TrackingActivities\",\n  please **accept it**.\n\n- Parent program will require a password every time it runs, if you don't have\n  password, parent program will create file: `password.txt` (of parent program)\n\n  - Only when file `password.txt` is closed, then data uploaded to Google\n    Drive folder.\n\n    \u003e **Note**: User have to use **Notepad** to edit `password.txt` or other\n    \u003e files.\n\n  \u003e **Note**: If you forget the password, then go to the Google Drive folder\n  \u003e (TrackingActivities) and delete the file `password.txt`.\n\n- After login, login information is saved automatically, so users don't have to\n  authenticate next time.\n\n- Parent program features:\n\n  - **View history**: Parents can view **captured pictures** and **key loggers**\n    on both Google Drive and the `Downloads` folder (created in the children's\n    program).\n\n  - **Delete \"Downloads\" folder**: The parent can delete the entire `Downloads`\n    to save storage.\n\n  - **Logout**: The user can log out and use another account.\n\n  - **Exit**: Exit Parent program.\n\n  - **Edit activate.txt**: `activate.txt` timestamps, which allows children to\n    use computer.\n\n    - Only when file `activate.txt` is closed, then data uploaded to Google\n      Drive folder.\n\n    - Timestamps symbol (for `activate.txt`):\n\n      - `F` (from time): Start time\n      - `T` (to time): End time\n      - `S` (sum time):\n\n        - Total time allowed.\n        - Constraints: `0 \u003c S \u003c= T - F`.\n        - When `S` time is run out, even `T` is not run out -\u003e Computer still\n          shut down.\n\n      - `D` (duration time): total time till interrupt time (`I`).\n      - `I` (interrupt time): interrupt time till duration time (`D`)\n\n    - Valid timestamps:\n\n      ```\n      F06:00 T06:45\n      F07:30 T11:00 D60 I20 S150\n      F14:00 T17:50 D40 I10 S120\n      F18:00 T19:30 S60\n      F19:31 T21:30 S90\n      ```\n\n    - Constraints in brief:\n\n      ```\n      0 \u003c= I \u003c S\n      0 \u003c D \u003c= S\n      0 \u003c D + I \u003c= S\n      0 \u003c S \u003c= T - F\n      =\u003e 0 \u003c D + I \u003c= S \u003c= T - F\n      ```\n\n    - If the user inputs the wrong timestamp, the user will be warned and\n      retype.\n\n    - Timestamps will be automatically optimized step by step:\n\n      1. Check format\n      2. Sort lines\n      3. Remove duplicate and blank lines\n      4. Remove end line\n      5. Check conflict, check logic\n\n      \u003cdetails\u003e\n      \u003csummary\u003eMore timestamps examples\u003c/summary\u003e\n\n      ```\n      FORMAT:\n      F\u003ch1:m1\u003e T\u003ch2:m2\u003e\n      or\n      F\u003ch1:m1\u003e T\u003ch2:m2\u003eS\u003cmS\u003e\n      or\n      F\u003ch1:m1\u003e T\u003ch2:m2\u003e|D\u003cmD\u003e I\u003cmI\u003e|S\u003cmS\u003e\n      FORMULA:\n      0 \u003c= I \u003c S\n      0 \u003c D \u003c= S\n      0 \u003c D + I \u003c= S\n      0 \u003c S \u003c= T - F\n      =\u003e 0 \u003c D + I \u003c= S \u003c= T - F\n      OPTIMAL:\n      IF D == \"\" AND I == \"\" AND S == T - F:\n      Optimize from: F07:30 T09:30 D60 I0 S60 -\u003e to: F07:30 T09:30 S60\n      IF D != \"\" AND I != \"\" AND D == S AND I == 0:\n      Optimize from: F07:30 T09:30 S120 -\u003e to: F07:30 T09:30\n      VALID EXAMPLE:\n      F06:00 T06:45\n      F07:30 T11:00 D60 I20 S150\n      F14:00 T17:50 D40 I10 S120\n      F18:00 T19:30 S60\n      F19:31 T21:30 S90\n      ERROR:\n      - Format ERROR:\n          asdgasdg (Totally wrong)\n          F7:30 T06:30 (Missing one number)\n          F007:30 T06:30 (one number redundant)\n          F27:30 T06:30 (27 hours is invalid 😛)\n          F07:61 T06:30 (61 minutes is invalid)\n          A14:00 E17:50 J4 M10 Z120 (Wrong format!!!)\n          F-7:30 T06:30 (\"-\" is not valid)\n      - Logic ERROR:\n          F07:30 T06:30 (T \u003c F) -\u003e ERROR\n          F07:30 T09:30 D03 I58 S60 (D + I \u003e S) -\u003e ERROR\n          F07:30 T09:30 D61 I0 S60 (D \u003e S) -\u003e ERROR\n          F07:30 T09:30 D0 I0 S60 (D == 0) -\u003e ERROR\n          F07:30 T09:30 D1 I61 S60 (I \u003e S or D + I \u003e S) -\u003e ERROR\n          F07:30 T09:30 S121 (S \u003e T - F) -\u003e ERROR\n      - Conflict ERROR (F time this line must \"BIGGER\" than T time previous time):\n          F06:00 T06:45\n          F06:00 T06:45\n          (Same time) -\u003e ERROR\n          or:\n          F06:00 T06:45\n          F06:45 T06:52\n          (F line 1 equals T line 2) -\u003e ERROR\n          or:\n          F06:00 T06:45\n          F06:30 T07:30\n          (F line 1 smaller than T line 2) -\u003e ERROR\n      ```\n\n      \u003c/details\u003e\n\n\u003c!-- Contributing --\u003e\n\n## :wave: Contributing\n\n\u003ca href=\"https://github.com/DuckyMomo20012/tracking-activities/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=DuckyMomo20012/tracking-activities\" /\u003e\n\u003c/a\u003e\n\nContributions are always welcome!\n\n\u003c!-- Code of Conduct --\u003e\n\n### :scroll: Code of Conduct\n\nPlease read the [Code of Conduct](https://github.com/DuckyMomo20012/tracking-activities/blob/main/CODE_OF_CONDUCT.md).\n\n\u003c!-- FAQ --\u003e\n\n## :grey_question: FAQ\n\n- Is this project still maintained?\n\n  - No, but I will only update documentation.\n\n- Are you planning to support Linux and macOS in the future?\n\n  - No, we are not adding support for Linux and macOS any time soon (and most\n    likely never).\n\n\u003c!-- License --\u003e\n\n## :warning: License\n\nDistributed under MIT license. See\n[LICENSE](https://github.com/DuckyMomo20012/tracking-activities/blob/main/LICENSE)\nfor more information.\n\n\u003c!-- Contact --\u003e\n\n## :handshake: Contact\n\nDuong Vinh - [@duckymomo20012](https://twitter.com/duckymomo20012) - tienvinh.duong4@gmail.com\n\nProject Link: [https://github.com/DuckyMomo20012/tracking-activities](https://github.com/DuckyMomo20012/tracking-activities).\n\n\u003c!-- Acknowledgments --\u003e\n\n## :gem: Acknowledgements\n\nHere are useful resources and libraries that we have used in our projects:\n\n- [Awesome Readme Template](https://github.com/Louis3797/awesome-readme-template):\n  A detailed template to bootstrap your README file quickly.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduckymomo20012%2Ftracking-activities","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fduckymomo20012%2Ftracking-activities","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduckymomo20012%2Ftracking-activities/lists"}