{"id":13426116,"url":"https://github.com/brunosimon/keppler","last_synced_at":"2025-05-15T09:04:45.151Z","repository":{"id":37390642,"uuid":"60181106","full_name":"brunosimon/keppler","owner":"brunosimon","description":"Real time code sharing for your lectures and presentations.","archived":false,"fork":false,"pushed_at":"2022-06-26T12:39:03.000Z","size":16129,"stargazers_count":1929,"open_issues_count":29,"forks_count":102,"subscribers_count":27,"default_branch":"master","last_synced_at":"2025-04-07T05:04:10.436Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/brunosimon.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"license.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-06-01T13:52:17.000Z","updated_at":"2025-04-06T15:45:37.000Z","dependencies_parsed_at":"2022-07-16T13:16:17.960Z","dependency_job_id":null,"html_url":"https://github.com/brunosimon/keppler","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brunosimon%2Fkeppler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brunosimon%2Fkeppler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brunosimon%2Fkeppler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brunosimon%2Fkeppler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brunosimon","download_url":"https://codeload.github.com/brunosimon/keppler/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248890775,"owners_count":21178502,"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":[],"created_at":"2024-07-31T00:01:26.749Z","updated_at":"2025-04-14T13:47:51.602Z","avatar_url":"https://github.com/brunosimon.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# [Keppler](https://brunosimon.github.io/keppler/)\n\n\u003e Real time code sharing for your lectures and presentations.\n\n[Website](https://brunosimon.github.io/keppler/)\n\n## What is keppler\n\nStart keppler inside your project folder, share the URL with your audience and start coding.\nAny time you save a file, viewers will receive those changes. They can browse through the files, go back in history, copy the code, download the project, preview images, chat with other viewers, ask the presenter to slow down, etc.\n\n\u003cimg width=\"700\" src=\"https://github.com/brunosimon/keppler/raw/master/resources/screenshots/screen-project-1.png\" alt=\"Keppler screen\"\u003e\n\u003cimg width=\"700\" src=\"https://github.com/brunosimon/keppler/raw/master/resources/screenshots/screen-project-2.png\" alt=\"Keppler screen\"\u003e\n\u003cimg width=\"700\" src=\"https://github.com/brunosimon/keppler/raw/master/resources/screenshots/screen-project-3.png\" alt=\"Keppler screen\"\u003e\n\n## User instructions\n\n#### 1 - Install Keppler globally\n\nYou must have [NodeJS](https://nodejs.org/en/) and [NPM](https://www.npmjs.org) already installed.\nIn your console, run:\n\n\u003csup\u003e(You may need to add `sudo` at start)\u003c/sup\u003e\n\n```\nnpm install -g keppler\n```\n\n\n#### 2 - Launch Keppler inside your project folder\n\nIn your console, navigate to your project folder.\nThen launch Keppler:\n\n```\ncd ./my-awesome-project\nkeppler\n```\n\nKeppler should open in your default browser and start watching any changes you make inside the folder.\n\n#### 3 - Share the URL with your audience\n\nSimply share the URL that should appear and your audience will have access to your code through Keppler.\nBy default, you must be on the same network.\n\n## Configuration\n\nYou can add configuration arguments when calling Keppler.\n\n```\nkeppler \"My project\" --debug 0 --port 1234 --exclude \"node_modules/**\" --open true --test true --limit 200 --max-file-size 99999\n```\n\nAnd you can use shortcuts for those same arguments.\n\n```\nkeppler \"My project\" -d 0 -p 1234 -e \"node_modules/**\" -oti -l 200 -m 99999\n```\n\nAll those arguments are optional. You can simply run Keppler.\n\n```\nkeppler\n```\n\nArguments list\n\n||Debug level|\n|---|---|\n|parameter|`--debug`|\n|shortcut|`--d`|\n|default value|*(number)*`1`|\n|description|How much logs should be shown\u003cbr\u003e`0`: almost no log\u003cbr\u003e`1`: primary logs\u003cbr\u003e`2`: too much logs|\n\n|||\n|---|---|\n|parameter|`--name`|\n|shortcut|`-n`|\n|default value|*(string)* folder name|\n|description|Project name\u003cbr\u003e(you can simply add a string after `keppler` keyword like `keppler \"My project\"`)|\n\n|||\n|---|---|\n|parameter|`--exclude`|\n|shortcut|`-e`|\n|default value|*(string)*`**/.DS_Store,**/node_modules/**,**/vendor/**,**/.git,**/.vscode,**/.env,**/.log,.idea/**,**/*___jb_old___,**/*___jb_tmp___`|\n|description|List of paths to exclude (glob pattern with comma seperation)|\n\n|||\n|---|---|\n|parameter|`--open`|\n|shortcut|`-o`|\n|default value|*(bool)*`true`|\n|description|Open Keppler in default browser|\n\n|||\n|---|---|\n|parameter|`--test`|\n|shortcut|`-t`|\n|default value|*(bool)*`false`|\n|description|Start a test project with demo contents\u003cbr\u003e:warning: Only for development purpose|\n\n|||\n|---|---|\n|parameter|`--limit`|\n|shortcut|`-l`|\n|default value|*(number)*`99`|\n|description|Limit of files above which nothing will be sent at start\u003cbr\u003e:warning: Too much files may cause issues|\n\n|||\n|---|---|\n|parameter|`--max-file-size`|\n|shortcut|`-m`|\n|default value|*(number)*`99999`|\n|description|Maximum file size in octets\u003cbr\u003e(99999 ≈ 100ko)|\n\n|||\n|---|---|\n|parameter|`--server`|\n|shortcut|`-s`|\n|default value|*(bool)*`false`|\n|description|Start keppler server only\u003cbr\u003e(if you want to run an online instance)|\n\n|||\n|---|---|\n|parameter|`--host`|\n|shortcut|`-h`|\n|default value|*(string)*``|\n|description|Server host\u003cbr\u003e(if you want to connect to an online instance)|\n\n|||\n|---|---|\n|parameter|`--port`|\n|shortcut|`-p`|\n|default value|*(number)*`1571`|\n|description|Server port|\n\n## Online instance\n\nYou can run Keppler online. Anyone with access to the server will be able to see the projects without having to be on the same network as you.\n\nKeppler doesn't provide any host solution. You'll have to use your own server.\n\n#### On the server\n\nInstall Node.js\n\nInstall keppler\n\n```\nnpm install -g keppler\n```\n\nStart a keppler instance with the `--server` parameter\n\n```\nkeppler --server\n```\n\n#### On you local machine\n\nStart keppler with the `--host` parameter and server domain as the value\n\n```\nkeppler \"My awesome project\" --host 12.34.56.78\n```\n\n## Features\n\n- Work in any modern browser\n- File tree\n- Fuzzy search\n- File history/versions\n- File versions differences\n- Easy copy to clipboard\n- Accessible by anyone on the same network\n- App like design\n- Syntax coloring\n- Multiple projects in one Keppler instance\n- Chat with other viewers and associate specific files and lines with your messages\n- Open in default browser\n- Download file button\n- Download project button\n- Alert button\n- Tooltips\n- Online support\n\n## Developer instructions\n\n#### Structure\n\n`/app/`: Keppler front part\n`/bin/`: Main folder only containing `index.js` that will run what's located in `/lib/` folder\n`/lib/`: Keppler application classes\n`/resources/`: Random resources (not directly use)\n`/site/`: Website\n`/text/`: Demo folder\n\n#### Tasks\n\nInstallation\n\n- `npm install`\n\nKeppler application\n\n- `npm run demo-folder`: To run the Keppler application with a demo project located in `/test/`\n- `npm run app-dev`: To run the Keppler front part (you'll need to run keppler application in order to have the front to connect to something)\n- `npm run app-build`: To build the front part\n- `npm run dev`: To run both `demo-folder` and `app-dev`\n\nWebsite\n\n- `npm run site-dev`: To run the website\n- `npm run site-build`: To build the website\n- `npm run site-deploy`: To deploy the website to GitHub Pages\n\n#### Requirements\n\n- Install EditorConfig on your editor\n- Install ESLint on your editor\n\n#### Deployment\n\n- `npm run app-build` to build the app\n- `npm version major|minor|patch` to update the version (will create a commit)\n- `git commit --amend` to update the commit message and add `:bookmark:` at the beginning ([GitMoji](https://gitmoji.carloscuesta.me/))\n- `git push` to push to GitHub\n- `npm publish` to send to NPM (you need to be logged in and have the right to update Keppler on NPM)\n\n## Credits\n\n##### Development\n\n- Bruno Simon ([GitHub](https://github.com/brunosimon), [Twitter](https://twitter.com/bruno_simon/), [Site](https://bruno-simon.com))\n\n##### UX / UI\n\n- Tom Bonnike\n- Thibaud Vaubourg\n- Aymeric Sans\n- Axel Chalon","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrunosimon%2Fkeppler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrunosimon%2Fkeppler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrunosimon%2Fkeppler/lists"}