Skip to content

Latest commit

 

History

History
122 lines (104 loc) · 9.22 KB

README.md

File metadata and controls

122 lines (104 loc) · 9.22 KB

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