Repository files navigation

DoubleNote

A note taking app focused on ease of use and user freedom.

This is a new project (currently in beta); its development status is far away from a 1.0 release.

To give it a try, see the master branch deployed here: https://DoubleNote.tanja.pw/ (powered by CloudFlare pages).
Notice: This is only the frontend served statically. Some (planned) features are only available using the backend server.

(Planned) Features

See the newest plans in the 5th iteration of the frontend README

  • Note-taking with both Markdown and WYSIWYG editors (ProseMirror)
  • Full offline support (Progressive Web App)
  • Peer-to-peer real-time collaboration (WebRTC, no backend server needed)
  • Git-like version control (commits, branches, tags, reused objects)
  • Two types of notebooks
    • Recursive categories with pages containing text boxes and free-hand drawing (like OneNote)
    • Sequential blocks with nested pages capable of special data and tables (like Notion)
  • Offline-capable import/export functionality (JSON)
  • Origin-agnostic migration support (for DoubleNote instances on different hosts)
  • Optional cloud storage (server-side software) with user accounts and shared permissions

Usage

If you want to try the application before installing via NPM or Docker, you can check it out here on CloudFlare Pages.

Both the frontend and the backend have their respective packages on NPM: doublenote-frontend (contains the compiled frontend without any non-dev dependencies), and the doublenote-backend, which contains the compiled backend (depending on Express).

Development

For more information on how to develop this application, push it beyond its current capabilities and realize your own features and/or bug fixes, see the development section of the frontend README.md

Further reading

For information about the frontend, see the frontend README.md.
For information about the backend, see the backend README.md.
For information about the doublenote NPM package, see the package README.md.

Licence & Copyright

Copyright (c) 2020-2023 Tanja-4732. All rights reserved.

AGPL v3: Free as in Freedom

DoubleNote is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

DoubleNote is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with DoubleNote. If not, see https://www.gnu.org/licenses/.

This project (including its source code and its documentation) is released under the terms of the GNU Affero General Public License.

About

(beta) - An Angular note taking app supporting both real-time and async collaboration using Markdown or a WYSIWYG editor, optimised for peer-to-peer usage with optional commit-based versioning

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from Tanja-4732/ts
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

DoubleNote

A note taking app focused on ease of use and user freedom.

This is a new project (currently in beta); its development status is far away from a 1.0 release.

To give it a try, see the master branch deployed here: https://DoubleNote.tanja.pw/ (powered by CloudFlare pages).
Notice: This is only the frontend served statically. Some (planned) features are only available using the backend server.

(Planned) Features

See the newest plans in the 5th iteration of the frontend README

  • Note-taking with both Markdown and WYSIWYG editors (ProseMirror)
  • Full offline support (Progressive Web App)
  • Peer-to-peer real-time collaboration (WebRTC, no backend server needed)
  • Git-like version control (commits, branches, tags, reused objects)
  • Two types of notebooks
    • Recursive categories with pages containing text boxes and free-hand drawing (like OneNote)
    • Sequential blocks with nested pages capable of special data and tables (like Notion)
  • Offline-capable import/export functionality (JSON)
  • Origin-agnostic migration support (for DoubleNote instances on different hosts)
  • Optional cloud storage (server-side software) with user accounts and shared permissions

Usage

If you want to try the application before installing via NPM or Docker, you can check it out here on CloudFlare Pages.

Both the frontend and the backend have their respective packages on NPM: doublenote-frontend (contains the compiled frontend without any non-dev dependencies), and the doublenote-backend, which contains the compiled backend (depending on Express).

Development

For more information on how to develop this application, push it beyond its current capabilities and realize your own features and/or bug fixes, see the development section of the frontend README.md

Further reading

For information about the frontend, see the frontend README.md.
For information about the backend, see the backend README.md.
For information about the doublenote NPM package, see the package README.md.

Licence & Copyright

Copyright (c) 2020-2023 Tanja-4732. All rights reserved.

AGPL v3: Free as in Freedom

DoubleNote is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

DoubleNote is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with DoubleNote. If not, see https://www.gnu.org/licenses/.

This project (including its source code and its documentation) is released under the terms of the GNU Affero General Public License.

About

(beta) - An Angular note taking app supporting both real-time and async collaboration using Markdown or a WYSIWYG editor, optimised for peer-to-peer usage with optional commit-based versioning

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from Tanja-4732/ts
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DoubleNote

