Package: webezyio
webezy.io (webezyio)webezyiois free and open-source project that aims to be a complete framework for developing micro-services projects.
The underlying communication protocol isHTTP2and for serialization and deserialization isprotobuf.
It utulize those communication protocol, message serialization / deserialization and code generator withgRPCopen-source project by google.Webezy.io has been created to give devlopers quick and structerd way for building gRPC services without pain while keeping thins open for further modifications.In result we are trying not to restrict the implemantations themselves but instead applying small restrictions on the project structure for well defined, re-usable structure that can be used by many languages and scenarios.The current supported languages are:LanguageServerClientStatusPythonVVStableTypescriptVVStableGoVVExperimentalWebpack-js--VExperimentalC#.NETXXPlannedGet full explanation and many more details on usage atwebezy.io.Thewebezyio CLIis a wrapper for WebezyArchitect class which does mainly the processing and execution of creating webezy.jso file.You can interact with the WebezyArchitect class with two main ways:CLI- The most common and easy to get you started creating gRPC services.Python API- Will be useful for more compehransive project creation flows and for developers who wants to understand how webezyio works.InstallationInstall from pippipinstallwebezyioDocsGo toWebezy.io Docsfor full explanation.Useful Resources:Awesome gRPC - A curated list of useful resources for gRPCAPI Design Guide From Google - Matches well into gRPC specific design patternsFeatures:CLIWell structerd CLI wrapper to create, edit, run and debug a RPC call to gRPC servicesGenerated CodeAuto-Generated code classes for Services implemantations and client stubsPythonTypescriptGoPluginsHighly pluggable API allow us to create and publish "Extensions" without breaking the code:Readme generatorLanguages Builder - (Python, Typescript & Go)Proto BuilderDockerize (In-development)Migrate gRPC services to Webezy.io projectTemplatingAs a Webezy.io project grows you can template it and share it to your peers for remote work (Branching) or as a 'Built-in' template to be used by other co-workersUnified ExtensionsWe have been working on unification process ofProtobufExtensions (Calles Custom Options) which will allow us in the future to release more pluggable features directly into your Webezy.io workspaceTutorials:Quick StartQuick StartNotePlease refer toCLI docsfor any question you got, also make sute to use the CLI helpwebezy --helpshould give you an additional information on every command you may possibly runTo create anew webezy.ioproject run the following command:webezynew<YourProject>Noteyou can create a new project based on template to get started quickly
Sample Python server (Clients are available both in TS + PY)wzn<YourProject>--template@webezyio/SamplePyOr the same resources just for Typescript serverwzn<YourProject>--template@webezyio/SampleTsFor more information seeProject TemplatingThen you will need to navigate into your projectNoteif you didnt specified the--pathargument when creating new project by default it will create a project under your current directorycd<YourProject>After you are under the new project directory you can go ahead andcreate webezy.io resourceswith those simple commands:NotePlease note that every sub-command ofgenerateandnewcan be shortend with the first letter e.g :wz g pis equivalent towz generate package# Generate new package to hold messageswebezygeneratepackage# Generate new service to hold RPC's (Methods)webezygenerateservice# Generate message under specified packagewebezygeneratemessage# Generate RPC (Method) under specified service# Same as running `wz g r`webezygeneraterpcNoteMake sure before creating new RPC on service that you have imported at least 1 package to be used by the service. for more information visit ->Package DocsAfter you had generated your resources for the project and modified the code (See the docs for more explanation on how to develop your project and make changesSample Project).You can nowbuild your projectandrun your serverwith those simple commands:# First build your projectwebezybuild# Then run the serverwebezyrunNoteyou can auto-build your resources if applicable straight when you are generating them with adding--buildargument towebezy generatecomands.You can use now your client code that has been autogenerated in your specified language(s) on creating the project.Pro-Tip:you can always make your commands even shorter with replacingwebezywithwzCLI UsageGet to know the commands supported by Webezy.io CLI and start to use their powers !All listed commands can be found here:Webezy.io CLI APIThe webezyio CLI module is essantially a wrapper to theArchitect APIwhich is just to construct a well defined resource metadata which later on can be used by theBuilder APIto build all resources files (Code files & .proto files)NoteEach webezy.io CLI command can be called with the abbreviatedwzNoteThe CLI has verbose logging system that can be changed accoriding to your needs. we do recommand to keep it to ERROR as default to not overload you with multiple lines for each command - to change the default behaviour run your commands withwz --loglevel DEBUG <sub-command>Advanced UsageThere are more advanced use cases for Webezy.io which will probably will require some time to get used to Webezy.io structure and concepts to really have a useful and meaningful interaction.We do recommend to go overWebezy.io Conceptsbefore trying some advanced usageSome of the features are listed below:Templating- Wrap your project and re-share them among team members or to your won base project templates into other future or existing Webezy.io projects.Custom Configurations- Learn how to define custom configurations for a project to make your life easier.Migration- You can now migrate your existing gRPC project to unified structure and resources of Webezy.io projects.Extending Protobuf Functionality- You can configure a custom extension for your resources.Batteries IncludedWebezy.io goal is to make development lifecycles quick and meaningfull while coding a distrubted-system using state of the art technologies.Some built-ins features are provided so you can jump-start your development right away:Webezy.io Official VSCode Extension- SeedocsDevelopmentWe are welcoming any code contribution and help to maintain and release new fetures as well documenting the library.See ourcontirbution pageCreated with love by Amit Shmulevitch. 2022 © webezy.io