| Docs |API | CLI Guide | Architecture |
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.
- Protobuffctl offers an API that enables you to automate all Protobuf functions.
- Manage
message types
,fields
,services
,methods
, andenums
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
andservices
using the dashboard and D3.js. - The middleware ensures ACID compliance and prevents race conditions.
Install:
npm i protobuffctl
Docs: see docs
CLI Guide: see docs/guides
- 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 ✅
- 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 🚧
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├────────────► │
└─┬───┘ └──────┘ │ │
└─────────────────────────────────► │
└─────────────┘
👋 If you're thinking about giving Protobuffctl a little love, you're in the right place. Here's how you can get involved:
- 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.
- 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.