{"id":22843467,"url":"https://github.com/milahu/browserforge","last_synced_at":"2026-02-01T01:33:26.126Z","repository":{"id":109859311,"uuid":"569656852","full_name":"milahu/browserforge","owner":"milahu","description":"run github + github-pages + codesandbox in your browser, offline-first - CONCEPT","archived":false,"fork":false,"pushed_at":"2023-03-07T09:58:32.000Z","size":199,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-06-14T11:06:57.863Z","etag":null,"topics":["browser-app","browser-based","collaboration","concept","contenteditable","contextual-editing","dokieli","dweb","edit-this-page","editable-documents","editable-websites","git-aggregator","git-based-cms","inplace-edit","inplace-editing","nocloud","offline-first","open-authoring","self-replicating","visual-editing"],"latest_commit_sha":null,"homepage":"","language":null,"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/milahu.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}},"created_at":"2022-11-23T10:23:16.000Z","updated_at":"2024-09-24T04:22:41.000Z","dependencies_parsed_at":"2023-04-12T17:47:51.312Z","dependency_job_id":null,"html_url":"https://github.com/milahu/browserforge","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/milahu/browserforge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milahu%2Fbrowserforge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milahu%2Fbrowserforge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milahu%2Fbrowserforge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milahu%2Fbrowserforge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/milahu","download_url":"https://codeload.github.com/milahu/browserforge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milahu%2Fbrowserforge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28963913,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T01:25:30.373Z","status":"ssl_error","status_checked_at":"2026-02-01T01:25:29.809Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["browser-app","browser-based","collaboration","concept","contenteditable","contextual-editing","dokieli","dweb","edit-this-page","editable-documents","editable-websites","git-aggregator","git-based-cms","inplace-edit","inplace-editing","nocloud","offline-first","open-authoring","self-replicating","visual-editing"],"created_at":"2024-12-13T02:14:56.850Z","updated_at":"2026-02-01T01:33:26.120Z","avatar_url":"https://github.com/milahu.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# browserforge\n\nhtml files are inplace-editable documents like [dokieli](https://github.com/linkeddata/dokieli)\nwhich can be shared over peer-to-peer networking (wifi, bluetooth, sneakernet)\n\neverything runs in the browser\n\n## status\n\nconcept\n\n### implementations\n\n* https://github.com/happyborg/p2p-git-portal-poc - collaboration app, no backend\n* https://github.com/MichaelMure/git-bug - store issues in git\n* https://github.com/tinacms/tinacms - content management system with visual editing (inplace editing)\n* https://github.com/linkeddata/dokieli - client side editor, but i want \"dokieli with git backend\"\n* https://github.com/solid/specification - federated web hosting, but i want \"solid pods with git backend\"\n* https://github.com/isomorphic-git/isomorphic-git#who-is-using-isomorphic-git\n  * https://github.com/mizchi/next-editor - https://next-editor.app/ - 300 stars - last update 2020\n  * https://github.com/wmhilton/nde - https://wmhilton.com/nde/ - https://nde.now.sh/ - broken - 80 stars - last update 2018\n  * https://github.com/wmhilton/git-apps - https://git-app-manager.now.sh/ - broken - 0 stars - last update 2017\n\n## specs\n\n### inplace-editing\n\ndocument is a html page\nby default, it is read-only (not editable)\nwhen i click \"edit\" then load the editor\n= make the document editable \\*in place\\* = no page reload\n\n### offline first\n\naka: local-first, dweb, nocloud, nobackend\n\nhttps://github.com/topics/offline-first\nhttps://github.com/topics/local-first\nhttps://github.com/topics/dweb\nhttps://github.com/topics/dapp\n\nbecause ...\n\n[There is no cloud, it’s just someone else’s computer](https://www.chriswatterston.com/article/success-of-my-there-is-no-cloud-sticker)\n\n![There is no cloud, it’s just someone else’s computer](there-is-no-cloud.jpg)\n\n#### workflow\n\nlike on github: fork, branch, edit, commit, merge\n\nthe user's \"first impression\" is the rendered html file,\nbecause documents are \"read often\" or \"mostly read\"\n\nwhen the user wants to make a change,\nthe \"editing experience\" should be instant,\nso the user does not forget his idea.\n\nto edit the page, click the \"edit this page\" button, and edit.\nthe details of the edit process (fork, branch, edit, commit, merge) come later.\nbut the \"first edit\" is persistent across page reloads, so dont worry about data loss.\n\nthe user can fork before editing, but its not a hard requirement,\nto make editing as \"instant\" and \"inplace\" as possible.\n\nwhen the first edit is done, its time to fork, branch, commit.\n\nfork: download the full repo to the browser (filesystem api or indexeddb).\nthis must be independent of the original URL, so we must install as browser app.\n\n\u003e window.showOpenFilePicker()\n\n\u003cdetails\u003e\n\u003csummary\u003e\nfilesystem api\n\u003c/summary\u003e\n\nhttps://web.dev/file-system-access/\n\nThe entry point to the File System Access API is window.showOpenFilePicker().\nWhen called, it shows a file picker dialog box, and prompts the user to select a file.\n\nWe have developed a library called [browser-fs-access](https://github.com/GoogleChromeLabs/browser-fs-access)\nthat uses the File System Access API wherever possible\nand that falls back to these next best options in all other cases.\n\nOpening a directory and enumerating its contents\n\nTo enumerate all files in a directory, call showDirectoryPicker(). The user selects a directory in a picker, after which a FileSystemDirectoryHandle is returned, which lets you enumerate and access the directory's files. By default, you will have read access to the files in the directory, but **if you need write access, you can pass { mode: 'readwrite' } to the method**.\n\n\u003c/details\u003e\n\nnow the app can work offline: browser other pages, edit pages, branch/commit/rebase\n\non future page loads, the app will ask \"do you want to fetch updates?\"\n\nupdates are merged with local changes.\nuse either the simple conflict-resolution of git,\nor a the complex conflict-resolution of CRDT (yjs, automerge, ...).\nthe problem with CRDT is, it needs lots of memory to store ALL the changes (character-based diff)\n\nalso handle schema migrations\n\n##### self-modifying code\n\ncode and data - both can be modified with this system,\nso it can be called \"self-modifying code\" (in a good sense, a \"good virus\")\nmore precise a \"self-modifying browser-app\"\n\nhttps://www.i-programmer.info/programming/javascript/989-javascript-jems-self-modifying-code.html\n\n#### pazguille/offline-first\n\nhttps://github.com/pazguille/offline-first\nEverything you need to know to create offline-first web apps\n\n### html first\n\njavascript is optional\nno build steps, no SSR, no markdown\n\n\"html is the mother language\" -- rich harris, svelte\n\nmarkdown can be derived from html\n\nbrowser first, native second https://jasonette.com/\n\n#### qwik framework\n\nhttps://github.com/BuilderIO/qwik - 14K stars\n\nThe HTML-first framework. Instant apps of any size with ~ 1kb JS\n\nhttps://qwik.builder.io/playground/\n\nqwik playground source: https://github.com/BuilderIO/qwik/tree/main/packages/docs/src/repl\n\nui framework should be \"SSR by default\" like qwik\nto produce static html pages, which run without javascript.\noptional javascript dependencies are lazy-loaded (on demand) to reduce memory footprint of the app\n\n##### builder.io\n\nhttps://github.com/BuilderIO/builder - 4K stars\n\nhttps://builder.io/demo\n\nDrag and drop Visual CMS for React, Vue, Angular, and more\n\nIntegrate with any site or app. Drag and drop with the components already in your codebase.\n\nsee also\n\n- https://github.com/primodotso/primo - https://primo.so/ - 500 stars - javascript - visual CMS, based on: svelte, prosemirror. Primo is a component-based CMS that makes it easy to build visually-editable static sites\n\n#### htmlgoddess\n\nhttps://github.com/jonascript/htmlgoddess\n\nA static site generator to code like its 1999\n\nno javascript, only html + css\n\n#### html as data exchange format\n\nhtml is useful as a data exchange format\nbetween mobile devices\n\ndata flow:\n\n- click on \"export app\" -\u003e this will download all data to a single html file\n- this html file is sent to the other device\n- on the other device, open the html file\n- this will install the app to the other device\n\nhtml template:\n\n```html\n\u003chtml\u003e\n\u003cbody\u003e\n\n\u003cscript\u003e\nconsole.time(\"parse html\");\n\u003c/script\u003e\n\n\u003cdiv\u003ehello ...\u003c/div\u003e\n\n\u003cpre style=\"display:none\" id=\"packfile\"\u003e\nUEFDSwAAAAIAABQFkw14nJXLQQrDIBBA0b2nmH2hjHU0DpTSZTc9hI5jE4hJCOb+TY/Q5fvw+64K\nEaUKsi9RBsbgfYxUQrmJkji1pNlFSTWbLe26dFCnjvKtMglqKox+COjQWqrM2eZK7BAxm3T0cd3h\nPc1pgddPcG8nxuP5aWmar7K2B9gQ2CIjE1zQIpqztql3/f80x2a+AzI+TZ4NeJyNy0EKwjAQheF9\nTpG9VGaStM6AiEs3HmKaTGzBtKWk9zeCB3D5P95Xd1XrUxzJkyoTSgJOpOQ1955i1qgQcuaRM5tN\n...\n20 MByte of base64 data\n...\n\u003c/pre\u003e\n\n\u003cdiv\u003e... world\u003c/div\u003e\n\n\u003cscript\u003e\nconsole.timeEnd(\"parse html\");\n\nconsole.time(\"get innerHTML\");\nvar packfile = document.querySelector(\"#packfile\").innerHTML\nconsole.timeEnd(\"get innerHTML\");\n\nconsole.time(\"decode base64\");\npackfile = atob(packfile);\nconsole.timeEnd(\"decode base64\");\n\u003c/script\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n```\n\nbenchmark in chrome on a cheap laptop:\n\n```\nparse html: 769.47216796875 ms\nget innerHTML: 865.382080078125 ms\ndecode base64: 1356.555908203125 ms\n```\n\nthe base64 data is generated by\n\n```sh\ngit gc\n# now there is only 1 pack file\ncat .git/objects/pack/*.pack | base64 \u003e\u003epack.html \n```\n\n## based on\n\nthis is a fusion of multiple tools\n\n### editable html files\n\n- https://github.com/linkeddata/dokieli\n  - backend: https://solidproject.org/\n- https://github.com/LivelyKernel/LivelyKernel - browser-based runtime and development environment that makes creation of (Web) applications much more immediate and direct. All development happens \"live\", i.e. you change your application and the system while it is running\n- IPFS-based\n  - This single-page web app can edit itself\n    - https://medium.com/textileio/this-single-page-web-app-can-edit-itself-62734dac2700\n      - https://laptrinhx.com/this-single-page-web-app-can-edit-itself-667783868/\n    - https://github.com/ipfs/js-ipfs\n    - https://github.com/carsonfarmer/profile-app\n    - https://github.com/textileio/dapp-template\n- https://www.pagecloud.com/blog/how-to-edit-your-website\n  - `document.body.contentEditable = 'true'; document.designMode='on';`\n\n### web desktop\n\naka: web based operating system\n\nhttps://github.com/syxanash/awesome-web-desktops\n\n#### svelte\n\nhttps://github.com/puruvj/macos-web - 2K stars - macOS Web written in Svelte\n\n#### react\n\nhttps://github.com/blueedgetechno/win11React - 7K stars - Windows 11 in React\n\nhttps://github.com/DustinBrett/daedalOS - 6K stars - Desktop environment in the browser. \n\nhttps://github.com/Renovamen/playground-macos - 3K stars - My portfolio website simulating macOS's GUI, developed with React and UnoCSS.\n\nhttps://github.com/vivek9patel/vivek9patel.github.io - 3K stars - Personal portfolio website of theme Ubuntu 20.04, made using NEXT.js \u0026 tailwind CSS\n\nhttps://github.com/piyushsuthar/windows-11-web - 500 stars\n\n#### vue\n\nhttps://github.com/GoodManWEN/GoodManWEN.github.io - 1K stars - A website simulating linux system's GUI, using theme of Deepin distro.\n\nhttps://github.com/DonChiaQE/win95 - 100 stars - Windows 95 Portfolio built with Vue.js\n\n#### other\n\nhttps://github.com/os-js/OS.js - 6K stars - OS.js - JavaScript Web Desktop Platform. based on Hyperapp, an \"ultra-lightweight **Virtual DOM**, highly-optimized diff algorithm, and state management library\" (Virtual DOM is a bug ...)\n\nhttps://github.com/dahliaOS/pangolin_desktop - 2K stars - Pangolin Desktop UI shell, designed for dahliaOS, written in Flutter.\n\nhttps://github.com/KilledByAPixel/OS13k - 500 stars - A Tiny OS and Mini Game Engine - 13 KByte\n\nhttps://github.com/Manthee1/linuxWeb - 100 stars - Linux... but simulated on your web browser.\n\n### web unix\n\n- https://github.com/plasma-umass/browsix - https://browsix.org/ - 3K stars - Browsix is a Unix-like operating system for the browser.\n- https://news.ycombinator.com/item?id=13151566\n  - https://github.com/runtimejs/runtime - https://github.com/runtimejs-comm/runtime - operating system (unikernel) for the cloud\n  - https://bellard.org/jslinux/ - Run Linux or other Operating Systems in your browser!\n\nhttps://news.ycombinator.com/item?id=13153258\n\n\u003e Browsix is not an interpreter. Browsix provides a shared kernel and primitives like system calls to _existing_ interpreters and runtimes that target JavaScript.\n\u003e\n\u003e For example, we extended both the GopherJS and Emscripten compilers and runtimes to talk to our shared kernel, so that processes written in C and Go can run in parallel (on separate Web Workers) and communicate over pipes, sockets and the filesystem in the browser (much like they can in a standard Unix environment).\n\nhttps://news.ycombinator.com/item?id=13159090\n\n\u003e JSLinux is a tremendous feat of engineering.\n\u003e\n\u003e If you want to run realistic programs in the browser (and not just technology demos), WebAssembly, asm.js, and compilation to JavaScript in general is the way to go. WebAssembly can easily execute within a factor of 2 of optimized GCC binaries, whereas JSLinux is ~80x slower.\n\u003e\n\u003e Paired with compilers like Emscripten and GopherJS Browsix has the potential to be a relatively fast and lightweight solution to running legacy code in the browser in a way that integrates with existing tools for web UIs.\n\n#### wasm\n\n- https://rreverser.com/webassembly-shell-with-a-real-filesystem-access-in-a-browser/\n- https://github.com/jprendes/emception - Run Emscripten in the browser\n\n#### terminal emulators\n\n- https://github.com/xtermjs/xterm.js - 14K stars\n  - https://github.com/wavesoft/local-echo - 100 stars - A local-echo controller for xterm.js\n- https://github.com/sdllc/cmjs-shell - 5 stars (underrated) - Command shell based on CodeMirror. javascript repl. syntax highlighting. all text (input + output) is rendered in CodeMirror\n\n\u003cdetails\u003e\n\n- https://github.com/Gottox/terminal.js - 500 stars\n- https://github.com/os-js/osjs-xterm-application - xterm app for os.js, client side: xterm.js. server side: powershell.exe or bash\n- https://www.npmjs.com/package/xterm-browser\n- https://www.npmjs.com/package/seeelaye\n- https://www.npmjs.com/package/ttty\n- https://github.com/chjj/term.js - 1K stars\n- https://github.com/finseth/bash - terminal emulator. no commands\n\n\u003c/details\u003e\n\n#### bash interpreters\n\n- https://github.com/nfischer/shelljs-transpiler - 70 stars - transpile Bash to ShellJS\n  - https://github.com/shelljs/shelljs - 14K stars - target is node.js not browser. implements some coreutils, but not bash\n- https://github.com/trybash/bash-emulator - lightweight, only plain text, no ansi escapes\n\n##### parallel processing\n\naka: task scheduling, threading, multiprocess, coroutines\n\n- https://github.com/miketalbot/js-coroutines - 500 stars (underrated) - Javascript Coroutines for idle processing and animation.  based on requestIdleCallback\n- https://github.com/raksoras/koroutine - 40 stars - coroutine scheduler for node.js based on ES6 generators\n- https://github.com/bmeck/generator-runner - 20 stars\n\n\u003cdetails\u003e\n\n- https://github.com/plasma-umass/browsix - https://browsix.org/ - 3K stars - Browsix is a Unix-like operating system for the browser.\n- https://github.com/bashojs/basho - 120 stars - Lazy shell pipelines in plain JavaScript\n- https://github.com/dthree/cash - 8K stars - Cross-platform Linux commands in ES6. only for node.js\n  - https://news.ycombinator.com/item?id=11334597\n- https://github.com/UltiRequiem/coreutils - 30 stars - deno - Cross-platform Deno rewrite of the GNU Coreutils\n- https://github.com/rethab/deno-bash - A silly little bash interpreter written in TypeScript for Deno.\n- https://github.com/taokann/WeBash\n- https://github.com/lpan/rebash - react\n- https://github.com/mullaney/bash - minimal, some commands, fs async api\n- https://github.com/austinoboyle/bash - react\n- https://github.com/hamaxx/jsbash - Basic bash interpreter in javascript. pipes\n- https://github.com/stencila/basha - Bash interpreter for executable documents. deprecated for https://github.com/takluyver/bash_kernel in python and https://github.com/stencila/stencila\n- https://github.com/krithravi/bash-prompt-interpreter - Interprets the values of Bash prompts. Submitted to Sunhacks 2020!\n\nnot\n\n- https://github.com/davidecaruso/shell.js - 80 stars - read only. not interactive\n- https://github.com/importpw/vercel-bash - Bash Runtime for Vercel serverless functions. remote exec of bash scripts\n\n#### bash parsers\n\n- https://github.com/codemirror/legacy-modes/blob/main/mode/shell.js\n\n\u003c/details\u003e\n\n### web framework\n\nhttps://krausest.github.io/js-framework-benchmark/\n\n### web package\n\nhttps://github.com/WICG/webpackage\n\nspecifications aimed at packaging websites\n\nallow people to bundle together the resources that make up a website, so they can be shared offline, either with or without a proof that they came from the original website\n\n### component manager\n\nhttps://github.com/teambit/bit\n\ntoolchain for component-driven software. Forget monolithic apps and distribute development to components\n\nmotivation: package management https://bit.dev/blog/painless-monorepo-dependency-management-with-bit-l4f9fzyw/\n\n### interface designer\n\nhttps://www.builder.io/\n\nDrag and drop on your tech stack\n\n### TiddlyWiki\n\nhttps://github.com/Jermolene/TiddlyWiki5 - 7K stars\n\nA self-contained JavaScript wiki for the browser, Node.js, AWS Lambda etc.\n\nhttps://tiddlywiki.com/\n\nhttps://en.wikipedia.org/wiki/TiddlyWiki\n\n\u003e TiddlyWiki is a personal wiki and a non-linear notebook for organising and sharing complex information. It is an open-source single page application wiki in the form of a **single HTML file** that includes CSS, JavaScript, embedded files such as images, and the text content. It is designed to be easy to customize and re-shape depending on application. It facilitates re-use of content by dividing it into small pieces called Tiddlers.\n\u003e\n\u003e TiddlyWiki is an unusual example of a practical quine. This idea of producing a copy of its own source code that lies at the heart of TiddlyWiki's ability to independently save changes to itself.\n\nstorage: single HTML file\n\n#### tiddly-gittly/TidGi-Desktop\n\nhttps://github.com/tiddly-gittly/TidGi-Desktop - 800 stars\n\nTidGi is an privatcy-in-mind, automated, auto-git-backup, freely-deployed Tiddlywiki knowledge management Desktop note app, with local REST API\n\n##### git-sync-js\n\nhttps://github.com/tiddly-gittly/git-sync-js\n\nJS implementation for Git-Sync\n\n### dokieli\n\nhttps://github.com/linkeddata/dokieli\n\ninplace-editable html pages\n\ngit backend is missing\n\n### html editor\n\naka: rich text editor, wysiwyg editor\n\nideally, the user can install different editors\n\n#### pell\n\nhttps://github.com/jaredreich/pell - 12K stars\n\nhtml editor with only 4 KByte\n\nto compare:\n\n- https://bundlephobia.com/package/prosemirror-view@1.29.1 has 140 KByte\n- https://bundlephobia.com/package/draft-js@0.11.7 has 220 KByte\n- https://bundlephobia.com/package/monaco-editor@0.34.1 has 80 KByte\n\n#### prosemirror\n\nhttps://github.com/ProseMirror/prosemirror-view - 1K stars (underrated)\nrich-text editor\n\nsee also:\nhttps://tiptap.dev/guide/collaborative-editing\nhttps://tiptap.dev/hocuspocus/\nhttps://github.com/pubpub/pubpub-editor - based on react, prosemirror - 100 stars\nhttps://github.com/chanzuckerberg/czi-prosemirror - based on react, prosemirror - 300 stars\nhttps://github.com/primodotso/primo - https://primo.so/ - 500 stars - javascript - visual CMS, based on: svelte, prosemirror. Primo is a component-based CMS that makes it easy to build visually-editable static sites\n\n#### grapesjs\n\nhttps://github.com/artf/grapesjs - 17K stars\n\nWeb Builder Framework. Build templates without coding\n\ndrag-and-drop, no-code, gui, visual-programming\n\n#### stackedit.io\n\nhttps://stackedit.io/\n\nhttps://github.com/benweet/stackedit - 20K stars\n\nmarkdown editor\n\nbrowser app\n\nbackends: github, gitlab, google drive, dropbox\n\nalternatives\n\n- https://github.com/nhn/tui.editor - 15K stars\n- https://github.com/joemccann/dillinger - 8K stars\n\n#### trix\n\nhttps://github.com/basecamp/trix - 17K stars\n\n#### nota\n\nhttps://github.com/nota-lang/nota - 500 stars - A document language for the browser. looks like Markdown and Latex\n\n#### inplace editors\n\nhttps://github.com/xreader/inplaceeditor - 40 stars - Edit static HTML pages with simple InPlaceEditor\n\nhttps://github.com/ZenCocoon/inplacericheditor - 20 stars - AJAX In Place Rich Editor: In place AJAX-powered WYSIWYG editor\n\nhttps://github.com/doomhz/jQuery-Inplace-Edit - 10 stars - A jQuery plugin for editing text in place.\n\nhttps://github.com/wbotelhos/inplace - 10 stars - An inplace editor\n\nhttps://github.com/ovesco/flyter - 5 stars - A library for inline editing. inspired by x-editable (create editable elements), but doesn't rely on jquery, offers tons of customization options and can be easily extended to fit your needs.\n\nhttps://github.com/vitalets/x-editable - 7K stars - In-place editing. create editable elements. includes both popup and inline modes. [demo](https://vitalets.github.io/x-editable/demo-bs3.html)\n\n\u003cblockquote\u003e\n\nDifferent By Design\n\nMost WYSIWYG editors are wrappers around HTML’s contenteditable and execCommand APIs, designed by Microsoft to support live editing of web pages in Internet Explorer 5.5, and eventually reverse-engineered and copied by other browsers.\n\nBecause these APIs were never fully specified or documented, and because WYSIWYG HTML editors are enormous in scope, each browser’s implementation has its own set of bugs and quirks, and JavaScript developers are left to resolve the inconsistencies.\n\nTrix sidesteps these inconsistencies by treating contenteditable as an I/O device: when input makes its way to the editor, Trix converts that input into an editing operation on its internal document model, then re-renders that document back into the editor. This gives Trix complete control over what happens after every keystroke, and avoids the need to use execCommand at all.\n\n\u003c/blockquote\u003e\n\ntodo: what would prosemirror do?\n\n\u003cdetails\u003e\n\n#### dillinger.io\n\nhttps://dillinger.io/\n\nhttps://github.com/joemccann/dillinger - 8K stars\n\nmarkdown editor\n\nbackends: github, google drive, dropbox, one drive, medium\n\n#### sofish/pen\n\nhttps://github.com/sofish/pen - 5K stars\n\nhtml editor, inplace editing, live editing\n\n#### woofmark\n\nhttps://github.com/bevacqua/woofmark - 2K stars\n\nmarkdown editor\n\n#### litewrite\n\nhttps://litewrite.net/\n\nhttps://github.com/litewrite/litewrite - 400 stars\n\nhtml editor\n\n\u003e Offline: Once loaded, it’s essentially a desktop app. Thanks to AppCache and localStorage, both app and data are fully cached offline and synced whenever online.\n\n\u003e This is an [unhosted web app](http://unhosted.org/), meaning its code is fully client-side, without any server backend you need to trust! It also supports the open [remotestorage](http://remotestorage.io/) protocol so you can sync your data across devices \u0026 browsers.\n\nvia http://unhosted.org/apps/\n\n#### hyperdraft\n\nhttps://hyperdraft.rosano.ca/\n\nhtml editor\n\n### static web hosting\n\ngithub.com pages, gitlab.com pages, codeberg.org pages ...\n\n\u003c/details\u003e\n\n### git forges\n\n#### gitea\n\nhttps://github.com/go-gitea/gitea - 30K stars\n\nweb frontend for git repos, alternative to github, gitlab\n\nworks with isomorphic-git\n\nselfhosted, localfirst, nocloud, anyone can start a new instance\n\nwritten in golang\n\n#### gitarena\n\nhttps://github.com/mellowagain/gitarena - 50 stars\n\nweb frontend for git repos, written in rust\n\n### cloud IDE\n\naka: browser IDE, browser playground\n\nhttps://alternativeto.net/category/developer-tools/ide/?license=opensource\n\nhttps://www.sitepoint.com/code-playgrounds/\n\n#### CodeSandbox\n\nAn online IDE for rapid web development\n\nhttps://codesandbox.io/\n\nhttps://github.com/codesandbox/codesandbox-client - 12K stars\n\n\u003cblockquote\u003e\n\nCodeSandbox is less of a playground and more of an online development environment.\n\nLike standard web projects, you can add any number of files and edit them using a multi-tab, VS Code-like integrated development environment (aka IDE). It’s free to sign up using a GitHub or Google account, but you can then collaborate with others in real time, export projects to a Git repository, and deploy to static site hosts such as Netlify and Vercel.\n\nCodeSandbox could be a practical option if you’re working remotely or using a non-typical development device such as a Chromebook.\n\n\u003c/blockquote\u003e\n\n##### bundler\n\nhttps://github.com/codesandbox/sandpack - 3K stars\n\nwebpack for the browser\n\nhttps://sandpack.codesandbox.io/docs/advanced-usage/client\n\nalternative: https://github.com/divriots/browser-vite - 500 stars\n\n##### github backend\n\nhttps://github.com/codesandbox/codesandbox-importers/blob/master/packages/git-extractor/src/routes/github/pull/download.ts\n\n##### Full Offline Support\n\nhttps://codesandbox.io/post/creating-a-parallel-offline-extensible-browser-based-bundler-for-codesandbox\n\n\u003cblockquote\u003e\n  \nFull Offline Support\n\nEverything works offline already, but for full offline support we need to allow you to save sandboxes offline. This allows you to work offline on your projects forever, and upload to CodeSandbox whenever you’d like. The only feature that requires an internet connection are npm dependencies, but we already cache all npm results. We’ll give you the option to precache combinations for when you’re planning a trip or flight.\n\n\u003c/blockquote\u003e\n\n##### alternatives\n\nhttps://github.com/styfle/awesome-online-ide\n\n- https://github.com/jsbin/jsbin - 4K stars\n- https://github.com/chinchang/web-maker - 2K stars\n- https://github.com/porsager/flems - 400 stars\n- https://github.com/popcodeorg/popcode - 200 stars\n\n##### online playgrounds\n\naka: repl (read eval print loop)\n\n- https://github.com/pngwn/REPLicant\n- https://github.com/novacbn/svelte-pipeline\n- https://playground.solidjs.com/\n\n#### code-server\n\nhttps://github.com/coder/code-server - 60K stars\n\nVS Code in the browser\n\nhttps://github.com/gitpod-io/openvscode-server\n\nhttps://github.com/conwnet/github1s - 20K stars - One second to read GitHub code with VS Code.\n\n#### Eclipse Theia\n\nhttps://theia-ide.org/\n\nhttps://github.com/eclipse-theia/theia - 18K stars\n\nCloud \u0026 Desktop IDE\n\ncompatible with vscode extensions\n\n#### Eclipse Che\n\nhttps://www.eclipse.org/che/\n\nmiddleware for a remote IDE, browser based, similar to vscode server\n\nwith support for multiple frontends: vscode, jetbrains, Eclipse Theia\n\n#### web-maker\n\nhttps://github.com/chinchang/web-maker - 2K stars\n\n\u003e A blazing fast \u0026 offline frontend playground\n\u003e\n\u003e Web-Maker is an offline playground for your web experiments. Something like CodePen or JSFiddle, but much more faster and works offline because it runs completely on your system.\n\nexport to single html file\n\n\u003cdetails\u003e\n\n#### Atheos\n\nhttps://github.com/Atheos/Atheos - 300 stars\n\nhttps://github.com/Codiad/Codiad - 3K stars\n\nPHP backend\n\n\u003e A self-hosted browser-based cloud IDE, updated from Codiad IDE\n\u003e\n\u003e Atheos is an updated and currently maintained fork of Codiad, a web-based IDE framework with a small footprint and minimal requirements.\n\n#### gitpod\n\nhttps://github.com/gitpod-io/gitpod - 10K stars\n\n\u003e Gitpod automates the provisioning of ready-to-code development environments.\n\u003e\n\u003e Gitpod is an open-source Kubernetes application for ready-to-code cloud development environments that spins up fresh, automated dev environments for each task, in the cloud, in seconds. It enables you to describe your dev environment as code and start instant, remote and cloud development environments directly from your browser or your Desktop IDE.\n\n#### codeanywhere\n\nhttps://codeanywhere.com/\n\nclosed source\n\n#### koding\n\nhttps://github.com/koding/koding\n\narchived in year 2019\n\n#### htmlhouse\n\nhttps://github.com/writeas/htmlhouse\n\nhtml server + editor\n\n\u003c/details\u003e\n\n### cloud compiler\n\n\u003cdetails\u003e\n\n#### ideone\n\nhttps://ideone.com/\n\nonline compilers\n\n#### tryitonline\n\nhttps://github.com/TryItOnline/tryitonline\n\nonline interpreters for an evergrowing list of practical and recreational programming languages\n\n#### godbolt\n\nhttps://godbolt.org/\n\nonline compilers\n\n\u003c/details\u003e\n\n### browser editors\n\n#### codimd\n\nCodiMD - Realtime collaborative markdown notes on all platforms.\n\nhttps://github.com/hackmdio/codimd - 8K stars\n\nmarkdown editor with github backend\n\n\u003cdetails\u003e\n\n#### flems\n\nhttps://github.com/porsager/flems\n\nhtml editor\n\n\u003c/details\u003e\n\n### git storage backend\n\n#### isomorphic-git\n\nhttps://github.com/isomorphic-git/isomorphic-git - 7K stars\nhttps://www.npmjs.com/package/isomorphic-git - 200K downloads\nA pure JavaScript implementation of git for node and browsers\n\ndoes not work with github, because github refuses to add CORS headers (fuck them)\nworks with gitea \u0026rarr; example: https://try.gitea.io/milahu/alchi\n\noverkill?\nwe just need to fetch like 10 versions of \\*one file\\*\n\u0026rarr; github rest api should work\n\n##### @isomorphic-git/lightning-fs\n\nhttps://www.npmjs.com/package/@isomorphic-git/lightning-fs\n\nhttps://github.com/isomorphic-git/lightning-fs - 400 stars\n\nfilesystem based on IndexedDB\n\nalternative to\n\n- https://github.com/jvilk/BrowserFS - 3K stars\n- https://github.com/filerjs/filer - 500 stars\n\n##### github-activity-writer\n\nhttps://github.com/orta/github-activity-writer\n\n##### gatsby-source-git\n\nhttps://github.com/stevetweeddale/gatsby-source-git - 70 stars\n\ngit client for gatsby\n\n##### gridsome-source-git\n\nhttps://github.com/noxify/gridsome-source-git - 10 stars\n\ngit client for gridsome\n\nhttps://github.com/gridsome/gridsome - 9K stars - The Jamstack framework for Vue.js\n\n##### WeGit\n\nhttps://github.com/welldan97/WeGit - 20 stars\n\nDistributed P2P Git Hosting Provider Network\n\n#### js-git\n\nhttps://github.com/creationix/js-git - 4K stars\nhttps://www.npmjs.com/package/js-git - 1M downloads\nA JavaScript implementation of Git\n\n\u003e I've been asking Github to enable CORS headers to their HTTPS git servers, but they've refused to do it. This means that a browser can never clone from github because the browser will disallow XHR requests to the domain.\n\n##### js-github\n\nhttps://github.com/creationix/js-github - 160 stars\n\nA js-git mixin that uses github as the data storage backend.\n\n##### git-indexeddb\n\nhttps://github.com/aaronpowell/git-indexeddb - 10 stars\n\njs-git db on top of IndexedDB\n\nexample with indexeddb caching\n\n##### git-browser\n\nhttps://github.com/creationix/git-browser\n\nbased on js-git, git-indexeddb, ...\n\n#### git-master\n\nhttps://github.com/ineo6/git-master - 400 stars\n\nGit Master Extension for git file tree, support GitHub GitLab Gitee Gitea Gogs\n\nbrowser extension\n\n#### git-documentdb\n\nhttps://github.com/sosuisen/git-documentdb - 40 stars\n\nOffline-first Database that Syncs with Git\n\n#### workbox\n\nhttps://github.com/GoogleChrome/workbox\nJavaScript libraries for Progressive Web Apps\nservice workers\n\n#### berty\n\nhttps://github.com/berty/berty\npeer-to-peer messaging app that works with or without internet access\n\n#### UpUp\n\nhttps://github.com/TalAter/UpUp\ncreate sites that work offline as well as online\n\n#### vuejs-templates/pwa\n\nhttps://github.com/vuejs-templates/pwa\nPWA template for vue-cli based on the webpack template\n\n#### client-side-databases\n\nhttps://github.com/pubkey/client-side-databases\nAn implementation of the exact same app in Firestore, AWS Datastore, PouchDB, RxDB and WatermelonDB\n\n#### pouchdb\n\nhttps://github.com/pouchdb/pouchdb - 15K stars\n\n\u003e PouchDB is an open-source JavaScript database inspired by [Apache CouchDB](http://couchdb.apache.org/) that is designed to run well within the browser.\n\u003e \n\u003e PouchDB was created to help web developers build applications that work as well offline as they do online.\n\u003e https://pouchdb.com/\n\n#### couchdb\n\nhttps://couchdb.apache.org/\n\n\u003e [The Couch Replication Protocol](https://docs.couchdb.org/en/stable/replication/protocol.html) lets your data flow seamlessly between server clusters to mobile phones and web browsers, enabling a compelling [offline-first](https://offlinefirst.org/) user-experience while maintaining high performance and strong reliability.\n\n#### kinto\n\nhttps://github.com/Kinto/kinto.js\n\nhttps://docs.kinto-storage.org/en/stable/faq.html#comparison\n\nKinto | Parse Server | Firebase | CouchDB | Kuzzle | Remote-Storage | Hoodie | BrowserFS\n-- | -- | -- | -- | -- | -- | -- | --\n\n#### wora\n\nhttps://github.com/morrys/wora\nWrite Once, Render Anywhere.\ndocumentation for typescript libraries: cache-persist, apollo-offline, relay-offline, offline-first, apollo-cache, relay-store, netinfo, detect-network\n\n#### git-documentdb\n\nhttps://github.com/sosuisen/git-documentdb\nOffline-first Database that Syncs with Git\n\ndemo app\nhttps://github.com/sosuisen/inventory-manager\n\n#### tool-db\n\nhttps://github.com/Manwe-777/tool-db\nA peer-to-peer decentralized database\n\n\u003cdetails\u003e\n\n#### cube.js\n\nhttps://github.com/cube-js/cube.js\n\n\u003e Headless Business Intelligence for Building Data Applications\n\u003e\n\u003e Cube is the headless business intelligence platform. It helps data engineers and application developers access data from modern data stores, organize it into consistent definitions, and deliver it to every application.\n\n#### backbone\n\n#### tanstack/query\n\n\u003c/details\u003e\n\n### cms\n\nhttps://github.com/topics/content-management-system?l=typescript\n\nhttps://github.com/topics/cms?l=typescript\n\n#### bodiless-js\n\nhttps://www.bodiless-js.org/\n\nhttps://github.com/johnsonandjohnson/Bodiless-JS - 130 stars\n\nFramework for building editable websites on the JAMStack\n\nusing isomorphic-git\n\n\"edit this page\" feature = (almost) inplace editing\n\nedit content and presentation (style, menus, ...)\n\n#### payload\n\nhttps://github.com/payloadcms/payload - 9K stars\n\n#### tinacms\n\nhttps://github.com/tinacms/tinacms - 8K stars\n\nhttps://tina.io/\n\nA headless CMS for Markdown\n\nusing isomorphic-git\n\nhas inplace-editing\n\nhttps://tina.io/blog/introducing-visual-open-authoring/\n\n\u003e We're focused on improving the independent web as a whole. We want to craft tools that help people build better sites and create better content.\n\u003e\n\u003e In line with this mission, we sought to create something we call **Visual Open Authoring**. The [open authoring concept](https://css-tricks.com/netlify-cms-open-authoring/#article-header-id-0) was originally pioneered by Netlify CMS this past summer and involves opening up your website's CMS to accept content-related contributions from anyone. Using Tina, we were able to take this a step further, establishing the editing context on the page itself.\n\u003e\n\u003e Add an \"Edit Mode\" to Your Site\n\u003e\n\u003e Picture this: on your website, there's an \"Edit this page on GitHub\" link — familiar enough. But imagine that when you click it, instead of kicking you over to GitHub, the site itself becomes editable, like a Google Doc.\n\u003e\n\u003e The experience should feel familiar for anyone that has used a word processor or site builder. You navigate to the page you want to change, click “Edit”, make updates in a WYSIWYG, and then submit your changes. That’s it.\n\ncan be used with capri https://capri.build/docs/integrations/tinacms/ to replace next.js/react with vue/svelte/solid/...\n\n\u003e TinaCMS is an open source, Git-backed CMS that adds a custom **visual editing** experience to a site.\n\u003e\n\u003e While Tina is originally made for Next.js sites, it can also be used as content source for Capri.\n\u003e\n\u003e When used with Capri, you get a completely static site that does not need a Node server and can be deployed to any static hosting service, including S3, GitHub Pages, surge or Firebase Hosting.\n\u003e\n\u003e The cool thing is that the resulting website will ship zero KB of JavaScript to the browser. Still, under /admin you get the full Tina editing experience as single page app!\n\n- https://github.com/capri-js/tinacms-cloud-capri\n- https://github.com/capri-js/tinacms-barebones-capri\n\n#### netlify-cms\n\nhttps://github.com/netlify/netlify-cms - 16K stars\n\n\u003e A Git-based CMS for Static Site Generators\n\u003e\n\u003e Give users a simple way to edit and add content to any site built with a static site generator.\n\nhttps://github.com/vencax/netlify-cms-github-oauth-provider\n\n#### alinea\n\nhttps://github.com/alineacms/alinea - 600 stars\n\nContent management for the modern web\n\nContent is stored in flat files and committed to your repository\n\n#### remix-cms\n\nhttps://github.com/ShafSpecs/remix-cms\n\n+ github api\n\n#### github-pages-cms\n\nhttps://github.com/jansmolders86/github-pages-cms - 50 stars\n\n### writing tools\n\n#### obsidian.md\n\nhttps://obsidian.md/\n\nhttps://github.com/obsidianmd/obsidian-releases - 4K stars\n\nObsidian is not open source software and this repo DOES NOT contain the source code of Obsidian\n\nmarkdown editor\n\nclosed source\n\nalternatives: codimd\n\n##### obsidian-git\n\nhttps://github.com/denolehov/obsidian-git - 3K stars\n\ngit backend for obsidian\n\n### book printing\n\nrender a book-layout for printing\n\nat the end of the day, digital is just a medium,\nand the actual target is always print\n\ntodo: latex in javascript? (vanilla javascript, no wasm)\n\na good layout engine can distribute content across pages\nto meet 2 constraints:\n\n1. pretty\n2. compact\n\nso, this tool should also be usable as a book-authoring software,\nwhere readers can modify and reprint a book (\"editable book\")\n\n#### bindery\n\nhttps://github.com/evnbr/bindery\n\ni tried other tools, but for now im using bindery\n\nits not perfect, sometimes the layout is too compact and ugly,\nso i must insert manual pagebreaks ... but it works\n\n## too much\n\ncould be useful, but too complex\n\n### daedalOS\n\nhttps://github.com/DustinBrett/daedalOS - 6K stars\n\nDesktop environment in the browser.\n\n## crdt\n\naka: live collaboration, realtime collaboration\n\n- https://github.com/yjs/yjs\n  - https://github.com/y-crdt/y-crdt/tree/main/ywasm\n- https://github.com/automerge/automerge\n- https://github.com/inkandswitch/peritext - 500 stars - A CRDT for asynchronous rich-text collaboration, where authors can work independently and then merge their changes.\n- https://github.com/jupyterlab/rtc - 200 stars - Real Time Collaboration for Jupyter and beyond\n\n## annotations and comments\n\n- https://github.com/hypothesis\n- https://github.com/LicomJS/Licom\n- https://github.com/gab-ai-inc/gab-dissenter-extension\n\n## self replicating\n\n- Samizdat is a self-replicating LiveCD @ https://github.com/redecentralize/alternative-internet\n\n## git based\n\n- https://github.com/redecentralize/alternative-internet\n- https://github.com/hbons/SparkleShare - 5K stars - self-hosted file sync service, similar to Dropbox and based on Git. Linux, macOS, and Windows.\n- https://github.com/raybejjani/gitsync - git repository synchronisation and discovery tool. Its goal is to allow developers to coordinate without a central master repository.\n- https://github.com/cjb/GitTorrent - peer-to-peer network of Git repositories being shared over BitTorrent.\n- https://github.com/MichaelMure/git-bug - distributed, offline-first bug tracker embedded in git.\n\n\u003cdetails\u003e\n\n- https://github.com/neithernut/git-dit - distributed issue tracker for git.\n- archived: https://github.com/cryptosphere/cryptosphere - http://cryptosphere.org/ - global peer-to-peer cryptosystem for publishing and securely distributing both data and HTML5/JS applications pseudonymously with no central point of failure. It's built on top of the next-generation Networking and Cryptography (NaCl) library and the Git data model. nacl: http://nacl.cr.yp.to/\n- not: https://fossil-scm.org/ - distributed version control, but not compatible with git\n\n\u003c/details\u003e\n\n\n## web desktop\n\naka: browser os\n\n- http://blog.grimwire.com/#2013-04-04-grimwire.md - browser OS which uses Web Workers for process isolation, and WebRTC for peer-to-peer communication.\n\n\n\n\n\n## publishing\n\n- http://firecloud.co/ - P2P web publishing platform in your using Persona and WebRTC to work its magic.\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmilahu%2Fbrowserforge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmilahu%2Fbrowserforge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmilahu%2Fbrowserforge/lists"}