A note taking app focused on ease of use and user freedom.

This is a new project (currently in beta); its development status is far away from a 1.0 release.

To give it a try, see the master branch deployed here: https://DoubleNote.tanja.pw/ (powered by CloudFlare pages).
Notice: This is only the frontend served statically. Some (planned) features are only available using the backend server.

(Planned) Features

See the newest plans in the 5th iteration of the frontend README

  • Note-taking with both Markdown and WYSIWYG editors (ProseMirror)
  • Full offline support (Progressive Web App)
  • Peer-to-peer real-time collaboration (WebRTC, no backend server needed)
  • Git-like version control (commits, branches, tags, reused objects)
  • Two types of notebooks
    • Recursive categories with pages containing text boxes and free-hand drawing (like OneNote)
    • Sequential blocks with nested pages capable of special data and tables (like Notion)
  • Offline-capable import/export functionality (JSON)
  • Origin-agnostic migration support (for DoubleNote instances on different hosts)
  • Optional cloud storage (server-side software) with user accounts and shared permissions

Usage

If you want to try the application before installing via NPM or Docker, you can check it out here on CloudFlare Pages.

Both the frontend and the backend have their respective packages on NPM: doublenote-frontend (contains the compiled frontend without any non-dev dependencies), and the doublenote-backend, which contains the compiled backend (depending on Express).

Development

For more information on how to develop this application, push it beyond its current capabilities and realize your own features and/or bug fixes, see the development section of the frontend README.md

Further reading

For information about the frontend, see the frontend README.md.
For information about the backend, see the backend README.md.
For information about the doublenote NPM package, see the package README.md.

Licence & Copyright

Copyright (c) 2020-2023 Tanja-4732. All rights reserved.

AGPL v3: Free as in Freedom

DoubleNote is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

DoubleNote is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with DoubleNote. If not, see https://www.gnu.org/licenses/.

This project (including its source code and its documentation) is released under the terms of the GNU Affero General Public License.

About

(beta) - An Angular note taking app supporting both real-time and async collaboration using Markdown or a WYSIWYG editor, optimised for peer-to-peer usage with optional commit-based versioning

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from Tanja-4732/ts
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DoubleNote

A note taking app focused on ease of use and user freedom.

This is a new project (currently in beta); its development status is far away from a 1.0 release.

To give it a try, see the master branch deployed here: https://DoubleNote.tanja.pw/ (powered by CloudFlare pages).
Notice: This is only the frontend served statically. Some (planned) features are only available using the backend server.

(Planned) Features

See the newest plans in the 5th iteration of the frontend README

  • Note-taking with both Markdown and WYSIWYG editors (ProseMirror)
  • Full offline support (Progressive Web App)
  • Peer-to-peer real-time collaboration (WebRTC, no backend server needed)
  • Git-like version control (commits, branches, tags, reused objects)
  • Two types of notebooks
    • Recursive categories with pages containing text boxes and free-hand drawing (like OneNote)
    • Sequential blocks with nested pages capable of special data and tables (like Notion)
  • Offline-capable import/export functionality (JSON)
  • Origin-agnostic migration support (for DoubleNote instances on different hosts)
  • Optional cloud storage (server-side software) with user accounts and shared permissions

Usage

If you want to try the application before installing via NPM or Docker, you can check it out here on CloudFlare Pages.

Both the frontend and the backend have their respective packages on NPM: doublenote-frontend (contains the compiled frontend without any non-dev dependencies), and the doublenote-backend, which contains the compiled backend (depending on Express).

Development

For more information on how to develop this application, push it beyond its current capabilities and realize your own features and/or bug fixes, see the development section of the frontend README.md

Further reading

For information about the frontend, see the frontend README.md.
For information about the backend, see the backend README.md.
For information about the doublenote NPM package, see the package README.md.

Licence & Copyright

Copyright (c) 2020-2023 Tanja-4732. All rights reserved.

AGPL v3: Free as in Freedom

DoubleNote is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

DoubleNote is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with DoubleNote. If not, see https://www.gnu.org/licenses/.

This project (including its source code and its documentation) is released under the terms of the GNU Affero General Public License.

About

(beta) - An Angular note taking app supporting both real-time and async collaboration using Markdown or a WYSIWYG editor, optimised for peer-to-peer usage with optional commit-based versioning

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from Tanja-4732/ts
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

