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 started
We 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 [email protected]. 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-replace
Now 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:dev
To 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]
.