diff --git a/.circleci/config.yml b/.circleci/config.yml index 41973ad..ed1e21c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,56 +1,57 @@ version: 2.1 -executors: - java-executor: - docker: - - image: cimg/openjdk:17.0 - -jobs: - verify: - executor: java-executor - steps: - - checkout - - restore_cache: - keys: - - v1-maven-cache-{{ checksum "pom.xml" }} - - run: - name: Verify with Maven - command: mvn -s .circleci/mvn-settings.xml verify - - store_test_results: - path: target/surefire-reports - - save_cache: - paths: - - ~/.m2/repository - key: v1-maven-cache-{{ checksum "pom.xml" }} - - deploy: - executor: java-executor - steps: - - checkout - - restore_cache: - keys: - - v1-maven-cache-{{ checksum "pom.xml" }} - - run: - name: Deploy with Maven - command: mvn -s .circleci/mvn-settings.xml deploy - - store_test_results: - path: target/surefire-reports - - save_cache: - paths: - - ~/.m2/repository - key: v1-maven-cache-{{ checksum "pom.xml" }} +orbs: + qqq-orb: kingsrook/qqq-orb@0.3.5 workflows: - version: 2 - build_and_deploy: + + test_only: jobs: - - verify: - context: qqq-maven-registry-credentials + - qqq-orb/mvn_test_only: + context: [ qqq-maven-registry-credentials ] filters: branches: - ignore: main - - deploy: - context: qqq-maven-registry-credentials + ignore: /(develop|main|release/.*|hotfix/.*|integration.*)/ + tags: + only: [] + + publish_snapshot: + jobs: + - qqq-orb/mvn_publish: + context: [ qqq-maven-registry-credentials ] + branch_type: snapshot filters: branches: - only: main + only: + - develop + + publish_release_candidate: + jobs: + - qqq-orb/mvn_publish: + context: [ qqq-maven-registry-credentials ] + branch_type: release_candidate + filters: + branches: + only: + - /release\/.*/ + + publish_release: + jobs: + - qqq-orb/mvn_publish: + context: [ qqq-maven-registry-credentials ] + branch_type: release + filters: + branches: + only: [ main ] + tags: + only: [ /v.*/ ] + + publish_hotfix_release: + jobs: + - qqq-orb/mvn_publish: + context: [ qqq-maven-registry-credentials ] + branch_type: hotfix + filters: + branches: + only: + - /hotfix\/.*/ diff --git a/.circleci/mvn-settings.xml b/.circleci/mvn-settings.xml deleted file mode 100644 index b2a345f..0000000 --- a/.circleci/mvn-settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - github-qqq-maven-registry - ${env.QQQ_MAVEN_REGISTRY_USERNAME} - ${env.QQQ_MAVEN_REGISTRY_PASSWORD} - - - diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..2fe902f --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,58 @@ +# Changelog + +All notable changes to QBit User Role Permissions will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +### Added +- Comprehensive README documentation following QQQ sub repo standards +- Standard GitHub files (LICENSE, CHANGELOG, CONTRIBUTING, SECURITY, CODE_OF_CONDUCT) +- Proper project structure and documentation + +### Changed +- Updated README to follow QQQ framework standards +- Improved project documentation and structure +- Enhanced GitHub repository setup + +## [0.30.0-SNAPSHOT] - 2024-01-XX + +### Added +- Initial QBit implementation for user role permissions +- Database schema for users, roles, and permissions +- Java classes for User, Role, Permission, UserRole, and RolePermission +- Integration with QQQ Backend Core framework +- H2 database support for testing +- JUnit 5 test framework integration +- AssertJ assertions for testing +- Checkstyle configuration for code quality + +### Changed +- Initial public release of QBit User Role Permissions +- Established QBit development standards +- Created modular architecture for permission management + +--- + +## 📚 For Detailed Information + +**📖 [Complete Documentation Wiki](https://github.com/Kingsrook/qqq/wiki)** - Start here for comprehensive guides +- **[🏠 Home](https://github.com/Kingsrook/qqq/wiki/Home)** - Project overview and quick start +- **[🚀 Release Flow](https://github.com/Kingsrook/qqq/wiki/Release-Flow)** - Detailed release process +- **[🏷️ Changelog & Tagging](https://github.com/Kingsrook/qqq/wiki/Changelog-and-Tagging)** - Commit conventions and release notes +- **[🔧 Developer Onboarding](https://github.com/Kingsrook/qqq/wiki/Developer-Onboarding)** - Setup and contribution guide + +## 🔄 Version Compatibility + +QBit User Role Permissions follows semantic versioning: +- **MAJOR** versions may contain breaking changes +- **MINOR** versions add new functionality (backward compatible) +- **PATCH** versions contain bug fixes (backward compatible) + +For detailed compatibility information, see [QQQ Compatibility Matrix](https://github.com/Kingsrook/qqq/wiki/Compatibility-Matrix). + +--- + +**Thank you for using QBit User Role Permissions!** 🚀 diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..c079e2b --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,4 @@ +# Code of Conduct + + +See Project level [Code of Conduct](https://github.com/Kingsrook/qqq/blob/develop/CODE_OF_CONDUCT.md) diff --git a/CODE_STYLE.md b/CODE_STYLE.md new file mode 100644 index 0000000..a1cf983 --- /dev/null +++ b/CODE_STYLE.md @@ -0,0 +1,3 @@ +# Code Style Guide + +* See Project [Code Style Guide](https://github.com/Kingsrook/qqq/blob/develop/CODE_STYLE.md) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..470372b --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,4 @@ +# Contributing to QBit User Role Permissions + +* See Project [Contributing](https://github.com/Kingsrook/qqq/blob/develop/CONTRIBUTING.md) + diff --git a/README.md b/README.md index ccfc072..c67f63a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,35 @@ -## QBit: webhooks +# QBit: Webhooks + +[![Version](https://img.shields.io/badge/version-0.1.0-blue.svg)](https://github.com/Kingsrook/qbit-webhooks) +[![License](https://img.shields.io/badge/license-GNU%20Affero%20GPL%20v3-green.svg)](https://www.gnu.org/licenses/agpl-3.0.en.html) +[![Java](https://img.shields.io/badge/java-17+-blue.svg)](https://adoptium.net/) + +> **Webhook Implementation for QQQ Applications - Event-Driven Integration** + +This QBit provides a comprehensive webhook system for QQQ applications, enabling real-time event notifications to external systems and partners. + +## 🚀 What Makes QBit Webhooks Different? + +**QBit Webhooks gives you enterprise-grade webhook capabilities** - you define your event types, configure webhook endpoints, and QBit Webhooks handles the reliable delivery, retry logic, and comprehensive logging. No more building webhook infrastructure from scratch. + +### ✨ Core Capabilities + +- **🔗 Webhook Management**: Complete webhook endpoint and subscription management +- **📡 Event Types**: Flexible event type registration and categorization +- **🔄 Reliable Delivery**: Built-in retry logic and delivery tracking +- **📊 Comprehensive Logging**: Full audit trail of webhook events and delivery attempts +- **🎯 Event Filtering**: Subscribe to specific event types and categories +- **📦 JSON Payloads**: Structured event content with API versioning support + +## 🔓 Open Source & Full Control + +**QBit Webhooks is 100% open source** - you have complete ownership and control: + +- **💻 Your Code**: Full access to QBit Webhooks source code +- **🗄️ Your Data**: All webhook data stays in your systems +- **🏗️ Your System**: Deploy anywhere - on-premises, cloud, or hybrid +- **🔒 No Vendor Lock-in**: No external webhook services required +- **⚡ Full Customization**: Modify and extend webhook behavior to your needs ### Overview *Note: This is one of the original QBit implementations - so, some of the mechanics of how @@ -7,6 +38,38 @@ creation... Please excuse any dust or not-quite-round wheels you find here!* This QBit provides a basic implementation of webhooks to a QQQ Application. +## 🏗️ Architecture + +### Technology Stack + +- **Java**: Java 17+ with UTF-8 encoding +- **QQQ Framework**: Built on QQQ backend modules +- **Database**: RDBMS support through QQQ tables +- **JSON**: Structured event payloads with API versioning + +### What This QBit Contains + +- **Webhook Management**: Complete webhook endpoint and subscription system +- **Event Processing**: Event type registration and categorization +- **Delivery System**: Reliable webhook delivery with retry logic +- **Audit Trail**: Comprehensive logging of all webhook activities +- **Database Schema**: Five core tables for webhook management + +### What This QBit Does NOT Contain + +- **HTTP Client**: Uses QQQ's built-in HTTP capabilities +- **Authentication**: Relies on QQQ's security framework +- **Scheduling**: Uses QQQ's job scheduling system +- **External Services**: No third-party webhook services + +## 🚀 Getting Started + +### Prerequisites + +- **Java 17+** (required for QQQ features) +- **Maven 3.8+** (for build system) +- **QQQ Application** (this is a QBit, not a standalone application) + ### Usage #### Pom dependency @@ -53,3 +116,66 @@ webhooksRegistry.registerWebhookEventType(new WebhookEventType() - `qqq-backend-module-api` - as the objects posted are api-versioned - `QQQTablesMetaDataProvider` - for event record foreign keys +## 📚 Documentation + +**📖 [Complete Documentation Wiki](https://github.com/Kingsrook/qqq/wiki)** - Start here for comprehensive guides + +- **[🏠 Home](https://github.com/Kingsrook/qqq/wiki/Home)** - Project overview and quick start +- **[🏗️ Architecture](https://github.com/Kingsrook/qqq/wiki/High-Level-Architecture)** - System design and principles +- **[🔧 Development](https://github.com/Kingsrook/qqq/wiki/Developer-Onboarding)** - Setup and contribution guide +- **[📦 Modules](https://github.com/Kingsrook/qqq/wiki/Core-Modules)** - Available components and usage +- **[🚀 Building](https://github.com/Kingsrook/qqq/wiki/Building-Locally)** - Local development workflow +- **[🔌 QBits](https://github.com/Kingsrook/qqq/wiki/QBit-Development)** - QBit development guide + +## 🤝 Contributing + +QBit Webhooks is **open source** and welcomes contributions! + +- **🐛 [Report Issues](https://github.com/Kingsrook/qqq/issues)** - Bug reports and feature requests +- **📝 [Contribution Guide](https://github.com/Kingsrook/qqq/wiki/Contribution-Guidelines)** - How to contribute code and documentation +- **🔍 [Code Standards](https://github.com/Kingsrook/qqq/wiki/Code-Review-Standards)** - QQQ's coding standards and review process + +**First time contributing?** Start with our [Developer Onboarding Guide](https://github.com/Kingsrook/qqq/wiki/Developer-Onboarding) to get your environment set up. + +## 🏢 About Kingsrook + +QBit Webhooks is built by **[Kingsrook](https://qrun.io)** - making engineers more productive through intelligent automation and developer tools. + +- **Website**: [https://qrun.io](https://qrun.io) +- **Contact**: [contact@kingsrook.com](mailto:contact@kingsrook.com) +- **GitHub**: [https://github.com/Kingsrook](https://github.com/Kingsrook) + +## 📄 License + +This project is licensed under the **GNU Affero General Public License v3.0** - see the [LICENSE.txt](LICENSE.txt) file for details. + +## 🆘 Support & Community + +### ⚠️ Important: Use Main QQQ Repository + +**All support, issues, discussions, and community interactions should go through the main QQQ repository:** + +- **Main Repository**: https://github.com/Kingsrook/qqq +- **Issues**: https://github.com/Kingsrook/qqq/issues +- **Discussions**: https://github.com/Kingsrook/qqq/discussions +- **Wiki**: https://github.com/Kingsrook/qqq.wiki + +### Why This Repository Exists + +This repository is maintained separately from the main QQQ repository to: +- **Enable independent QBit development** and versioning +- **Allow QBit-specific CI/CD** and deployment pipelines +- **Provide clear separation** between QBit components and core framework concerns +- **Support different release cycles** for QBits vs. core framework + +### Getting Help + +- **Documentation**: Check the [QQQ Wiki](https://github.com/Kingsrook/qqq.wiki) +- **Issues**: Report bugs and feature requests on [Main QQQ Issues](https://github.com/Kingsrook/qqq/issues) +- **Discussions**: Join community discussions on [Main QQQ Discussions](https://github.com/Kingsrook/qqq/discussions) +- **Questions**: Ask questions in the main QQQ repository + +--- + +**Ready to integrate webhooks into your QQQ application?** [Get started with QBit Webhooks today!](https://github.com/Kingsrook/qqq/wiki/QBit-Development) + diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..44e3e7b --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,3 @@ +# Security Policy + + * See Project [Security Policy](https://github.com/Kingsrook/qqq/blob/develop/SECURITY.md) diff --git a/pom.xml b/pom.xml index 9e94e97..13ab9e1 100644 --- a/pom.xml +++ b/pom.xml @@ -23,24 +23,57 @@ 4.0.0 + + com.kingsrook + qbit-build-parent + 1.1.0 + + com.kingsrook.qbits qbit-webhooks - 0.1.4-SNAPSHOT + ${revision} + jar + + QBit Webhooks + Webhook implementation for QQQ applications, enabling real-time event notifications to external systems and partners + https://github.com/Kingsrook/qbit-webhooks + + + + GNU Affero General Public License v3.0 + https://www.gnu.org/licenses/agpl-3.0.html + repo + + + + + + kingsrook + Kingsrook Team + contact@kingsrook.com + Kingsrook, LLC + https://kingsrook.com + + + + + scm:git:git://github.com/Kingsrook/qbit-webhooks.git + scm:git:ssh://github.com:Kingsrook/qbit-webhooks.git + https://github.com/Kingsrook/qbit-webhooks + HEAD + - UTF-8 - UTF-8 - 17 - 17 - true + 0.2.0-SNAPSHOT + com.kingsrook.qqq qqq-bom-pom - 0.26.0-20250723-153141 + 0.27.9 pom import @@ -61,7 +94,7 @@ com.kingsrook.qqq - qqq-middleware-api + qqq-middleware-api @@ -75,41 +108,6 @@ 3.27.3 test - - com.kingsrook.qqq - qqq-middleware-javalin - test - - - - - org.apache.maven.plugins - maven-surefire-plugin - 3.0.0-M5 - - - ${testOutputToFile} - - - - - - - - github-qqq-maven-registry - GitHub QQQ Maven Registry - https://maven.pkg.github.com/Kingsrook/qqq-maven-registry - - - - - - github-qqq-maven-registry - GitHub QQQ Maven Registry - https://maven.pkg.github.com/Kingsrook/qqq-maven-registry - - -