{"id":13603230,"url":"https://github.com/penge/my-notes","last_synced_at":"2025-05-16T19:08:54.816Z","repository":{"id":36200852,"uuid":"222278547","full_name":"penge/my-notes","owner":"penge","description":"Simple and fast note-taking in Chrome with Google Drive support.","archived":false,"fork":false,"pushed_at":"2025-02-11T18:43:15.000Z","size":3624,"stargazers_count":251,"open_issues_count":8,"forks_count":35,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-12T18:53:43.528Z","etag":null,"topics":["chrome","chrome-extension","extension","google-drive-sync","new-tab","newtab","note-taking","note-taking-app","notes","notes-app","typescript"],"latest_commit_sha":null,"homepage":"https://chrome.google.com/webstore/detail/my-notes/lkeeogfaiembcblonahillacpaabmiop","language":"TypeScript","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/penge.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","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},"funding":{"custom":["https://www.buymeacoffee.com/penge"]}},"created_at":"2019-11-17T16:35:33.000Z","updated_at":"2025-04-03T05:53:55.000Z","dependencies_parsed_at":"2023-12-20T14:26:10.291Z","dependency_job_id":"1c6c8453-7403-430a-8e2b-66e3c4da6a63","html_url":"https://github.com/penge/my-notes","commit_stats":null,"previous_names":[],"tags_count":70,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/penge%2Fmy-notes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/penge%2Fmy-notes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/penge%2Fmy-notes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/penge%2Fmy-notes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/penge","download_url":"https://codeload.github.com/penge/my-notes/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254592395,"owners_count":22097013,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","extension","google-drive-sync","new-tab","newtab","note-taking","note-taking-app","notes","notes-app","typescript"],"created_at":"2024-08-01T18:01:58.289Z","updated_at":"2025-05-16T19:08:54.777Z","avatar_url":"https://github.com/penge.png","language":"TypeScript","readme":"\u003cp align=\"center\"\u003e\u003c/p\u003e\n\u003ch1 align=\"center\"\u003eMy Notes\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://badgen.net/github/release/penge/my-notes\" /\u003e\n  \u003cimg src=\"https://badgen.net/github/license/penge/my-notes\" /\u003e\n  \u003cimg src=\"https://badgen.net/chrome-web-store/users/lkeeogfaiembcblonahillacpaabmiop\" /\u003e\n  \u003cbr\u003e\u003cbr\u003e\n  \u003cimg src=\"public/images/my-notes.png\" width=\"760\" /\u003e\u003cbr\u003e\n  \u003cstrong\u003eMy Notes\u003c/strong\u003e – \u003ca href=\"https://chrome.google.com/webstore/detail/my-notes/lkeeogfaiembcblonahillacpaabmiop\"\u003eChrome extension\u003c/a\u003e for simple and fast note-taking\n\u003c/p\u003e\n\n\u003cbr\u003e\u003cbr\u003e\n\n## Features\n\n→ \u0026nbsp; Automatically saved and updated in every open tab ([How to open](#how-to-open))\n\n→ \u0026nbsp; Context menu to save selected text to note or My Notes in second computer ([Context menu](#context-menu))\n\n→ \u0026nbsp; Back up notes to Google Drive ([Google Drive Sync](#google-drive-sync))\n\n→ \u0026nbsp; Sync notes between My Notes and Google Drive, edit them from other devices or My Notes ([Google Drive Sync](#google-drive-sync))\n\n→ \u0026nbsp; Auto Sync notes to Google Drive ([Google Drive Sync](#google-drive-sync))\n\n→ \u0026nbsp; Drag and Drop image with automatic image upload to Google Drive ([Google Drive Sync](#google-drive-sync))\n\n→ \u0026nbsp; Toolbar (**Bold**, _Italic_, \u003cins\u003eUnderline\u003c/ins\u003e, etc.)\n\n→ \u0026nbsp; Themes (Light, Dark, Custom)\n\n→ \u0026nbsp; Keyboard shortcuts\n\n→ \u0026nbsp; Command palette ([Command palette](#command-palette))\n\n→ \u0026nbsp; Works offline\n\n\u003cbr\u003e\n\n## How to open\n\n**My Notes:**\n\n\u003col type=\"A\"\u003e\n  \u003cli\u003eClick on My Notes icon in Chrome Toolbar (pin the icon for quick access)\u003c/li\u003e\n  \u003cli\u003eUse keyboard shortcut (see \u003ccode\u003echrome://extensions/shortcuts\u003c/code\u003e)\u003c/li\u003e\n\u003c/ol\u003e\n\n**Options:**\n\n\u003col type=\"A\"\u003e\n  \u003cli\u003eClick on gear icon in bottom left corner\u003c/li\u003e\n  \u003cli\u003eRight-click on the pinned icon in Chrome Toolbar and select Options\u003c/li\u003e\n  \u003cli\u003eClick on three-dots icon next to My Notes in Chrome Toolbar and select Options\u003c/li\u003e\n  \u003cli\u003eUse keyboard shortcut (see Options)\u003c/li\u003e\n\u003c/ol\u003e\n\n\u003cbr\u003e\u003cbr\u003e\n\n## Context menu\n\nContext menu can be displayed on right-click on any website and based on the context used to quickly save:\n\n\u003col type=\"a\"\u003e\n  \u003cli\u003eselected text\u003c/li\u003e\n  \u003cli\u003ecurrent page URL (right-click on an empty space)\u003c/li\u003e\n  \u003cli\u003eimage\u003c/li\u003e\n\u003c/ol\u003e\n\nDestination can be any local note, or My Notes on other computers.\n\nOptions are based on the context but in general are:\n\n- `Save to [note name]` – Option for every note. My Notes doesn't have to be open. Google Drive Sync is not required.\n- `Save to remotely open My Notes` – My Notes on other computers needs to be open. The same Google Account needs to be used. Google Drive Sync is not required. The destination note will be named `@received`.\n\nThere is a few general purpose notes that can be used as destination. Their name starts with `@` and they are created automatically when needed:\n\n- `@received`\n- `@clipboard`\n- `@images`\n\n\u003cbr\u003e\u003cbr\u003e\n\n## Custom theme\n\nCustom theme allows you to customize My Notes styles in many ways.\n\nTo use a Custom theme, open Options, select **\"Custom\"** theme, and click on the **\"Customize\"** button to start creating your own theme.\n\nTo start, either copy and paste into the editor the content of [light.css](public/themes/light.css) or [dark.css](public/themes/dark.css), or use CSS `@import` to import the theme you would like your Custom theme to be based on.\n\nThen, modify CSS variables as you like to change background colors, text colors, etc.\nYou can add any valid CSS as well to make further changes.\n\nClick on the **\"Save\"** button to save the Custom theme.\n\n\u003cbr\u003e\u003cbr\u003e\n\n## Command palette\n\nCommand palette is a window which you can open with `Cmd + P` (or `Ctrl + P`) and use your keyboard to quickly find \u003cb\u003ecommands,\u003c/b\u003e and execute one.\n\nTo navigate between the commands, use `Up` and `Down` arrow keys.\n\nTo execute a selected command, press `Enter`.\n\nThe last executed command can be repeated with `Cmd + Shift + P` (or `Ctrl + Shift + P`).\n\n\u003cbr\u003e\u003cbr\u003e\n\n## Google Drive Sync\n\nGoogle Drive Sync (see Options) saves your notes to your personal Google Drive and synchronizes the changes between your local My Notes and your Google Drive every time you click on the \"Sync now\" button (bottom left corner).\n\n**Why sync:**\n\n- Having a backup of your notes (notes can be restored)\n- Can edit notes from other sources (Google Drive, My Notes, vice versa)\n- Can sync notes and edit them from other computers (by installing My Notes and using the same Google Account)\n\n### Location\n\nNotes are uploaded to your Google Drive under the folder \"My Notes\". This folder is created automatically.\nIf the folder exists from a previous installation, notes are downloaded and uploaded and the synchronization continues.\n\n### Synchronization\n\nSynchronization works both ways — to Google Drive, from Google Drive.\n\nNotes are synchronized every time you click on the \"Sync now\" button.\nWhile the synchronization is in progress, \"Sync now\" button will spin.\n\"Sync now\" button has a tooltip that shows the time of the most recent synchronization.\n\n### Auto Sync\n\nAuto Sync (see Options) can automatically sync your notes to and from Google Drive every time you open My Notes, and every 6 seconds if your local notes were updated since the last sync.\n\n### Image upload\n\nWhen Google Drive Sync is enabled and having an internet connection, you can Drag and Drop one image at a time into a note. Each image is immediately uploaded to your Google Drive under \"My Notes\" / \"assets\" folder, which is created automatically.\n\n### Access\n\nMy Notes can only access the folder \"My Notes\" it created, and files it created inside this folder.\nIt cannot see, access nor modify, any other files in your Google Drive.\n\n\u003cbr\u003e\u003cbr\u003e\n\n## Tips and tricks\n\n1. Set a keyboard shortcut to quickly open My Notes (e.g. `Cmd + Shift + M`), which you can set on page `chrome://extensions/shortcuts`. If you make the keyboard shortcut Global, it will open My Notes even when Google Chrome is closed.\n2. Check keyboard shortcuts (open Options) on how to quickly do some actions.\n3. Use `Cmd + Shift + V` (or `Ctrl + Shift + V`) to paste text in a plain format (without formatting).\n4. Hide Toolbar and Sidebar if you prefer a simple interface. You can use keyboard shortcuts to do so, or use [Command palette](#command-palette).\n5. See [Google Fonts](https://fonts.google.com) for a font you like, write its name into My Notes Options to use it.\n6. Note name is present in the URL, therefore you can save it to bookmarks for quick access. If you append saved URL with `\u0026focus`, it will always open that note in Focus mode (Sidebar hidden, Toolbar hidden).\n7. Use [Context menu](#context-menu) to transfer selected text to My Notes on other computers.\n8. Use [Custom theme](#custom-theme) to customize the look of My Notes in any way needed.\n9. Drag and Drop selected text onto a note's name in the Sidebar to insert the text into the note.\n10. Drag and Drop a TXT or HTML file anywhere in the bottom icon area of the Sidebar to import the file as a new note.\n11. Drag the Sidebar line to resize the Sidebar. Double-click on the Sidebar line to restore the original Sidebar width.\n12. Hold down `Cmd` (or `Ctrl`) and move mouse wheel (or touchpad) up and down over the image to resize it. Double-click on the image to restore its original size.\n13. Hold down `Cmd` (or `Ctrl`) and right-click anywhere in the table for a context menu, where you can align the table (Left, Center, Right).\n\n\u003cbr\u003e\u003cbr\u003e\n\n## How to contribute\n\n1. Share your feedback (what to improve, what to change) under [Issues](https://github.com/penge/my-notes/issues) or join the discussion in [Discussions](https://github.com/penge/my-notes/discussions).\n2. Join the development.\n3. Help to test the upcoming version (to get feedback, to improve or tweak).\n4. Help to improve the documentation.\n5. [Buy Me a Coffee](https://www.buymeacoffee.com/penge).\n\n\u003cbr\u003e\u003cbr\u003e\n\n## How to develop\n\nDevelop:\n\n```\n$ npm install\n$ export MY_NOTES_CLIENT_ID=\u003cCLIENT_ID\u003e    # needed when developing Google Drive Sync\n$ npm run develop-watch                    # see \"dist\" folder\n```\n\n`MY_NOTES_CLIENT_ID` can be created at [Google Cloud](https://console.cloud.google.com) / APIs \u0026 Services / Credentials / OAuth 2.0 Client IDs.\n\nCode check:\n\n```\n$ npm run lint\n```\n\nTests:\n\n```\n$ npm test\n```\n\nBuild:\n\n```\n$ npm run build   # see \"dist\" folder\n```\n\n\u003cbr\u003e\u003cbr\u003e\n\n## Folder structure\n\n```\nenv/              # Environment helpers\n\ndist/             # Bundled My Notes (excluded from Git)\n\nsrc/\n  background/\n    google-drive/   # Everything related to Google Drive Sync\n                      # - File operations (List, Create, Get, Update, Delete)\n                      # - Synchronization (to Google Drive, from Google Drive)\n                      # - Queries (find My Notes folder, list files in My Notes folder)\n                      # - Multipart bodies (create My Notes folder, create file, update file)\n                      # - Tests\n\n    init/           # Run when My Notes is installed/updated\n                      # - Sets a Unique ID for My Notes installation (used by Context menu), if not already set\n                      # - Migrates notes and options\n                      # - Creates Context menu and attaches the events\n                      # - Creates a Notification when My Notes is installed/updated\n                      # - Registers the ways to open My Notes (icon click, keyboard shortcut)\n                      # - Registers events to trigger Google Drive Sync from My Notes\n\n  i18n/             # Internationalization (English)\n\n  integration/      # Integration tests for Google Drive Sync\n\n  notes/            # Everything related to Notes\n                      # - Note editing, Note saving\n                      # - Sidebar\n                      # - Toolbar\n\n  options/          # Everything related to Options\n                      # - Font\n                      # - Theme (Light, Dark, Custom)\n                      # - Shortcuts\n                      # - Google Drive Sync\n                      # - Export \u0026 Import\n\n  shared/           # Everything common (used at more places)\n                      # - Date formatting (Last sync)\n                      # - Managing the permissions (Requesting, Removing, Checking)\n                      # - Helpers for Chrome Storage\n                      # - Default values (Notes, Options)\n\n  svg/              # SVG images for Toolbar\n\n  themes/           # Light, Dark, Custom\n\n  background.ts     # Main script for service worker\n  notes.ts          # Main script for notes\n  options.ts        # Main script for options\n  template.html     # Template for notes.html and options.html\n\npublic/             # All public files (images, icons, HTML, CSS) copied to dist/\n\n\n.editorconfig     # To enforce same editor configuration\n.eslintrc         # To enforce code quality and same coding style with ESLint\n.eslintignore     # Files excluded from ESLint checking\n.gitignore        # Files excluded from Git\n\njest.config.ts    # Jest configuration\njest.setup.ts     # Jest setup\ntsconfig.json     # TypeScript configuration\n\npackage-lock.json\npackage.json\n\nLICENSE           # MIT\nmanifest.json     # Main extension file\n\nregister.js       # Uses ts-node/esm to resolve build.ts\nbuild.ts          # Produces dist/ folder\n\nREADME.md\n```\n\n\u003cbr\u003e\u003cbr\u003e\n\n## Browser support\n\nMy Notes has full support for Google Chrome only. Although it may be possible to install it in other browsers, the support is not complete.\n\nSupport for other Chromium-based browsers will be added if possible.\n\n\u003cbr\u003e\u003cbr\u003e\n\n## Security and Privacy\n\nMy Notes doesn't collect any personal information or data.\nAll your notes are stored locally in your browser.\nIf you use Google Drive Sync, My Notes can back up the notes to your personal Google Drive.\n\nTo provide Google Drive functionality, My Notes has an application in Google Cloud.\nThe sole purpose of this application is to authenticate you securely towards Google Drive and to allow the synchronization of notes.\n\n\u003cbr\u003e\u003cbr\u003e\n\n## Permissions\n\nMy Notes has the permissions listed in `manifest.json`.\n\n**Required:**\n\n- `\"storage\"` — used to save your notes and options to Chrome Storage (locally in your Chrome)\n- `\"unlimitedStorage\"` — used to increase the default storage limit (which is 5MB)\n- `\"contextMenus\"` — used to create My Notes Context menu\n- `\"notifications\"` — used to show a Chrome notification (when Context menu was used)\n\nRequired permissions are shown to the user before installing the extension, and are needed at all times to provide the basic functionality.\n\n**Optional:**\n\n- `\"identity\"` — needed for \"Enable Google Drive Sync\" (see Options)\n\nOptional permissions are needed only to provide additional functionality that can be enabled via a checkbox in Options.\n\nUser has the choice to either approve or deny the permissions.\n\n\u003cbr\u003e\u003cbr\u003e\n\n## QA\n\n**1. Where is My Notes published? What is the process behind publishing My Notes?**\n\nMy Notes is published on [Web Store](https://chrome.google.com/webstore/detail/my-notes/lkeeogfaiembcblonahillacpaabmiop), a store for Google Chrome extensions.\nWhen publishing a new version, I first make a [new release](https://github.com/penge/my-notes/releases) here on GitHub.\nThen I create a build of the new release and send it to Web Store for a review.\nThe review usually takes between 24 hours and a few days.\nAfter a successful review, the new version is available on Web Store.\n\n\u003cbr\u003e\n\n**2. Can I install My Notes manually by downloading it from GitHub?**\n\nYes, My Notes can be installed manually by downloading it from GitHub, but keep in mind, that Google Drive Sync works only if My Notes is installed from [Web Store](https://chrome.google.com/webstore/detail/my-notes/lkeeogfaiembcblonahillacpaabmiop).\nTo install My Notes manually, download the zip file of the latest version which you can find [here](https://github.com/penge/my-notes/releases). Then, unpack the downloaded file and install NPM packages followed by `npm run build`.\nFinally, open `chrome://extensions` address in Google Chrome and click the **\"Load unpacked\"** button to load the unpacked extension from your drive by selecting the `dist` folder.\n\n\u003cbr\u003e\n\n**3. Why isn't Google Drive Sync working?**\n\nGoogle Drive Sync works only if My Notes is installed from Web Store on Google Chrome.\nThere are two reasons for this.\nFirst, Google Chrome provides an \"identity\" API that My Notes relies on.\nSecondly, for security reasons, Google Drive Sync works only if My Notes has an ID equal to **\"lkeeogfaiembcblonahillacpaabmiop\"**, which is the ID it has on Web Store (also in the URL).\nWhen My Notes is installed manually, it gets an ID that is different to the one on Web Store.\n\n\u003cbr\u003e\n\n**4. What browsers and operating systems are supported?**\n\nCurrently, only Google Chrome is supported.\nOther Chromium-based browsers are next to come, if possible.\nCommon OS's (Windows, Linux, macOS) are supported.\nChromebooks are supported as well.\n\n\u003cbr\u003e\n\n**5. How can I open or edit notes from my phone?**\n\nIf Google Drive Sync is enabled, My Notes will sync your notes to/from your personal Google Drive into a folder called **\"My Notes\"**.\n\nTo get access to your Google Drive from a phone, install the Google Drive app.\nTo open the note, click on it from the list in the folder.\nTo edit the note, click on the overflow menu (the three-circle icon) next to the note, and select \"Open with\" from the context menu.\nYou can then choose a preferred editor from the list.\n\n\u003cbr\u003e\n\n**6. What is the size limit for my notes?**\n\nNotes are _NOT_ limited in size with the addition of `\"unlimitedStorage\"` permission.\n\n\u003cbr\u003e\n\n**7. (Google Drive) Where are images uploaded?**\n\nImages are uploaded to your personal Google Drive under the folder My Notes / assets. The folder **\"assets\"** is created automatically when needed.\n\n\u003cbr\u003e\n\n**8. (Google Drive) Are images stored privately?**\n\nYes, only you can see the images. If you'd like to share the image(s) publicly or with someone specific, use the **Share** button in Google Drive.\n\n\u003cbr\u003e\n\n**9. (Google Drive) Are images deleted from my Google Drive after I remove them from a note?**\n\nNo, images continue to be stored in your Google Drive for future use. This way images don't have to be uploaded again.\nIf you'd like to delete an image permanently, delete the image in Google Drive.\n\n\u003cbr\u003e\n\n**10. (Google Drive) How can I reuse a previously uploaded image after I have removed it from a note?**\n\nGo to your Google Drive, find the image you'd like to insert, right-click on the image and click on \"Get link\".\nCopy the link and paste it into My Notes using the \"Insert Image\" button.\n\n\u003cbr\u003e\n\n**11. Is My Notes free?**\n\nMy Notes is open source, free to download, install, and use.\nThe recommended way to install My Notes is from [Web Store](https://chrome.google.com/webstore/detail/my-notes/lkeeogfaiembcblonahillacpaabmiop).\n\n\u003cbr\u003e\u003cbr\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\u003ccode\u003eCreated with ❤ in 2019.\u003c/code\u003e\u003c/p\u003e\n","funding_links":["https://www.buymeacoffee.com/penge"],"categories":["TypeScript","chrome-extension"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpenge%2Fmy-notes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpenge%2Fmy-notes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpenge%2Fmy-notes/lists"}