If 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!
BlueLibs is a collection of open-source products which help you quickly prototype web applications and scale your app while respecting SOLID principles. This is our official website, this is our documentation page.
Features:
- 👉 Dependency Injection & Module Management
- 👉 Database-agnostic and fully featured Security System
- 👉 Server-agnostic GraphQL Integration with Apollo
- 👉 MongoDB & PostgreSQL Integrations
- 👉 Rapid Prototyping via Blueprint and X-Framework
- 👉 Code Generation Tooling
- 👉 GraphQL Live Data for Single Documents & Queries via X-Framework
Our rapid prototyping solution (Blueprint for X-Framework) is tightly coupled to GraphQL and MongoDB. BlueLibs as a whole isn't. and supports SQL.
# Install MongoDB & Node 14+
npm i -g @bluelibs/x
x # pick project and complete it there
cd project
npm run blueprint:generate
npm run start:api
npm run start:admin # Start after API has startedWe have designed a custom documentation experience with custom code snippets and challenges.
If you discover a security vulnerability within BlueLibs packages, please send an e-mail to Theodor Diaconu via theodor@bluelibs.com. All security vulnerabilities will be promptly addressed.
The BlueLibs ecosystem is open-sourced software licensed under the MIT License.
This monorepo is split like this:
- ./templates/* things that are re-usable, like a new package template and others
- ./scripts/* things we use for internal development
- ./packages/* where all packages lie
- ./assets/* things needed for GitHub README page
We 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.
If you want to try your new changes to an external application (outside this monorepo), the solution is to use bluelibs-package-replace binary:
# From Monorepo Root
chmod 755 /usr/local/bin/bluelibs-package-replace
sudo ln -s /usr/local/bin/bluelibs-package-replace `pwd`/scripts/bluelibs-package-replaceNow 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.
Each package uses jest and ts-jest for development testing:
npm run test:devTo run tests in C.I, we have the command npm run test which compiles the code and runs the final tests.
Names
- feature/{package}/{issueNumber}-short-summary (feature/mongo-bundle/143-solve-the-bug-with-blablbla)
- fix/{package}/{issueNumber}-short-summary
- fix/{package1}-{package2}/{issueNumber}-short-summary
Commits
-
fix({package}): {message} (#143)
-
Example: fix(mongo-bundle): Solved the issue with async (#143))
-
feat({package}): {message} (#143)
-
deps({package}): {version}
-
docs({package}): {message}
-
fix({package1}, {package2}): {message}
PRs
- Checkout from
main git checkout -b feature/{package}/{issueNumber}-short-summary- an initial empty commit: git commit -m "fix({ package }): do that (#143)" --allow-empty
- Create the PR prefixed with
[WIP] Title of the branch - Ensure that inside the branch there's a link to the issue
- Create for yourself a list of tasks for the issue (Implementation, Testing, Documentation) using GitHub Task's markdown
- Once the task is ready prefix it with
[R].