- ×
A collection of open-source software solutions designed for the modern web and enterprise scale.
Filed under dataQuick Note
If you want to keep track of our progress, or just show a little bit of support, click the
Watch
👁🗨 button or give us aStar
⭐️. Thank you!About BlueLibs
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
Get Started
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
Learning BlueLibs
We have designed a custom documentation experience with custom code snippets and challenges.
Security Vulnerabilities
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.
License
The BlueLibs ecosystem is open-sourced software licensed under the MIT License.
Repository Structure
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 oncore
, you go tologger-bundle
you runlerna link
, then go tocore
and runnpm run watch
, now logger-bundle will use the updated variant ofcore
.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 runbluelibs-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 inx-ui
package vianpm 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.Branching & Commits
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]
.