{"id":13580114,"url":"https://github.com/bluelibs/bluelibs","last_synced_at":"2025-04-11T00:50:59.465Z","repository":{"id":37464106,"uuid":"385887158","full_name":"bluelibs/bluelibs","owner":"bluelibs","description":"A collection of open-source software solutions designed for the modern web and enterprise scale.","archived":false,"fork":false,"pushed_at":"2025-02-17T11:22:22.000Z","size":2745,"stargazers_count":771,"open_issues_count":123,"forks_count":24,"subscribers_count":37,"default_branch":"main","last_synced_at":"2025-04-03T20:35:31.552Z","etag":null,"topics":["framework","monorepo","typescript"],"latest_commit_sha":null,"homepage":"https://www.bluelibs.com","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/bluelibs.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-14T09:39:11.000Z","updated_at":"2025-01-30T07:26:33.000Z","dependencies_parsed_at":"2024-01-18T05:15:12.312Z","dependency_job_id":"1f61dffb-07c0-4264-902e-76ea401e60ec","html_url":"https://github.com/bluelibs/bluelibs","commit_stats":{"total_commits":735,"total_committers":12,"mean_commits":61.25,"dds":"0.21904761904761905","last_synced_commit":"8daa09df19d88793d8ed2eb8cc907e634e628552"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluelibs%2Fbluelibs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluelibs%2Fbluelibs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluelibs%2Fbluelibs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluelibs%2Fbluelibs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bluelibs","download_url":"https://codeload.github.com/bluelibs/bluelibs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247584111,"owners_count":20962075,"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":["framework","monorepo","typescript"],"created_at":"2024-08-01T15:01:47.589Z","updated_at":"2025-04-11T00:50:59.446Z","avatar_url":"https://github.com/bluelibs.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","typescript"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.bluelibs.com\" target=\"_blank\"\u003e\u003cimg src=\"https://www.bluelibs.com/img/github/bluelibs-logo.svg\" alt=\"BlueLibs Logo\" width=\"60%\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://circleci.com/gh/bluelibs/bluelibs/tree/main\"\u003e\u003cimg src=\"https://circleci.com/gh/bluelibs/bluelibs/tree/main.svg?style=svg\" alt=\"coverage\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/bluelibs/bluelibs/blob/main/LICENSE.md\"\u003e\u003cimg alt=\"GitHub license\" src=\"https://img.shields.io/github/license/bluelibs/bluelibs\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/bluelibs/bluelibs/stargazers\"\u003e\u003cimg alt=\"GitHub stars\" src=\"https://img.shields.io/github/stars/bluelibs/bluelibs?label=stars\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://discord.com/invite/GmNeRDqxvp\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/discord-online-brightgreen.svg\" alt=\"Discord\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Quick Note\n\nIf you want to keep track of our progress, or just show a little bit of support, click the `Watch` 👁‍🗨 button or give us a `Star` ⭐️. Thank you!\n\n## About BlueLibs\n\nBlueLibs is a collection of open-source products which help you quickly prototype web applications and scale your app while respecting [SOLID](https://en.wikipedia.org/wiki/SOLID) principles. This is [our official website](https://www.bluelibs.com), this is [our documentation page](https://www.bluelibs.com/docs/).\n\nFeatures:\n\n- 👉 [Dependency Injection \u0026 Module Management](https://www.bluelibs.com/docs/package-core)\n- 👉 Database-agnostic and fully featured [Security System](https://www.bluelibs.com/docs/package-security)\n- 👉 Server-agnostic [GraphQL Integration](https://www.bluelibs.com/docs/package-graphql) with [Apollo](https://www.bluelibs.com/docs/package-apollo)\n- 👉 [MongoDB](https://www.bluelibs.com/docs/package-mongo) \u0026 [PostgreSQL](https://www.bluelibs.com/docs/package-sql) Integrations\n- 👉 Rapid Prototyping via [Blueprint](https://www.bluelibs.com/products/blueprint/) and [X-Framework](https://www.bluelibs.com/products/x-framework/)\n- 👉 [Code Generation Tooling](https://www.bluelibs.com/docs/package-x-cli)\n- 👉 [GraphQL Live Data for Single Documents \u0026 Queries](https://www.bluelibs.com/docs/package-x-bundle#live-data) via X-Framework\n\n## Get Started\n\nOur rapid prototyping solution (Blueprint for X-Framework) is tightly coupled to GraphQL and MongoDB. BlueLibs as a whole isn't. and supports [SQL](https://www.bluelibs.com/docs/package-sql).\n\n```bash\n# Install MongoDB \u0026 Node 14+\nnpm i -g @bluelibs/x\nx # pick project and complete it there\ncd project\nnpm run blueprint:generate\nnpm run start:api\nnpm run start:admin # Start after API has started\n```\n\n## Learning BlueLibs\n\nWe have designed a custom [documentation](https://www.bluelibs.com/docs) experience with custom code snippets and challenges.\n\n- [Introduction to BlueLibs](https://www.youtube.com/watch?v=uXmiC3LogYw)\n- [BlueSessions (Live Coding with Theo)](https://www.youtube.com/watch?v=6ooKaI6KyA8\u0026list=PLZjXvs8vDYPzBAjFbTGSp49Nu3_Vj2IzN)\n\n## Security Vulnerabilities\n\nIf you discover a security vulnerability within BlueLibs packages, please send an e-mail to Theodor Diaconu via [theodor@bluelibs.com](mailto:theodor@bluelibs.com). All security vulnerabilities will be promptly addressed.\n\n## License\n\nThe BlueLibs ecosystem is open-sourced software licensed under the MIT License.\n\n## Repository Structure\n\nThis monorepo is split like this:\n\n- ./templates/\\* things that are re-usable, like a new package template and others\n- ./scripts/\\* things we use for internal development\n- ./packages/\\* where all packages lie\n- ./assets/\\* things needed for GitHub README page\n\nWe use lerna so when you are in development phase you could use `lerna link`, and for example if your package depends on another package, for example, `logger-bundle` depends on `core`, you go to `logger-bundle` you run `lerna link`, then go to `core` and run `npm run watch`, now logger-bundle will use the updated variant of `core`.\n\nIf you want to try your new changes to an external application (outside this monorepo), the solution is to use `bluelibs-package-replace` binary:\n\n```bash\n# From Monorepo Root\nchmod 755 /usr/local/bin/bluelibs-package-replace\nsudo ln -s /usr/local/bin/bluelibs-package-replace `pwd`/scripts/bluelibs-package-replace\n```\n\nNow go to your `microservice` and simply run `bluelibs-package-replace x-ui`. This will properly update your package version to the one you have in the monorepo. Make sure you're also watching changes in `x-ui` package via `npm run watch`.\n\nEach package uses jest and ts-jest for development testing:\n\n```bash\nnpm run test:dev\n```\n\nTo run tests in C.I, we have the command `npm run test` which compiles the code and runs the final tests.\n\n## Branching \u0026 Commits\n\n**Names**\n\n- feature/{package}/{issueNumber}-short-summary (feature/mongo-bundle/143-solve-the-bug-with-blablbla)\n- fix/{package}/{issueNumber}-short-summary\n- fix/{package1}-{package2}/{issueNumber}-short-summary\n\n**Commits**\n\n- fix({package}): {message} (#143)\n- Example: fix(mongo-bundle): Solved the issue with async (#143))\n- feat({package}): {message} (#143)\n- deps({package}): {version}\n- docs({package}): {message}\n\n- fix({package1}, {package2}): {message}\n\n**PRs**\n\n- Checkout from `main`\n- `git checkout -b feature/{package}/{issueNumber}-short-summary`\n- an initial empty commit: git commit -m \"fix({ package }): do that (#143)\" --allow-empty\n- Create the PR prefixed with `[WIP] Title of the branch`\n- Ensure that inside the branch there's a link to the issue\n- Create for yourself a list of tasks for the issue (Implementation, Testing, Documentation) using GitHub Task's markdown\n- Once the task is ready prefix it with `[R]`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbluelibs%2Fbluelibs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbluelibs%2Fbluelibs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbluelibs%2Fbluelibs/lists"}