{"id":13479705,"url":"https://github.com/CodeverDotDev/codever","last_synced_at":"2025-03-27T10:30:53.672Z","repository":{"id":38990616,"uuid":"69779247","full_name":"CodeverDotDev/codever","owner":"CodeverDotDev","description":"Bookmarks, Snippets and Notes Manager for Developers \u0026 Co (website)","archived":false,"fork":false,"pushed_at":"2024-08-30T12:38:43.000Z","size":64806,"stargazers_count":364,"open_issues_count":61,"forks_count":58,"subscribers_count":16,"default_branch":"master","last_synced_at":"2024-10-29T17:11:42.582Z","etag":null,"topics":["angular","api","bookmark","bookmark-manager","bookmarklet","bookmarks","bookmarks-manager","developer-tools","docker","expressjs","keycloak","markdown","mongodb","mongoose","nodejs","notes","productivity","snippets","website"],"latest_commit_sha":null,"homepage":"https://www.codever.dev","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/CodeverDotDev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-10-02T04:42:20.000Z","updated_at":"2024-10-28T06:19:54.000Z","dependencies_parsed_at":"2023-02-18T00:16:22.742Z","dependency_job_id":"71489745-20f1-4039-929b-5956350a82ea","html_url":"https://github.com/CodeverDotDev/codever","commit_stats":{"total_commits":1352,"total_committers":2,"mean_commits":676.0,"dds":0.00295857988165682,"last_synced_commit":"7795d97ca0b41cdd386df5b1f3168f28ee49cea3"},"previous_names":[],"tags_count":62,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeverDotDev%2Fcodever","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeverDotDev%2Fcodever/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeverDotDev%2Fcodever/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeverDotDev%2Fcodever/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CodeverDotDev","download_url":"https://codeload.github.com/CodeverDotDev/codever/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245826720,"owners_count":20678846,"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":["angular","api","bookmark","bookmark-manager","bookmarklet","bookmarks","bookmarks-manager","developer-tools","docker","expressjs","keycloak","markdown","mongodb","mongoose","nodejs","notes","productivity","snippets","website"],"created_at":"2024-07-31T16:02:21.737Z","updated_at":"2025-03-27T10:30:53.666Z","avatar_url":"https://github.com/CodeverDotDev.png","language":"TypeScript","readme":"\u003cdiv align=\"center\"\u003e\n\t\u003cimg width=\"560\" src=\"documentation/img/codever-readme-header-560x120.png\" alt=\"Codever\"\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\" style=\"font-size: large\"\u003e\n    \u003ch2\u003e ⚡🔖️ Bookmarks and snippets manager for developers \u0026 co 🔖⚡️ \u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n:point_right: Use our [**HowTo pages**](https://www.codever.dev/howto)\n to get you going and [start saving time and nerves](https://dev.to/ama/how-i-manage-my-dev-bookmarks-and-save-time-and-nerves-56ae) when managing\nyour bookmarks and code snippets. The following helpers and extensions will assist you along the way:\n\n## Extensions\n\n| [![Bookmarklet](documentation/img/bookmark-24.png)](https://www.codever.dev/howto/bookmarklets) | [![Chrome](documentation/img/chrome-24.png)](https://chrome.google.com/webstore/detail/codever/diofdblfhjbpgackifolmboaiccmebjb) | [![Firefox](documentation/img/fx-24.png)](https://addons.mozilla.org/addon/codever/) | [![IntelliJ Plugin](documentation/img/intellij-24.png)](https://plugins.jetbrains.com/plugin/14456-codever-snippets/) | [![VSCode extension](documentation/img/vscode-24.png)](https://marketplace.visualstudio.com/items?itemName=codever.vscode-codever) |\n|:---:|:---:|:---:|:---:|:---:|\n| [Bookmarklet](https://www.codever.dev/howto/bookmarklets) |  [Chromium Extension](https://chrome.google.com/webstore/detail/codever/diofdblfhjbpgackifolmboaiccmebjb) |  [Firefox Addon](https://addons.mozilla.org/addon/codever/) | [IntelliJ Plugin](https://plugins.jetbrains.com/plugin/14456-codever-snippets/) | [VSCode Extension](https://marketplace.visualstudio.com/items?itemName=codever.vscode-codever) |\n    \n### Chrome extension usage example - save snippet\n \n ![Save to Codever chrome extension usage](documentation/gif/codever-browser-extension-save-snippet-800x454.gif)\n \n\u003e The other extensions function more or less after the same principle\n\n\n## Public bookmarks\n\n*******************************************************************************************************************************\nWorthy public bookmarks are published regularly on Github at [CodeverDotDev/bookmarks](https://github.com/CodeverDotDev/bookmarks).\n*******************************************************************************************************************************\n\n## Setup (development or self hosting)\n\nThese instructions will get you a copy of the project up and running on your local machine for development and testing purposes.\n\nThe project is developed with the MEAN stack and [Keycloak](http://www.keycloak.org/) for authentication and authorization:\n![components-graph](documentation/graphviz/components-graph.png)\n\nThe project contains two apps\n\n* [codever-ui](apps/codever-ui) which makes up the User Interface. This uses with Angular and Angular CLI.\n* [codever-api](apps/codever-api) which is the API supporting the UI. It uses ExpressJS with MongoDB and Keycloak. See the [OpenAPI specification](https://www.codever.dev/api/docs)\n\n### Prerequisites\n\nWhat you need to run this app:\n\n* `node` and `npm` (we recommend using [NVM](https://github.com/creationix/nvm))\n  * Ensure you're running Node at least (`v16.x.x`+) and NPM (`8.x.x`+)\n* [nodemon](https://nodemon.io/) - `npm install -g nodemon`\n* **Docker** - we recommend using [Docker Desktop](https://www.docker.com/products/docker-desktop)\n\n\u003e Docker and Docker-compose are currently used only for local development\n\n### Installing (**development setup**)\n\n#### Start MongoDB and Keycloak server\n\n:warning: \u0026nbsp; When you run `docker compose` for the **first time** uncomment the following `-Dkeycloak.migration.action=import` line :\n\n```yaml\n    #command: -Dkeycloak.migration.action=import -Dkeycloak.migration.provider=dir -Dkeycloak.migration.dir=/tmp/keycloak/export-import -Dkeycloak.migration.strategy=IGNORE_EXISTING\n```\n\nin the [docker-compose](docker-compose.yml) file, **so that the initial Keycloak setup (realm and users) is loaded**.\n\n\u003e :warning: \u0026nbsp; For further startups of docker-compose you should **comment back this line**, as it starts faster\n\n\n```bash\ndocker-compose up\n```\n\n\u003e Use `-d` to run it in the background\n\n#### Install and run (frontend \u0026 backend)\n\nYou want to have the backend API running first with the following commands:\n\n```shell\n# install\nnvm use   #only if you are using nvm\nnpm install\n\n# run\nnpm run frontend #to run the frontend\nnpm run backend #to run the backend\n\n#alternatively run in parallel\nnpm start\n```\n\nor in one line `nvm use; npm install; npm start`\n\nThis starts\n\n* the API with [nodemon](http://nodemon.io) at [http://localhost:3000/api](http://localhost:3000/api)\n and will watch for code changes in backend and automatically redeploy.\n* the frontend available at [http://localhost:4200](http://localhost:4200). Login the user/password **`mock/mock`** configured\n  for you in the initial Keycloak setup. Some bookmarks are initially loaded with your account, so you can start playing with them.\n\n\u003e You can create your own test user, or any other extra users by following the screenshots in\n\u003e [Add a Keycloak user](documentation/keycloak/add-keycloak-user.md) to create it.\n\n\u003e To be able to automatically add youtube videos published date and duration to the title you need to \n\u003e create a _nodemon.json_ file based on the [backend/nodemon.json.example](apps/codever-api/nodemon.json.example) \n\u003e and add your own youtube api key\n\n### Keycloak\n\nKeycloak Admin console reachable at [http://localhost:8080/auth](http://localhost:8080/auth) with the user/password **`admin/Pa55w0rd`** \n(see docker compose file)\n\n\n## Testing\n\n### E2E (integration) tests with Cypress\n\n\u003e Keycloak and mongodb have to be started as specified above (`docker-compose up` command)\n\nRun the integration test by issuing the following command.\n\n```bash\ncd apps/codever-ui\nnpm run cy:run\n```\n\n\u003e To open Cypress you can run the following task `npm run cy:open`\n\n### API (backend)\n\n### Integration tests\n\n\u003e Keycloak and mongodb have to be started as specified above (`docker-compose up` command)\n\nRun the integration test by issuing the following command.\n\n```bash\ncd apps/codever-api\nnpm run integration-tests\n```\n\nA report will be generated.\n\n## Debugging\n\n### UI (Frontend)\n\n#### Dev Tools in Chromium browsers\n\nYou can use the Dev Tools in Chromium based browsers (e.g. Chrome, Brave). Navigate to **Sources**\nand the file you want to set your break points, like in the following example:\n\n![chrome-dev-tools-debugging](documentation/debugging/frontend/debug-frontend-chrome-dev-tools-800x574.png)\n\n#### IntelliJ\n\nIn IntelliJ you add Javascript Debug configuration as shown below:\n\n![Intelli-frontend-debugging](documentation/debugging/frontend/debug-frontend-intellij.png)\n\n### Backend\n\n#### IntelliJ / Webstorm (Node.js plugin is required)\n\nThe `npm run debug` starts nodemon with the `--inspect` parameter so you can attach to this process,\nby using the following configuration:\n\n![nodejs-remote-debugging](documentation/debugging/backend/attach-to-nodemon-process.png)\n\n#### Visual Studio Code\n\nSee [Node.js debugging in VS Code with Nodemon](https://github.com/microsoft/vscode-recipes/tree/master/nodemon)\n\n## Blog\n\nBlog posts related to Codever features and implementation details can be found on [Codepedia.org](https://www.codepedia.org/tags/#codever)\nand [Dev.to](https://dev.to/codever)\n\n## Contributing\n\nPlease read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.\n\n## Versioning\n\nWe use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/CodeverDotDev/codever/tags).\n\n## Changelog\n\nThe changelog is available in [CHANGELOG.md](CHANGELOG.md)\n\nTo update the changelog execute the following commands:\n\n```shell\nnvm use\nstandard-changelog\n```\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n\u003e All media materials used in the project fall under the copyright law\n","funding_links":[],"categories":["TypeScript","api"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCodeverDotDev%2Fcodever","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCodeverDotDev%2Fcodever","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCodeverDotDev%2Fcodever/lists"}