PHPackages                             curfle/package-leuchtturm - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. curfle/package-leuchtturm

ActiveLibrary[API Development](/categories/api)

curfle/package-leuchtturm
=========================

Package that supports the creation of a GraphQL api within a curfle project

v0.3.0(4y ago)0189PHPPHP &gt;=8.0

Since Aug 26Pushed 4y agoCompare

[ Source](https://github.com/curfle/package-leuchtturm)[ Packagist](https://packagist.org/packages/curfle/package-leuchtturm)[ RSS](/packages/curfle-package-leuchtturm/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (10)Dependencies (3)Versions (29)Used By (0)

Leuchtturm
==========

[](#leuchtturm)

Leuchtturm is a package to help you easily build CRUDA-Operations (`create`, `read`, `update`, `delete` and `all`) based GraphQL-apis with `joonlabs\php-graphql` within `Curfle`.

Installation
------------

[](#installation)

```
composer require curfle/package-leuchtturm
```

Example
-------

[](#example)

```
use GraphQL\Servers\Server;
use GraphQL\Schemas\Schema;
use GraphQL\Types\GraphQLString;
use GraphQL\Types\GraphQLObjectType;
use GraphQL\Fields\GraphQLTypeField;

// build the query type
$manager = new \Leuchtturm\LeuchtturmManager();
$manager->setVocab(new \Leuchtturm\Vocab\German());

// TODO: should never use create again (only create, read, update, delete)

$QueryType = new GraphQLObjectType("Query", "Root Query", function () use($manager){
    return [
        $manager->R(\Examples\Models\Job::class)->build(),
        $manager->R(\Examples\Models\Login::class)->build(),
        $manager->R(\Examples\Models\Benutzer::class)->onlyOwner()->build(), // only the owner may read this field
        $manager->R(\Examples\Models\Rolle::class)->build(),
        $manager->A(\Examples\Models\Job::class)->build(),
        $manager->A(\Examples\Models\Login::class)->build(),
        $manager->A(\Examples\Models\Benutzer::class)->build(),
        $manager->A(\Examples\Models\Rolle::class)->build(),
    ];
});

$MutationType = new GraphQLObjectType("Mutation", "Mutation Query", function () use($manager){
    return [
        // all fields are protected by the default guardian
        $manager->C(\Examples\Models\Job::class)->guardian()->build(),
        $manager->C(\Examples\Models\Login::class)->guardian()->build(),
        $manager->C(\Examples\Models\Benutzer::class)->guardian()->build(),
        $manager->C(\Examples\Models\Rolle::class)->guardian()->build(),
        $manager->U(\Examples\Models\Job::class)->guardian()->build(),
        $manager->U(\Examples\Models\Login::class)->guardian()->build(),
        $manager->U(\Examples\Models\Benutzer::class)->guardian()->build(),
        $manager->U(\Examples\Models\Rolle::class)->guardian()->build(),
        $manager->D(\Examples\Models\Job::class)->guardian()->build(),
        $manager->D(\Examples\Models\Login::class)->guardian()->build(),
        $manager->D(\Examples\Models\Benutzer::class)->guardian()->onlyOwner()->build(), // also the owner may delete entries via this field
        $manager->D(\Examples\Models\Rolle::class)->guardian()->build(),
    ];
});

// build the schema
$schema = new Schema($QueryType, $MutationType);

// start a server
$server = new Server($schema);
$server->listen();
```

###  Health Score

26

—

LowBetter than 41% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~7 days

Recently: every ~32 days

Total

28

Last Release

1575d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/52662462?v=4)[joonlabs](/maintainers/joonlabs)[@joonlabs](https://github.com/joonlabs)

---

Top Contributors

[![joonlabs](https://avatars.githubusercontent.com/u/52662462?v=4)](https://github.com/joonlabs "joonlabs (29 commits)")

---

Tags

curflegraphqlphp

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/curfle-package-leuchtturm/health.svg)

```
[![Health](https://phpackages.com/badges/curfle-package-leuchtturm/health.svg)](https://phpackages.com/packages/curfle-package-leuchtturm)
```

###  Alternatives

[exsyst/swagger

A php library to manipulate Swagger specifications

35916.4M7](/packages/exsyst-swagger)[hubspot/api-client

Hubspot API client

24016.2M20](/packages/hubspot-api-client)[pocketmine/bedrock-protocol

An implementation of the Minecraft: Bedrock Edition protocol in PHP

172445.0k12](/packages/pocketmine-bedrock-protocol)[botman/driver-telegram

Telegram driver for BotMan

93459.5k6](/packages/botman-driver-telegram)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