DoubleNote

A note taking app focused on ease of use and user freedom.

This is a new project (currently in beta); its development status is far away from a 1.0 release.

To give it a try, see the master branch deployed here: https://DoubleNote.tanja.pw/ (powered by CloudFlare pages).
Notice: This is only the frontend served statically. Some (planned) features are only available using the backend server.

(Planned) Features

See the newest plans in the 5th iteration of the frontend README

  • Note-taking with both Markdown and WYSIWYG editors (ProseMirror)
  • Full offline support (Progressive Web App)
  • Peer-to-peer real-time collaboration (WebRTC, no backend server needed)
  • Git-like version control (commits, branches, tags, reused objects)
  • Two types of notebooks
    • Recursive categories with pages containing text boxes and free-hand drawing (like OneNote)
    • Sequential blocks with nested pages capable of special data and tables (like Notion)
  • Offline-capable import/export functionality (JSON)
  • Origin-agnostic migration support (for DoubleNote instances on different hosts)
  • Optional cloud storage (server-side software) with user accounts and shared permissions

Usage

If you want to try the application before installing via NPM or Docker, you can check it out here on CloudFlare Pages.

Both the frontend and the backend have their respective packages on NPM: doublenote-frontend (contains the compiled frontend without any non-dev dependencies), and the doublenote-backend, which contains the compiled backend (depending on Express).

Development

For more information on how to develop this application, push it beyond its current capabilities and realize your own features and/or bug fixes, see the development section of the frontend README.md

Further reading

For information about the frontend, see the frontend README.md.
For information about the backend, see the backend README.md.
For information about the doublenote NPM package, see the package README.md.

Licence & Copyright

Copyright (c) 2020-2023 Tanja-4732. All rights reserved.

AGPL v3: Free as in Freedom

DoubleNote is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

DoubleNote is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with DoubleNote. If not, see https://www.gnu.org/licenses/.

This project (including its source code and its documentation) is released under the terms of the GNU Affero General Public License.

About

(beta) - An Angular note taking app supporting both real-time and async collaboration using Markdown or a WYSIWYG editor, optimised for peer-to-peer usage with optional commit-based versioning

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from Tanja-4732/ts
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DoubleNote

A note taking app focused on ease of use and user freedom.

This is a new project (currently in beta); its development status is far away from a 1.0 release.

To give it a try, see the master branch deployed here: https://DoubleNote.tanja.pw/ (powered by CloudFlare pages).
Notice: This is only the frontend served statically. Some (planned) features are only available using the backend server.

(Planned) Features

See the newest plans in the 5th iteration of the frontend README

  • Note-taking with both Markdown and WYSIWYG editors (ProseMirror)
  • Full offline support (Progressive Web App)
  • Peer-to-peer real-time collaboration (WebRTC, no backend server needed)
  • Git-like version control (commits, branches, tags, reused objects)
  • Two types of notebooks
    • Recursive categories with pages containing text boxes and free-hand drawing (like OneNote)
    • Sequential blocks with nested pages capable of special data and tables (like Notion)
  • Offline-capable import/export functionality (JSON)
  • Origin-agnostic migration support (for DoubleNote instances on different hosts)
  • Optional cloud storage (server-side software) with user accounts and shared permissions

Usage

If you want to try the application before installing via NPM or Docker, you can check it out here on CloudFlare Pages.

Both the frontend and the backend have their respective packages on NPM: doublenote-frontend (contains the compiled frontend without any non-dev dependencies), and the doublenote-backend, which contains the compiled backend (depending on Express).

Development

For more information on how to develop this application, push it beyond its current capabilities and realize your own features and/or bug fixes, see the development section of the frontend README.md

Further reading

For information about the frontend, see the frontend README.md.
For information about the backend, see the backend README.md.
For information about the doublenote NPM package, see the package README.md.

Licence & Copyright

Copyright (c) 2020-2023 Tanja-4732. All rights reserved.

AGPL v3: Free as in Freedom

DoubleNote is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

DoubleNote is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with DoubleNote. If not, see https://www.gnu.org/licenses/.

This project (including its source code and its documentation) is released under the terms of the GNU Affero General Public License.

About

(beta) - An Angular note taking app supporting both real-time and async collaboration using Markdown or a WYSIWYG editor, optimised for peer-to-peer usage with optional commit-based versioning

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from Tanja-4732/ts
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DoubleNote

