apihawk / microcell
MicroCell is a toolkit for writing AppCell plugins.
Installs: 9
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Type:project
pkg:composer/apihawk/microcell
Requires
- php: ^7.2.5
- enqueue/amqp-lib: ^0.10.1
- enqueue/enqueue: ^0.10.1
- guzzlehttp/guzzle: ^6.5
- illuminate/log: ^7.0
- laminas/laminas-config: ^3.3
- laminas/laminas-json: ^3.1
- laravel-zero/framework: ^7.0
Requires (Dev)
- eaglewu/swoole-ide-helper: dev-master
- mockery/mockery: ^1.3.1
- phpunit/phpunit: ^8.5
- roave/security-advisories: dev-master
This package is auto-updated.
Last update: 2025-10-22 03:10:55 UTC
README
MicroCell is a toolkit for writing AppCell plugins.
AppCell is an orchestrative software that incorporates a plugin architecture. It allows one software to communicate with multiple other such without coupling, modifying the main software source, or hard-coding plugins. This way the integration of various softwares and the migration of services between such will become faster, more secure and more easily accomplished.
- Built on top of the Laravel components.
- Optional installation of Laravel Eloquent, Laravel Logging and many others.
- Supports interactive menus and desktop notifications on Linux, Windows & MacOS.
- Ships with a Scheduler and a Standalone Compiler.
- Integration with Collision - Beautiful error reporting
Documentation
For full documentation, visit apihawk.com/help.
Instalation
microcell is available on composer. To install it, type:
Via ApiHawk Installer
composer global require "apihawk/installer"
Make sure to place composer's system-wide vendor bin directory in your $PATH so the ApiHawk executable can be located by your system. This directory exists in different locations based on your operating system. On macOS and GNU/Linux distributions, it's $HOME/.composer/vendor/bin.
Once installed, the apihawk new-cell command will create a fresh MicroCell installation in the directory you specify. For instance, apihawk new-cell YourVendorName will create a directory named YourVendorNameCell containing a fresh MircoCell installation with all of MicroCell's dependencies already installed:
apihawk new-cell YourVendorName
Via Composer Create-Project
composer create-project --prefer-dist apihawk/microcell YourVendorName
After installing the skeleton, run "app renaming" command in order to have freshly buit skeleton with all required installation files.
./application app:rename
Renaming the application... What is your application name?: > ApiHawk What is your website? e.g. https://apihawk.com. The website should be reachable: > https://apihawk.com Generate folder structure. (./appcell): ✔ Fetch website metadata: ✔ Writing AppCell.json: ✔ Please select what functionalities, your service will have (defaults to renewable, suspendable). Multiple choice support. E.g. 0,1,2,3 [0] Renewable [1] Suspendable [2] Availability Check [3] SSO (single-sign-on) > 0,1,2,3 You have just selected: Renewable, Suspendable, Availability Check, SSO (single-sign-on) Generate plugins.json: ✔ Generate resources.json: ✔ Generate settings.json: ✔ Generate action files: loading... created successfully. created successfully. created successfully. created successfully. created successfully. created successfully. created successfully. created successfully. created successfully. created successfully. Generate action files: ✔
When the renaming is done, you will have new files in the directories: ./appcell and ./app/Actions
To start building your app, need to create .env file in the format:
AH_AMQP_HOST= AH_AMQP_PORT= AH_AMQP_USER= AH_AMQP_PASS= AH_AMQP_VHOST=/ AH_AMQP_HEARTBEAT=15 AH_ETCD_HOST= AH_ETCD_PORT= AH_ETCD_USER= AH_ETCD_PASS=
Contact ApiHawk for providing you access to the required services. ApiHawk Contact
Generated files:
appcell.json
{
    "name": "applicationCell",
    "description": "AppCell Application Cell - Software Development for Service Providers. Cloud Billing & Automation Solutions, Software development, Know-How, API Consulting",
    "license": "BSD-3-Clause",
    "minimum-stability": "dev",
    "type": "plugin",
    "support": {
        "email": "thehawks@apihawk.com"
    },
    "homepage": "https://apihawk.com",
    "prefer-stable": true,
    "config": [],
    "require": {
        "appcell": ">=1",
        "etcd": ">=3.0",
        "scope": [
            "customer_product",
            "catalog_product_field",
            "customer",
            "company",
            "email"
        ]
    }
}
plugins.json
{
    "plugin": {
        "application": {
            "implements": [
                "https://repository.appcell.io/core/interface/service.schema.json",
                "https://repository.appcell.io/core/interface/renewable.schema.json",
                "https://repository.appcell.io/core/interface/suspendable.schema.json",
                "https://repository.appcell.io/core/interface/availability.schema.json",
                "https://repository.appcell.io/core/interface/impersonate.schema.json"
            ],
            "actions": {
                "create": {
                    "resource": "default",
                    "action": "create",
                    "$payload": "https://repository.appcell.io/applicationcell/schema/default/create.payload.json",
                    "$result": "https://repository.appcell.io/applicationcell/schema/default/create.result.json"
                },
                "fetch": {
                    "resource": "default",
                    "action": "fetch",
                    "$payload": "https://repository.appcell.io/applicationcell/schema/default/fetch.payload.json",
                    "$result": "https://repository.appcell.io/applicationcell/schema/default/fetch.result.json"
                },
                "update": {
                    "resource": "default",
                    "action": "update",
                    "$payload": "https://repository.appcell.io/applicationcell/schema/default/update.payload.json",
                    "$result": "https://repository.appcell.io/applicationcell/schema/default/update.result.json"
                },
                "delete": {
                    "resource": "default",
                    "action": "delete",
                    "$payload": "https://repository.appcell.io/applicationcell/schema/default/delete.payload.json",
                    "$result": "https://repository.appcell.io/applicationcell/schema/default/delete.result.json"
                },
                "renew": {
                    "resource": "default",
                    "action": "renew",
                    "$payload": "https://repository.appcell.io/applicationcell/schema/default/renew.payload.json",
                    "$result": "https://repository.appcell.io/applicationcell/schema/default/renew.result.json"
                },
                "suspend": {
                    "resource": "default",
                    "action": "suspend",
                    "$payload": "https://repository.appcell.io/applicationcell/schema/default/suspend.payload.json",
                    "$result": "https://repository.appcell.io/applicationcell/schema/default/suspend.result.json"
                },
                "unsuspend": {
                    "resource": "default",
                    "action": "unsuspend",
                    "$payload": "https://repository.appcell.io/applicationcell/schema/default/unsuspend.payload.json",
                    "$result": "https://repository.appcell.io/applicationcell/schema/default/unsuspend.result.json"
                },
                "checkAvailability": {
                    "resource": "default",
                    "action": "checkAvailability",
                    "$payload": "https://repository.appcell.io/applicationcell/schema/default/checkAvailability.payload.json",
                    "$result": "https://repository.appcell.io/applicationcell/schema/default/checkAvailability.result.json"
                },
                "impersonate": {
                    "resource": "default",
                    "action": "impersonate",
                    "$payload": "https://repository.appcell.io/applicationcell/schema/default/impersonate.payload.json",
                    "$result": "https://repository.appcell.io/applicationcell/schema/default/impersonate.result.json"
                }
            }
        }
    }
}
resources.json
{
    "resources": {
        "default": {
            "identifier": "domain",
            "rest": [
                "create",
                "fetch",
                "fetchAll",
                "update",
                "delete"
            ],
            "actions": {
                "renew": [],
                "suspend": [],
                "unsuspend": [],
                "checkAvailability": [],
                "impersonate": []
            }
        }
    }
}
settings.json
{
    "fields": [
        {
            "name": "Account Plan",
            "field_key": "plan",
            "value": "basic"
        }
    ],
    "options": [
        {
            "name": "Domain",
            "key": "domain",
            "type": "text",
            "value_type": "text",
            "required": true,
            "provider": "user"
        }
    ]
}