JavaScripting

The definitive source of the best
JavaScript libraries, frameworks, and plugins.


  • ×

    A collection of open-source software solutions designed for the modern web and enterprise scale.
    Filed under 

    • 🔾39%Overall
    • 766
    • 6.4 days
    • 🕩23
    • 👥5

    BlueLibs Logo

    coverage GitHub license GitHub stars Discord

    Quick 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 a Star ⭐️. 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:

    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 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.

    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].
    Show All