A note taking app focused on ease of use and user freedom.

This is a new project (currently in beta); its development status is far away from a 1.0 release.

To give it a try, see the master branch deployed here: https://DoubleNote.tanja.pw/ (powered by CloudFlare pages).
Notice: This is only the frontend served statically. Some (planned) features are only available using the backend server.

(Planned) Features

See the newest plans in the 5th iteration of the frontend README

  • Note-taking with both Markdown and WYSIWYG editors (ProseMirror)
  • Full offline support (Progressive Web App)
  • Peer-to-peer real-time collaboration (WebRTC, no backend server needed)
  • Git-like version control (commits, branches, tags, reused objects)
  • Two types of notebooks
    • Recursive categories with pages containing text boxes and free-hand drawing (like OneNote)
    • Sequential blocks with nested pages capable of special data and tables (like Notion)
  • Offline-capable import/export functionality (JSON)
  • Origin-agnostic migration support (for DoubleNote instances on different hosts)
  • Optional cloud storage (server-side software) with user accounts and shared permissions

Usage

If you want to try the application before installing via NPM or Docker, you can check it out here on CloudFlare Pages.

Both the frontend and the backend have their respective packages on NPM: doublenote-frontend (contains the compiled frontend without any non-dev dependencies), and the doublenote-backend, which contains the compiled backend (depending on Express).

Development

For more information on how to develop this application, push it beyond its current capabilities and realize your own features and/or bug fixes, see the development section of the frontend README.md

Further reading

For information about the frontend, see the frontend README.md.
For information about the backend, see the backend README.md.
For information about the doublenote NPM package, see the package README.md.

Licence & Copyright

Copyright (c) 2020-2023 Tanja-4732. All rights reserved.

AGPL v3: Free as in Freedom

DoubleNote is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

DoubleNote is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with DoubleNote. If not, see https://www.gnu.org/licenses/.

This project (including its source code and its documentation) is released under the terms of the GNU Affero General Public License.

About

(beta) - An Angular note taking app supporting both real-time and async collaboration using Markdown or a WYSIWYG editor, optimised for peer-to-peer usage with optional commit-based versioning

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from Tanja-4732/ts
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

DoubleNote

A note taking app focused on ease of use and user freedom.

This is a new project (currently in beta); its development status is far away from a 1.0 release.

To give it a try, see the master branch deployed here: https://DoubleNote.tanja.pw/ (powered by CloudFlare pages).
Notice: This is only the frontend served statically. Some (planned) features are only available using the backend server.

(Planned) Features

See the newest plans in the 5th iteration of the frontend README

  • Note-taking with both Markdown and WYSIWYG editors (ProseMirror)
  • Full offline support (Progressive Web App)
  • Peer-to-peer real-time collaboration (WebRTC, no backend server needed)
  • Git-like version control (commits, branches, tags, reused objects)
  • Two types of notebooks
    • Recursive categories with pages containing text boxes and free-hand drawing (like OneNote)
    • Sequential blocks with nested pages capable of special data and tables (like Notion)
  • Offline-capable import/export functionality (JSON)
  • Origin-agnostic migration support (for DoubleNote instances on different hosts)
  • Optional cloud storage (server-side software) with user accounts and shared permissions

Usage

If you want to try the application before installing via NPM or Docker, you can check it out here on CloudFlare Pages.

Both the frontend and the backend have their respective packages on NPM: doublenote-frontend (contains the compiled frontend without any non-dev dependencies), and the doublenote-backend, which contains the compiled backend (depending on Express).

Development

For more information on how to develop this application, push it beyond its current capabilities and realize your own features and/or bug fixes, see the development section of the frontend README.md

Further reading

For information about the frontend, see the frontend README.md.
For information about the backend, see the backend README.md.
For information about the doublenote NPM package, see the package README.md.

Licence & Copyright

Copyright (c) 2020-2023 Tanja-4732. All rights reserved.

AGPL v3: Free as in Freedom

DoubleNote is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

DoubleNote is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with DoubleNote. If not, see https://www.gnu.org/licenses/.

This project (including its source code and its documentation) is released under the terms of the GNU Affero General Public License.

About

(beta) - An Angular note taking app supporting both real-time and async collaboration using Markdown or a WYSIWYG editor, optimised for peer-to-peer usage with optional commit-based versioning

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from Tanja-4732/ts