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 2d 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 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity56

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

1524d 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

[stripe/stripe-php

Stripe PHP Library

4.0k143.3M480](/packages/stripe-stripe-php)[twilio/sdk

A PHP wrapper for Twilio's API

1.6k92.9M272](/packages/twilio-sdk)[knplabs/github-api

GitHub API v3 client

2.2k15.8M187](/packages/knplabs-github-api)[facebook/php-business-sdk

PHP SDK for Facebook Business

90121.9M34](/packages/facebook-php-business-sdk)[meilisearch/meilisearch-php

PHP wrapper for the Meilisearch API

73813.7M114](/packages/meilisearch-meilisearch-php)[google/gax

Google API Core for PHP

263103.1M454](/packages/google-gax)

PHPackages © 2026

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