/protobuffctl

A CLI, API Server and Dashboard that enables you to automate and test all protobuf functions. Manage,create and delete protobuff Components. Sync and Roll back like with version controll.

Primary LanguageJavaScriptGNU General Public License v3.0GPL-3.0

| Docs |API | CLI Guide | Architecture |

Protobuffctl

npm version npm version npm version

Automate Your Protobuf Workflow

Protobuffctl is a comprehensive JavaScript API designed to streamline Protobuf development, offering features for creation, management, and automatic Protobuf generation, along with API server integration and a built-in dashboard for monitoring, testing and debugging.

Key Features

  • Protobuffctl offers an API that enables you to automate all Protobuf functions.
  • Manage message types, fields, services, methods, and enums by using CLI commands or the API server.
  • Automatically generates the corresponding Protobuf files when making changes to the protofiles.
  • Stores all components in the local Componentregistry.
  • Sync with other registries like Gitey or PostgreSQL.
  • Rollback by using a local safe-file or by using an external database, similar to version control.
  • Preview the Protofile code before actually building it and export any component to JSON.
  • Comes with a Dashboard for demo, debugging, and testing.
  • Monitoring for individual message types and services using the dashboard and D3.js.
  • The middleware ensures ACID compliance and prevents race conditions.

Getting Started

Install:

npm i protobuffctl

Docs: see docs
CLI Guide: see docs/guides


Update

  • serialize Protobuff Registry for local storage ✅
  • Exports to JSON ✅
  • automated Proto-gen: using my protoc-helper repo
  • creadted a CLI using commander ✅
  • changed codeBase and removed redundant recoursion using hashlookuptables and relations ✅
  • Fast Saving and Loading using Service Worker as Middleware that keeps the process alive ✅
  • added the Api Server
  • added a bun react Dashboard

Comming up

  • Set up File Watcher to monitor your proto files for any changes. 🚧
  • create VC CODE EXTENSION to manage the api in vs code 🚧
  • sync with external DB using kafka and cassandra 🚧
  • finish Dashboard and use a web compiler for demo 🚧
  • implement UUID hashing logic 🚧
  • add tests to Dashboard and a gRPC debug-Server 🚧

Flow Chart

Architecture:                                                                                                  
                  ┌───────────┐ ┌──────────────────────┐                 
                  │ Dashboard │ │  external Database   │                    
                  └─────▲─────┘ └──────────▲───────────┘                    
                        │                  │                                                     
                  ┌─────▼─────┐   ┌────────▼────────┐  ┌─────────────┐           
                  │ Api Server◄───►   Api Wrapper   ◄──►     CLI     │          
                  └───────────┘   └────────▲────────┘  └─────────────┘      
                                           │                                
                                  ┌────────▼─────────┐                                          
                                  │  Service-Worker  │                                          
                                  └────────▲─────────┘   
                                           │             ┌─────────────────┐ 
                                    ┌──────▼───────┐ ┌───► HashLookUpTable │           
                                    │              │ │   └─────────────────┘
                                    │ Protobuffctl ◄─┤                      
                                    │              │ │     ┌─────────────┐  
                                    └──────▲───────┘ └─────►  Relations  │                                           
ER-Model                                   │               └─────────────┘ 
                                     ┌─────▼───────┐         
                ┌──────────┐         │             │                        
    ┌───────────►ProtoFiles├─────────►             │                        
    │           └─▲──▲─────┘         │             │                                             
    │             │  │  ┌────────┐   │             │                        
    │             │  └──┤Services├───►             │                        
    │             │     └───▲────┘   │             │                                                            
    │             │     ┌───┴───┐    │             │                        
    │             │     │Methods├────►  Component  │                        
    │             │     └───▲───┘    │      -      │                                              
    │        ┌────┴┐        │        │  Registry   |                       
    │        │Types├────────┴────────►             │                        
    │        └▲───▲┘                 │             │                                               
    │   ┌─────┴┐  │                  │             │                        
    │   │Nested├──┼──────────────────►             │                        
    │   └──▲─▲─┘  │                  │             │                        
 ┌──┴──┐   │ │   ┌┴─────┐            │             │                        
 │Enums├───┘ └───┤Fields├────────────►             │                        
 └─┬───┘         └──────┘            │             │                                              
   └─────────────────────────────────►             │                        
                                     └─────────────┘                           

Contribution?

👋 If you're thinking about giving Protobuffctl a little love, you're in the right place. Here's how you can get involved:

Fork

  • Fork the Repo: Just head over to GitHub and click the "Fork" button.
  • Clone Your Fork: Once you've forked the repo, clone it to your computer.
  • Create a New Branch: Make a new branch for your cool new feature or bug fix. Something descriptive would be awesome!
  • Make Your Changes: Get coding! 🚀
  • Commit Your Changes: When you're happy with your changes, commit them with a message that tells us what you did
  • Push Your Changes: Push your changes back to your fork on GitHub.
  • Open a Pull Request: If you're ready to share your work with the world, go back to the original Protobuffctl repo and open a pull request from your fork.

Here are a few other options:

  • reach out via Discord: DM me via Discord #podhead181818.
  • Start a Discussion: If you've got something to say, but maybe not something you're ready to code yet, you can start a discussion under the "Discussions" tab with the "Contribution" label.
  • Open an Issue: If you've found a bug or have a feature request, you can open an issue on GitHub.

Thanks for thinking about contributing! 🙏 Whether you're coding, chatting, or just sharing ideas, every contribution helps make Protobuffctl better.