gmx/gmx-skeleton

GMX Framework — skeleton application template

Maintainers

Package info

github.com/gmxphp/skeleton

Homepage

Issues

Documentation

Type:project

pkg:composer/gmx/gmx-skeleton

Transparency log

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 1

v3.2.1 2026-07-27 21:00 UTC

This package is not auto-updated.

Last update: 2026-07-27 21:02:42 UTC


README

Application skeleton for the GMX Framework — a high-performance PHP framework for building scalable web applications with a modular monolith architecture.

This repository is the recommended starting point for a new GMX project. It ships:

  • the standard project layout (apps/, config/, public_html/, bin/, var/)
  • pre-configured composer.json with the GMX package registry
  • environment configs for dev / tests / stage / prod
  • web entrypoint (public_html/v1/index.php) and CLI tool (bin/gmx)
  • an example module to copy from

Framework features, architecture and philosophy are described in the GMX Framework overview — this README only covers bootstrapping a project from the skeleton.

Requirements

  • PHP 8.2+
  • Redis 6.0+
  • MySQL 8.0+ / MariaDB 10.5+
  • Composer 2.0+

Quick Start

1. Create a project

git clone https://github.com/gmxphp/skeleton.git my-project
cd my-project

# start with a fresh git history
rm -rf .git && git init

2. Install dependencies

composer install

The skeleton already includes the GMX composer registry. If you need to add it globally (e.g. for CI), run:

composer config repositories.gmx composer https://code.syn.st/api/packages/gmx/composer

3. Set your license key

Edit config/base.yml:

framework:
  apps:
    use_proxy_mode: true
  license:
    url: "http://license.gmx.run/v1/?key=LICENSE_KEY"

For licensing inquiries: sales@gm.st

4. Run

Use gmx-devstack — a ready-made Docker environment (PHP + Redis + MySQL) wired for this layout.

Project Structure

my-project/
├── 3rdparty/            # Global composer dependencies
├── apps/                # Your application modules live here
│   └── hello/           # Example module
│       ├── App.php      # Module entry point
│       ├── manifest.yml # Declarative module config (routes, DI, events, tasks)
│       └── lib/         # Module code (controller/, service/, repository/, ...)
├── bin/
│   └── gmx              # CLI: scheduler, workers, maintenance commands
├── config/              # Environment configuration
├── lib/                 # Project-wide shared libraries
├── public_html/
│   └── v1/index.php     # Web entrypoint (API v1)
├── tests/               # Test suites
└── var/                 # Runtime data, gitignored (cache/, logs/, tmp/)

Each module is self-contained: its routes, DI, events, background tasks and config are declared in its own manifest.yml. Modules never reference each other's code directly — they communicate via ports, events and queues.

Your First Module

mkdir -p apps/hello/lib/controller

apps/hello/manifest.yml:

name: hello
version: 1.0.0
description: My first module

bootstrap:
  helloController:
    class: lib\controller\HelloController

routes:
  - path: /hello
    method: GET
    handler: helloController.index
    id: hello

apps/hello/lib/controller/HelloController.php:

namespace hello\lib\controller;

class HelloController
{
    public function index(): array
    {
        return ['message' => 'Hello from my first GMX module!'];
    }
}
curl http://localhost/v1/hello

Where to go next: services and repositories, manifest.yml reference (events, tasks, middleware, DI) — see the Architecture Guide.

Testing

./vendor/bin/phpunit          # or: make comp test-unit

Module tests live next to the module (apps/<module>/tests/), project-wide suites — in tests/. See the Testing Guide.

Documentation

Security

For security issues, please email dev@gm.st instead of using the issue tracker.

License

GMX Framework is proprietary software owned by Grand Media LLC. The skeleton itself may be used as a template for projects built on a licensed copy of GMX. Licensing: sales@gm.st

© 2026 Grand Media LLC. All rights reserved.